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. 1
    “Modern” C++ Lamentations
    8 people · 498 points · first shared 2018 · 249 comments on HN
  2. 2
    Vector math library codegen in Debug
    8 people · 32 points · first shared 2024 · 1 comments on HN
  3. 3
    Gaussian Splatting is pretty cool
    6 people · 2 points · first shared 2023 · discussion on HN
  4. 4
    Surface-Stable Fractal Dither on Playdate
    5 people · 148 points · first shared 2025 · 25 comments on HN
  5. 5
    More Hash Function Tests
    5 people · 9 points · first shared 2016 · discussion on HN
  6. 6
    Making Gaussian Splats more smaller
    5 people · 4 points · first shared 2023 · 1 comments on HN
  7. 7
    Making Gaussian Splats Smaller
    5 people · 4 points · first shared 2023 · 1 comments on HN
  8. 8
    Speeding up Blender .obj export
    4 people · 12 points · first shared 2022 · discussion on HN
  9. 9
    Time-trace: timeline/flame chart profiler for Clang
    4 people · 6 points · first shared 2019 · discussion on HN
  10. 10
    Font Rendering Is Getting Interesting
    4 people · 3 points · first shared 2017 · discussion on HN
  11. 11
    Swallowing the elephant into Blender
    3 people · 305 points · first shared 2022 · 47 comments on HN
  12. 12
    Curious lack of sprintf scaling
    3 people · 207 points · first shared 2022 · 126 comments on HN
  13. 13
    Entity Component Systems and Data Oriented Design [pdf]
    3 people · 86 points · first shared 2018 · 20 comments on HN
  14. 14
    Texture Compression in 2020 · Aras' website
    3 people · 1 points · first shared 2021 · discussion on HN
  15. 15
    I accidentally Blender VSE
    2 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!
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 ;)
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/
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
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/

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close