Symmetry Autumn of Code

Ecstatic Coder ecstatic.coder at gmail.com
Sun Aug 5 08:40:06 UTC 2018


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...



More information about the Digitalmars-d-announce mailing list