On Sunday, 5 August 2018 at 05:22:44 UTC, Mike Franklin wrote:
On Sunday, 5 August 2018 at 04:47:42 UTC, tanner00 wrote:

Hi, I’m interested in working on this project and just wanted to touch base. Is there any word on who will be mentoring this project? I’m entering college this fall but I’ve been programming since a very young age and enjoy systems programming.

The project is mostly about creating high-performance, resource-efficient 2D software rasterizer, something like this (http://nothings.org/gamedev/rasterize/) or (https://medium.com/@raphlinus/inside-the-fastest-font-renderer-in-the-world-75ae5270c445) If that isn't enough work for the event you can build on it by creating path objects with clipping and offsetting (http://angusj.com/delphi/clipper.php), rasterizing TrueType or OpenType fonts, creating drawing primitives, and even potentially creating 2D widgets (buttons, text labels, etc.) I think it's up to you how much of it you want to take on.

I proposed the idea, but I don't think I'd be a very good mentor for the project because I've never created a 2D rasterizer myself. However, I'd be happy to help anyone working on the project in an unofficial capacity, and can probably articulate the intended use case for it.

Mike

I was 14 and a half when I implemented my first depth buffer based rasterizer, in 6502 assembly on a C64, for a hi-res mode 3D renderer.

The algorithm, despite being "naive", is actually still an efficient one even now.

I stored an array of x/depth ranges (one per raster line), and updated them while drawing the wireframe points of the 3 clipped edges, while updating the y range of the triangle.

Then I simply iterated on the triangle y range and drew the inner points (between minimum_x+1 and maximum_x-1), using the filling color and interpolating depth.

Clearly not realtime as my character-based wireframe renderer, I admit it.

But this more than fast enough to quickly render a hi-res 3d scene in memory in *filled* mode.

So this "dumb" algorithm may still be worth being investigated in your case, as this C64 implementation was meant to run on a rather similar hardware (very limited memory and CPU, only fixed point operations, etc).

Just add antialiasing on the wireframe edges and you're done...

Reply via email to