Core S2 Software Solutions

3D Computer Graphics: Software Revealed now published!

Update: Source code now available.

After a few months of work, I’ve finally published my first book through Amazon and this blog! “3D Computer Graphics: Software Revealed” (159 pages) is now available for free & purchase! Essentially this book walks you through, step by step, on how modern real-time graphics are rendered, through a software rasterization system. You’ll start with learning about how to render basic geometric primitives, and build on that through each chapter until you have a fully working 3D renderer!

What’s notably interesting about this book is that it works through all programming lessons in HTML5 Javascript, using the new Canvas tag. This way readers are not forced to download and install unruly 3rd party libraries like OpenGL or DirectX, which are particularly nasty to configure projects with. Instead, all you have to do is open the Javascript source code with your favorite text editor and immediately start experimentation!

To get started, you can either get the digital version of the book for free here, or buy it on Amazon, or buy it directly through Paypal. The Amazon and Paypal versions are pre-formatted and slightly more updated, all for only $1.99 USD. Any purchase is essentially a donation to help me, in my spare time, continue developing new open-source projects or free articles for others to use.

I hope you enjoy the book, and most importantly, I hope you learn something new from it! Good luck, and have fun!


This entry was posted in News & Updates. Bookmark the permalink.

20 Responses to 3D Computer Graphics: Software Revealed now published!

  1. FrodevRanders says:


  2. Charles Hughes says:

    Id like to buy the kindle version. But it is currently unavailable??

  3. Fabio Cremonini says:

    Still not available on kindle :(

  4. Francisco Rojas says:

    Dude, you said for only $1.99 USD but in amazon is at $3.99 :S

    • jbridon says:

      Amazon has been pulling some not-so-nice price localization. This means that even though I’ve explicitly set the price to $1.99 USD, Amazon raises the price for other countries (even if they use the US dollar). I recommend just going through Paypal, since it doesn’t apply any sort of price increase. Thanks for the support!

  5. Samuel says:

    how I buy directly using paypal?
    do you have some link to perform the buy?

    • jbridon says:

      Yep! Just click the “Buy Now” PayPal icon / image in the bottom center of this post. Thanks for the support, and let me know if you have any issues with it :-)

  6. Samuel says:

    Jeremy, hi! me again!

    I have tried this button “Buy now” and only redirect to login on paypal site. When I login, nothing happens….

    there is no such action like ebay, that redirect to paypal and just inform your info and value of transfer for me just confirm?

    thanks for your attention.


  7. Samuel says:

    Hi Jeremy

    I just bought your book by Paypal. The button works!

    thanks for the support e congratulations for the book!

    see ya

  8. Ando says:

    Hello, sir! Hope you’re doing well today. :)

    I’m finally working through the book, but I’ve hit a snag with main.js. The latest Chrome build is spitting this back out at me:

    NOT_SUPPORTED_ERR: DOM Exception 9

    for line 77 (which is the
    var ImageData = BackContextHandle.getImageData(0, 0, CanvasWidth, CanvasHeight);
    line). Firefox gives me a similar error (“this operation is not supported” or something).

    I looked around, and I found somebody else who received this error while using .getImageData(), but his problem was that he was passing two arguments instead of four, which isn’t the issue here. I’m pretty new to JavaScript, but were the CanvasWidth and CanvasHeight variables ever actually set? I know that we declared them in the first few lines of main.js, but were values ever placed into them? Would that be contributing to this error?

    Thanks for this excellent book. I’ve already learned a lot, and I’m hoping that I can get this sorted out and learn more! :)

    • jbridon says:

      Hi Ando, thanks for the heads up!

      I haven’t seen this error before, and will look into it more. I’ve opened a bug report on GitHub on this topic, and will post any updates there associated with changes in the source-code.

      To answer your question: Javascript doesn’t have the (formal) concept or language-support of “includes” or “imports” found in other languages. A source-code file has access to all other source-code as long as they have the same HTML inclusion point (i.e. index.html includes all the inter-related Javascript files). Good question though, but you’ll never have to worry about this inclusion instruction anywhere outside of HTML.

  9. Marsi says:

    great comment abount the 3D-Computergrafik, i find so much information thx dude. greets Marsi

  10. steve says:

    I get the : ” Sorry, but it looks like your browser does not support the Canvas tag. ” message on all browsers I try. So far tried with ff30, ff36, latest chromium and opera. Is this tutorial out of date ? Has canvas tag been consigned to the dustbin of history already ?

  11. steve says:

    HTML5 video is working fine on the likes of youtube.

  12. steve says:

    Okay so whats happening is near the start of the tutorial you ask the reader to copy paste the block of html code and save it to ‘index.htm’. However it displays incorrectly in all browsers. Copy pasting that and trying to run the program just displays a half complete pile of html. Your “Download the “index.htm” source code here” link doesnt appear to work. The only way a user can get this right is to copy paste ‘index.htm’ from this site:
    This is really quite annoying for someone who doesnt know much about html 5 or js and could not easily notice their mistake. Maybe if you had time you could clear this up and alleviate the annoyance that I have had or future newcomers to the tutorial. On a brighter note I’ve already learned some fun and new code and the tutorial so far is great fun and clear to follow. So thank you.

  13. steve says:

    Okay all my earlier comments are really rubbish. I went through the tutorial once in javascript and found it alot smoother sailing than I had expected. Then I went through transposing all the code to Java which also went very well (but not without some difficulty) up to about Chapter 12 where you get into “pixel fill” and your customFillTriangle() method. No doubt pixel filling is a necessary evil but unfortunately for me it stopped my progressin this tutorial. The javascript method :
    Vertices.sort(function(a,b) { return a.y – b.y; });
    is hard to put into java for me because the Comparator interface is difficult to use and its not very clear what y is representing in the function..(is it just the y axis ?) Javascript seems to be much more easy going regarding they types for arrays and suchlike. For Java I had to write custom classes for “TripleCoordinates” representing cubeFaces, cubeVertexes and workingVertexes a “DoubleCoordinates” class for pointList as well as an object file parser for new .obj files. It has been a very rewarding and enjoyable experience so many thanks to you for writing it. I’ll now go and buy a couple of copies and hope (though its unlikely) that i’ll be able to somehow figure out how to do the rest of the chapters with java.

  14. Snoo says:

    Hello, interested in learning from scratch, and not making use of GL or DirectX libraries. Also using C#. Does the book address such theory, and in a way that someone could figure a way to do it in C#? Thanks!

Leave a Reply

Your email address will not be published. Required fields are marked *


Sites map