56 karma · joined January 21, 2022
<https://github.com/schaban>
sergey.chaban@gmail.com
Some benchmarking code is here: https://github.com/glebnovodran/roam_bench
If interested, you can find the code/demo here: https://github.com/schaban/crosscore_dev (the link to the online demo is there in the README)
Vulkan is a quagmire of very low-level concepts, the danger of getting stuck in them and give up without learning anything is just too high.
At the same time making something with OpenGL that is more interesting than a simple rotating cube is not that difficult and you will get a lot of mid-level understanding - how rendering pipeline implemented and organized, what kind of task it is. "Porting" this knowledge to Vk is straightforward.
But why?
There doesn't seems to be a lot to learn about applied linear algebra (in the sense discussed here) by implementing a rasterizer.
But there is plenty of LA above and below that (in the scene management, in the shaders).
That is not to say that one is intrinsically better than the other, but for a technically-minded person (== any programmer in this case), the way Houdini works will make much more sense.
Learning either of these tools is not an easy task, but I think that starting with Houdini will feel more natural in cases like yours (SE background, interest in interactive graphics).
You can email me (see my profile here) for some more Houdini-talk!
> exploring toon shading
Sounds excellent! And don't hesitate to publish your work.
Well, sounds like pretty interesting thing to do, so rewarding in itself maybe. Is it published on github or elsewhere?
Also, as someone doing graphics programming mostly as a hobby, I think a good thing to do is to learn the artistic side of things (to some extent), might give you some advantage.
Amazing experience, I even remember cross-referencing certain passages in Tajik edition to try to get some idea of original rhyming and rhythmic techniques mentioned by the translators (I don't know the language, but since it was written in Cyrillic I could get at least a general idea how it sounds).
For whatever reason I stopped right before the Iskandar (Alexander the G.) parts, have to get back to it someday.
Are you planning on displaying all/most of them every frame, or just to control that many of them, then draw those nearby/visible?
If it's the former (but how exactly?) then perhaps Vk is the way to go, if the latter, then it's hard to see how Vulkan vs OpenGL is all that relevant here.
That's very interesting indeed, but arent's these lines are way too blurry?
That's why I'm using Houdini and not the other two.
And even then, Houdini is not set in stone, there were some significant changes during the years, an example of something that's probably most relevant here - say I prefer newer Wrangle operators in SOP rather than the classical visual programming style, but many Houdini people have the exact opposite preference.
These will be used by default (at O2 without vectorization enabled) for single-precision floating point math on x86-64 (where stack-based FPU is deprecated).
Vector instructions you're referring to end with "ps", they're very unlikely to be emitted for typical fp operations.
It's generated by GCC with "-fprefetch-loop-arrays", not supported in clang I believe.
These are most certainly generated by GCC from C++ code (no intrinsics and such) - can even provide an evidence in the form of a codebase with appropriate build flags.
Their use is rather straightforward I think, but still.
But is this a failing of wasm or the system glue layer, that for something like sqlite/web has to go through js/browser/etc?
Yes, I understand the importance of real-life tests like this, but how one is expected to go about testing wasm performance as such other than using benchmarks that are mostly arithmetic/logic and not syscall-type code?
BTW, if there is a problem with the current WASM performance, it's probably SIMD.
Again, based solely on my own benchmarks, exclusively in the area I'm interested in (game-type workload, so, say, multiplying many small matrices, performing geometric tests), there is little to no speed-up from wasm-simd128 (where it is supported), whereas native code compiled from the same sources, by the same compiler, profiled on the same machine, seems to be running a bit faster when vectorized.
Depends on workload of course, but seems too pessimistic with the current state of WASM support. At least this is not what I'm seeing with the things I'm working on (graphics-related), when comparing to native builds.
See this test for example, native seems to be only 50% faster: https://old.reddit.com/r/WebAssembly/comments/vjxtv4/webasse...
I find it difficult to read, it's aesthetics mostly, not necessary an architectural thing as such, the choice of mnemonics, why "ubfx", what's "rsb" - have to lookup these things constantly when I need them, while 6502 or x86 I can just open and read after all those years.
But that's just a personal preference certainly - yeah, I was fine with the abovementioned LDIR on Z80, heh.
So, essentially, this data is highly portable, photoreal aesthetics is not really a goal. (Also see some notes in the paper, e.g. "Limitations of the Dataset".)
Fortunately all 6 crew members seems to be safe (4 of them are Russians IIRC).