Big Mess o’ Wires


A home-built CPU, and other messy electronics adventures

3D Graphics Thingy

3D Graphics Thingy is a custom graphics coprocessor, using 1990s-era technology, capable of generating real-time 3D graphics. Matched with an off-the-shelf CPU, it forms a custom single-board computer, optimized for the task of gaming graphics. It is currently in the very early planning stages.

8 Comments so far

  1. MooglyGuy June 4th, 2009 8:38 pm

    I read your blog entry about the possible functionality of the 3DGT, and I have to offer a suggestion for the blending unit.

    In general, fixed-function GPUs do not go so far as to compute a “weighted average”, at least not in so many words. The blending units for most fixed-function GPUs boil down to something relatively simple to implement in hardware, consisting of some muxes, an adder, a multiplication unit, and some optional clamping. They implement the following sort of equation:

    (Src * SrcFactor) + (Dest * DestFactor)

    Src is the pixel that was output by the pipeline, Dest is the pixel that currently resides in the framebuffer. SrcFactor and DestFactor are typically a 4-way mux allowing you to select: 0, 1, Factor, or (1 - Factor).

    Should be fairly straightforward to implement.

  2. Steve June 5th, 2009 6:07 am

    That’s true. I think I mentioned “weighted average” in the context of alpha blending, and was thinking of the case where SrcFactor=Factor and DestFactor=(1-Factor), which produces a weighted average of src and dest. But I suppose you could also choose SrcFactor=Factor and DestFactor=1, to get an additive alpha effect, and other combinations.

  3. James Newman June 10th, 2009 9:10 am

    I saw your post on fpga4fun, and was led here. I seem to be following in your footsteps, or alongside anyway. I just recently played around with making my own CPU out of 7400 or 4000 series logic chips. I got alot on paper, got a wirewrap board similar to yours for your bmow, but stalled on getting ahold of a reserve of ICs. I decided doing it in an fpga would allow me more felxability for future work. Started learning verilog a couple weeks ago. I’ve so far got a simple cpu going, and vga output. Currently I’m working on getting my ddr2 ram working. I’ve decided I want to write the memory controller from scratch, so mainly been studying timing diagrams for the last two weekends. I got the spartan 3a starter for the 12 bit color and the increased fpga space.

    Anyway, one of my projects aside from my own cpu is also a gpu. I however am going to start with 2d with a sort of programmable pipeline. So sort of starting on the opposite end as you, in that I want my gpu pipeline to be programmable from the start.

    Will be keeping an eye on your projects for here on out. Good work so far, and good luck! :)

  4. John July 22nd, 2009 9:37 pm

    Nice work (and nice site). Check out http://www.johnculp.net/tvc.html for my similar 3D graphics project.

  5. Steve July 22nd, 2009 10:26 pm

    Wow, very very nice! I’ll be contacting you for more details…

  6. ov3rcl0ck August 8th, 2009 12:38 pm

    Wow, nice work! You keep rolling out mind blowing projects. If you could provide some documentation I could program a small Linux driver for it(in time).

  7. Jason September 14th, 2009 8:21 am

    Great work, some very interesting projects you have on this site.

  8. NrDesign November 9th, 2009 7:05 pm

    Best luck on this!

Leave a reply. Comments may take a few minutes to appear.


Homebuilt CPUs WebRing

JavaScript by Qirien Dhaela

Join the ring?

David Brooks, designer of the Simplex-III homebrew computer, has founded the Homebuilt CPUs Web Ring. To join, drop Dave a line, mentioning your page's URL. It will then be added to the list. You'll need to copy this code fragment into your page.