Description:
For this rather special MLP anniversary I decided to redo a project I did for a previous anniversary where I wrote a custom renderer to make up for my lack of artistic talent (as seen here >>1560448), but this time using the new skills I have learned since then. In general 10 years ago I barely knew anything about programming, and similarly <span class="caps">MLP</span> and the community surrounding it were very different compared to what they are today. Over the past decade though <span class="caps">MLP</span> has always been a thing in my life alongside all my learning and development, so I think this project highlights the change that has happened over that period of time quite well. Hopefully there will be another 10 years of pony from this point on as well.
As for some more technical details, the implementation is a fairly standard unidirectional backwards path tracer written in C++17 which runs on the <span class="caps">CPU</span>. Some notable features it includes are: a custom <span class="caps">PBR</span> material model (supporting opaque/translucent dielectrics and conductors), basic <span class="caps">SAH</span> <span class="caps">BVH</span> construction and ray acceleration, <span class="caps">BSDF</span> importance sampling (using <span class="caps">VNDF</span> sampling for <span class="caps">GGX</span>), next event estimation, basic power/area weighted light sampling, arbitrary emissive geometry, russian roulette path termination, a thin lens camera model (for simple depth of field), multiple importance sampling, and <span class="caps">ACES</span> tonemapping.
The image itself was rendered at 3840×2160 with 10,000 samples per pixel on a Ryzen 9 3900X in about 12 hours with the help of my friend anthropy (I only have a 3800X). The scene presented within the renderer was made specifically for this project by OleanderTheHorse, most notably being authored to satisfy the renderer’s lack of texture support by using purely per-face materials and a more low-poly style. Note to render this scene in a reasonable amount of time a modified version of it was used that actually utilized multi-threading, otherwise such a noise-free render would’ve taken an eternity on a single thread.
Finally, the source code for this project was designed to be as minimal as reasonably doable even if that came at the expense of micro-performance optimizations, mainly for artistic purposes. The actual source will be publicly available soon, I just have not yet finished crunching it down to a small <span class="caps">ASCII</span> art program yet as it takes a lot of time to do by hand and I want to get this submitted before the deadline. Additionally running the code itself will be fairly impractical due to how long a single threaded version of it takes to execute, but the purpose is more just to be artistic with its presentation rather than practical.
not provided yet