Another 3D software renderer that started from Casey's Handmade Hero project (3 years of daily work).
https://github.com/zoom-2x/software_renderer
I'm open to optimization suggestions if anyone has the time and patience to take a look at my code.
Thank you.
As someone who is just beginning a basic 3D software rendering project, this is inspiring. Those are some lovely renders on the deviant art page!
The main problem for people getting started with software rendering is to get out of the GPU mindset where textures are cheap and the pipeline is limited to old API features. The real task is to approximate reality with the least effort for the given hardware. Think about how shapes you see around you can be approximated using more than just polygons. One can use pre-generated depth maps from different camera angles, fuzzy voxels, meta shapes, height fields, spline contours for up-scaling...
Not sure if you have any of this after a quick look, but for performance you can:
To move development forward faster, create higher types and functions for all the repeated SSE intrinsics.
How I write deferred light for efficient processing in larger batches: https://github.com/Dawoodoz/DFPSR/blob/master/Source/SDK/SpriteEngine/lightAPI.cpp
How I get clean syntax for SSE/NEON/reference without sacrificing any performance: https://github.com/Dawoodoz/DFPSR/blob/master/Source/DFPSR/base/simd.h
How I do 3D vector math with SIMD: https://github.com/Dawoodoz/DFPSR/blob/master/Source/DFPSR/base/simd3D.h