The golden age of software rendering may be over, but we can still indulge in our hobbies and learn a thing or two along the way.
DIWide is a real-time software renderer that exists at the intersection of features, speed, and simplicity. It's designed to be fast enough for a game, and simple enough to serve as example code.
DIWide provides simple implementations of modern shading techniques, in contrast to existing software renderers which typically focus either on simpler graphical styles, or on compatibility with GPU-targetted graphics APIs like DirectX and OpenGL. By shrugging off features which are not strictly necessary for good-looking graphics - such as compiling shaders at runtime, texture borders, fancy color modes, etc. - DIWide trades some practicality for a great deal of simplicity.
I started this project as a way to have fun and practice writing optimized low-level code while learning about graphics programming and 3D math, but I'm making it public in hopes that it may be interesting or informative to somebody else. I'll be publishing articles and videos to share information and insights about optimization- and graphics-related topics that I come across while working on DIWide.
Current features:
Planned features: