As you may know, and if you're reading this chances are you do, there's
this post that's
been roaming around for 7 years and periodically resurfaces. It refers to a
code golfing challenge dating back in 1984, a few years before I was born.
Its rules asked to build a raytracer in C with certain features and
functions and shading models. Among those, Andrew Kensler's version, checking
in at 1337 bytes, stood out and became world-wide renowned (for good reasons,
if you ask me). This was its output.
I have recently (well, since forever) been working on a number of practice
tools for speedruns. I must have rewritten the Dark Souls III practice tool
from scratch no less than three or four times, and not a single time have I
been completely satisfied with the results, in terms of features, user experience
and reliability. Though, as I've also been working on practice tools for Sekiro,
I believe I have finally found a satisfying setup after much experimentation.
This is my first post in ages. What can I say! I've been too busy studying finance and working to devote much time to writing code for fun. I've found some form of balance as of late, though, and a new drive to discover things, and I've gotten back to the grind.
Yesterday I played for the first time Polytron's FEZ.
Graphics and design are amazing, but what truly struck me was the way the game
switched between the 2D and 3D "looks". It was truly inspiring, so I decided to
spend a little time understanding and recreating the world rotation engine.
No big secret, I'm a huge fan of procedural content generation. I'm also a big
fan of Johann Sebastian Bach and his Musikalisches Opfer, whose fascinating
story I came to know thanks to D.R. Hofstader's
"Gödel, Escher, Bach: an Eternal Golden Braid".
Lately I've been experimenting a lot with a number of CG and procedural content
generation algorithms, and began feeling the need for mathematical rigour over
the practical, "real life situation" style I've been used to by writing
way more boilerplate code than I was willing to write, and the usage of native
numeric constructs began getting in the way of performance.
Skeletal animation is a technique that allows for fast, efficient animation of 3D models. In this post I'm going to explain the concepts and my implementation for the GPU matrix palette skinning algorithm in WebGL. Skeletal animation is quite complex and I struggled to find a guide that explained clearly what was going on, or that didn't waste too much time around language-specifics or code engineering making it quite hard to connect the dots in a simple way, so I hope I can manage to keep it simple enough.
In this post I will show you the way I implemented a keyframe-based 3D real
time animation using WebGL. Familiarity with the WebGL / OpenGL rendering
pipeline, and with linear algebra is necessary. There don't seem to be
many well-made explainations online about real time 3D animation with
WebGL which aren't involving Three.js and COLLADA so I hope that this will
be useful for those who wish to program their own animations.
I recently bought a LeapMotion. It's a great little tool, although interacting with it has somewhat of a learning curve. The API on the other hand has quite a beautiful design, is very well documented and a couple of minutes of reading are enough to get started.
I started this blog because I recently stumbled across the beautiful world of graphics programming, and thought that maybe for once sharing my learning process could be useful to somebody, somewhere in the world.