Aras Pranckevičius
aras-p.info · Personal blog · on HN since 2010
Aras Pranckevičius, a graphics programmer, writes about C++, SIMD, hashing, Gaussian splatting, texture compression, and performance work.
What HN saysHN commenters link his posts on Gaussian splat compression, slow SIMD code in debug builds, and OBJ parsing libraries.
79HN people shared it
42linked it in comments
109stories submitted
2.6Kstory points
3 months agolast shared
2010people per year2026
Most-shared posts
- 1“Modern” C++ Lamentations8 people · 498 points · first shared 2018 · 249 comments on HN
- 2Vector math library codegen in Debug8 people · 32 points · first shared 2024 · 1 comments on HN
- 3Gaussian Splatting is pretty cool6 people · 2 points · first shared 2023 · discussion on HN
- 4Surface-Stable Fractal Dither on Playdate5 people · 148 points · first shared 2025 · 25 comments on HN
- 5More Hash Function Tests5 people · 9 points · first shared 2016 · discussion on HN
- 6Making Gaussian Splats more smaller5 people · 4 points · first shared 2023 · 1 comments on HN
- 7Making Gaussian Splats Smaller5 people · 4 points · first shared 2023 · 1 comments on HN
- 8Speeding up Blender .obj export4 people · 12 points · first shared 2022 · discussion on HN
- 9Time-trace: timeline/flame chart profiler for Clang4 people · 6 points · first shared 2019 · discussion on HN
- 10Font Rendering Is Getting Interesting4 people · 3 points · first shared 2017 · discussion on HN
- 11Swallowing the elephant into Blender3 people · 305 points · first shared 2022 · 47 comments on HN
- 12Curious lack of sprintf scaling3 people · 207 points · first shared 2022 · 126 comments on HN
- 13Entity Component Systems and Data Oriented Design [pdf]3 people · 86 points · first shared 2018 · 20 comments on HN
- 14Texture Compression in 2020 · Aras' website3 people · 1 points · first shared 2021 · discussion on HN
- 15I accidentally Blender VSE2 people · 511 points · first shared 2024 · 94 comments on HN
What HN people wrote when they linked it
midnightclubbed · 2025-09-07
It’s not entirely trivial (if you care about texture quality) you’re choosing 2 endpoints in 3d space that can be linearly interpolated to values that best fit 16 points in 3d space.
I may have been a little off with saying seconds per texture but it’s definitely non trivial amounts of time. And ects (mobile) and BC7 are certainly still not something you want to compress to at game load-time.
Some comparisons of texture compression speeds for various formats (from 2020 but on a 12core i9): https://www.aras-p.info/blog/2020/12/08/Texture-Compression-in-2020/
klaussilveira · 2025-03-03
If anyone is looking for a very fast OBJ loader, this is great: https://github.com/guybrush77/rapidobj
Also: https://aras-p.info/blog/2022/05/14/comparing-obj-parse-libraries/
corysama · 2025-02-19
You would appreciate https://aras-p.info/blog/2024/09/14/Vector-math-library-codegen-in-Deb…
TLDR: SIMD intrinsics are great. But, their performance in debug builds is surprisingly bad.
slimbuck · 2023-12-06
It's definitely possible to compress/palletise the SH bands (see https://aras-p.info/blog/2023/09/27/Making-Gaussian-Splats-more-smalle… for one approach).
We just found that splats encode some view-dependent shininess anyway (for example the guitar body https://playcanvas.com/model-viewer?load=https://code.playcanvas.com/v… and so considered the extra data and rendering cost of SH not worth it for now.
It would be quite straightforward to add SH to the PLY file and we'll definitely consider it in future!
speps · 2023-10-14
Aras has also done some very interesting blog posts regarding this technique:
* https://aras-p.info/blog/2023/09/05/Gaussian-Splatting-is-pretty-cool/
* https://aras-p.info/blog/2023/09/13/Making-Gaussian-Splats-smaller/
* https://aras-p.info/blog/2023/09/27/Making-Gaussian-Splats-more-smalle…
Gsplat gets a mention:
Aside: the excellent gsplat.tech by Jakub Červený (@jakub_c5y) seems to also be using some sort of VQ/Clustering for the data. Seriously, check it out, it’s probably be nicest gaussian splatting thing right now w.r.t. usability – very intuitive camera controls, nicely presented file sizes, and works on WebGL2. Craftsmanship!
turol · 2023-09-13
fulafel · 2018-11-06
I'd also recommend this interesting blog series from Unity graphics engineer arasp, covering many languages and platforms and incremental perf improvements: https://aras-p.info/blog/2018/03/28/Daily-Pathtracer-Part-0-Intro/
flohofwoe · 2018-10-18
It's Unity's (the game engine) new Entity-Component-System, the blog post is an answer to this presentation:
http://aras-p.info/texts/files/2018Academy%20-%20ECS-DoD.pdf
Unity's traditional entity system is suffering from a number of "OOP-isms" which make it hard/impossible to optimize for performance.
The new ECS strictly follows a Data-Oriented-Design approach, where everything is built around laying out the data in memory in a CPU-cache friendly way (and a few other things that neatly 'fall into place', like spreading work across CPU cores, a specialized 'high-performance' C# dialect, and the ability to move work from the CPU to the GPU).
The big question is how the traditional Unity audience will react, since the ECS programming model is quite a bit different from the old way, and it's no longer as simple to build a game from a jenga-tower of adhoc-hacks ;)
kevingadd · 2018-03-21
Related and worth reading: http://aras-p.info/blog/2018/03/21/Random-Thoughts-on-Raytracing/
aras_p · 2016-08-10
> It'd be interesting to see how the 128-bit Murmur versions compare.
Added them (and some more hash functions) in a follow-up post: http://aras-p.info/blog/2016/08/09/More-Hash-Function-Tests/
krackers · 2026-01-18
https://aras-p.info/blog/2023/09/05/Gaussian-Splatting-is-pretty-cool/ and for a visual demo of the result https://antimatter15.com/splat/
discardedrefuse · 2024-03-11
> Blender video editor is ... slow
Might be time to think about trying Blender again. This was posted here on HN about a month ago. https://aras-p.info/blog/2024/02/06/I-accidentally-Blender-VSE/
MauranKilom · 2024-02-09
At least the image scaling does not appear to be in linear? Going by the notes in [0]:
Gimp and stb_image_resize results are subtly different from others, even for Bilinear. Looks like they do convert source sRGB image to linear, do filtering there, and convert back to sRGB. You can definitely see that as a problem with bright lines (e.g. collar highlight in einar*.png) being darker in the upscaled Blender versions.
[0]: https://aras-p.info/img/misc/upsample_filter_comp_2024/
vitaut · 2023-12-27
{fmt} is commonly used for performance critical code because it provides some of the fastest numeric formatting and I/O:
* https://vitaut.net/posts/2020/fast-int-to-string-revisited/ * https://github.com/fmtlib/fmt/pull/1882 * https://vitaut.net/posts/2020/optimal-file-buffer-size/
Here's just one example: https://aras-p.info/blog/2022/02/03/Speeding-up-Blender-.obj-export/
stjo · 2023-12-06
This blog goes a lot more in depth in different techniques for compressing them (although for the purpose of using less VRAM):
https://aras-p.info/blog/2023/09/13/Making-Gaussian-Splats-smaller/
https://aras-p.info/blog/2023/09/27/Making-Gaussian-Splats-more-smalle…
Including quantising spherical harmonics, grouping splats into chunks and compressing their position and rotation in groups, etc.
jacobgorm · 2023-10-17
There is a bit of explanation here https://aras-p.info/blog/2023/09/05/Gaussian-Splatting-is-pretty-cool/ (found via Google).
FinalDestiny · 2023-09-11
> Media Molecule “Dreams” has a splat-based renderer (I think the shipped version is not purely splat-based but a combination of several techniques).
From: https://aras-p.info/blog/2023/09/05/Gaussian-Splatting-is-pretty-cool/
Good eye
PaulHoule · 2023-05-12
People use all kinds of compression schemes for textures
https://aras-p.info/blog/2020/12/08/Texture-Compression-in-2020/
forrestthewoods · 2023-02-11
libc is an absolute dumpster fire.
He mentions the problems caused by the criminal use of globals in locales. That problem has lead to numerous blog posts that have hit the HN front page.
This one comes to mind: https://aras-p.info/blog/2022/02/25/Curious-lack-of-sprintf-scaling/
cyber_kinetist · 2022-10-30
It’s all fun and games until you actually use it in a non-trivial scale and you experience compilation times go through the roof. (Your Debug builds will also be really slow.) It’s just not a good feature to use in the current state of C++.
https://aras-p.info/blog/2018/12/28/Modern-C-Lamentations/
markdog12 · 2022-02-25
Anyone reading this will probably also be interested in his related post: https://aras-p.info/blog/2022/02/03/Speeding-up-Blender-.obj-export/
erwincoumans · 2022-01-18
Here is a quick video, where you can see all the frames when zoomed out, and detailed frame information when zoomed in https://www.youtube.com/watch?v=w2rz36aJUS4
This is just for a physics engine, with rendering. See also this page by Aras (formerly form Unity 3D) with his screen shots: https://aras-p.info/blog/2017/01/23/Chrome-Tracing-as-Profiler-Fronten…
SonOfLilit · 2021-07-13
It's an easy to use and general mathematical language for describing geometry. It lends itself easily to parametrization for things like procedural generation of infinite variations or for animation. And it is very "local" so requires O(1) memory to evaluate.
For a nonstandard use of the idea, see font rendering on the GPU with signed distance field textures:
https://aras-p.info/blog/2017/02/15/Font-Rendering-is-Getting-Interest…
bufferoverflow · 2020-05-23
xxHash64 has demonstrated 14 GB/s a while ago
https://aras-p.info/img/blog/2016-08/hash2-pc.png
And FarmHash64 with SSE4.2 did almost 18 GB/s:
https://aras-p.info/img/blog/2016-08/hash2-farmhashoptions.png
Full article: https://aras-p.info/blog/2016/08/09/More-Hash-Function-Tests/
throwaway34241 · 2020-03-11
> However, binary form is way more compact
That’s what I might expect too, so I was surprised to find out that SPIR-V is usually substantially larger than text based shaders. It also doesn’t seem to compress optimally using standard algorithms. [1]
[1] https://aras-p.info/blog/2016/09/13/Shader-Compression-Some-Data/
favorited · 2019-08-21
Performance in debug builds is a particular issue, since getting acceptable-for-gamedev machine code from modern C++ often requires optimized builds.
http://aras-p.info/blog/2018/12/28/Modern-C-Lamentations/
userbinator · 2019-03-23
I've read the criticism of that post ( http://aras-p.info/blog/2018/12/28/Modern-C-Lamentations/ , discussed previously at https://news.ycombinator.com/item?id=18777735 ) but not the original, and now that I did, I have that strange feeling of not knowing whether it was satire or not --- and am unfortunately leaning towards the latter.
I made another comment here on this item, that it feels like a lot of the recent developments in programming languages are more along the lines of showing off how much complexity you can add, rather than solving the real problem itself. It's a "do less with more" mindset, the complete opposite of what I believe in.
bepvte · 2019-02-24
If anyone else is wondering what SDF is, a bit of googling found me this blog post: https://aras-p.info/blog/2017/02/15/Font-Rendering-is-Getting-Interest…
It gives a pretty good summary and a lot of other vocab words you can google, and touches on the Pathfinder project
tokyodude · 2018-11-27
This is probably not introduction level but
http://aras-p.info/texts/files/2018Academy%20-%20GPU.pdf
I think that was posted on HN recently?
SimonPStevens · 2018-04-11
This isn't really to do with raytracer perf. It's about how Miguel de Icaza (The creator of Mono) improved Mono's float handling. The difference in raytracer perf on different .net runtimes is just what brought the poor float handling to his attention. Better mono float handling is a good outcome for lots of non raytracer scenarios.
If you read the linked blog about the ray tracer, the C# ports are just blog 3 in a series of 8 that does actually conclude with two posts on SIMD - https://aras-p.info/blog/2018/03/28/Daily-Pathtracer-Part-0-Intro/