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