Interested in advertising on Ponybooru? Click here for information!
Learn how to advertise on ponybooru, free options are availble.

Ponybooru ain't free mate - help support us financially!

ETH: 0xC41132ad4627FBfBd0d1712A27B268a06278eE50 | BTC: bc1qeyw3e72pcylque89r2940hhfzrz339kxuvruun
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.

Tags
safe2228415 artist:lemondrop3 artist:oleanderthehorse52 derpibooru exclusive37486 derpibooru import1611159 twilight sparkle369504 twilight sparkle (alicorn)150657 alicorn423458 beaker256 c++21 chair10729 coffee mug1998 female1682654 happy birthday mlp:fim1308 laboratory807 lamp3963 microscope94 mlp fim's tenth anniversary589 monitor1044 mug6306 programming130 ray tracing3 raytrace4 record player234 solo1507007 statue3216
Source

Comments

Syntax quick reference: **bold** *italic* ||hide text|| `code` __underline__ ~~strike~~ ^sup^ %sub%

Detailed syntax guide