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 MLP and the community surrounding it were very different compared to what they are today. Over the past decade though MLP 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 CPU. Some notable features it includes are: a custom PBR material model (supporting opaque/translucent dielectrics and conductors), basic SAH BVH construction and ray acceleration, BSDF importance sampling (using VNDF sampling for GGX), 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 ACES tonemapping.

The image itself was rendered at 3840x2160 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 ASCII 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.
safe2495097 artist:lemondrop3 artist:oleanderthehorse52 derpibooru exclusive45467 imported from derpibooru3668642 twilight sparkle419432 alicorn350543 pony1681501 beaker277 c++23 chair13592 coffee mug2315 female1986527 happy birthday mlp:fim1678 high res105259 laboratory933 lamp4638 mare805806 microscope108 mlp fim's tenth anniversary673 monitor1261 mug7176 programming143 ray tracing4 raytrace5 record player272 solo1604027 statue3650 twilight sparkle (alicorn)166822

Source:

not provided yet

Comments

Syntax quick reference: *bold* _italic_ [spoiler]hide text[/spoiler] @code@ +underline+ -strike- ^sup^ ~sub~
0 comments posted