
Desertcart purchases this item on your behalf and handles shipping, customs, and support to Austria.
Brace yourself for a fun challenge: build a photorealistic 3D renderer from scratch! It's easier than you think. In just a couple of weeks, build a ray-tracer that renders beautiful scenes with shadows, reflections, brilliant refraction effects, and subjects composed of various graphics primitives: spheres, cubes, cylinders, triangles, and more. With each chapter, implement another piece of the puzzle and move the renderer that much further forward. Do all of this in whichever language and environment you prefer, and do it entirely test-first, so you know it's correct. Recharge yourself with this project's immense potential for personal exploration, experimentation, and discovery. The renderer is a ray tracer, which means it simulates the physics of light by tracing the path of light rays around your scene. Each exciting chapter presents a bite-sized piece of the puzzle, building on earlier chapters and setting the stage for later ones. Requirements are given in plain English, which you translate into tests and code. When the project is complete, look back and realize you've built an entire system test-first! There's no research necessary -- all the necessary formulas and algorithms are presented and illustrated right here. Dive into intriguing topics from fundamental concepts such as vectors and matrices; to the algorithms that simulate the intersection of light rays with spheres, planes, cubes, cylinders, and triangles; to geometric patterns such as checkers and rings. Lighting and shading effects, such as shadows and reflections, make your scenes come to life, and constructive solid geometry (CSG) enables you to combine your graphics primitives in simple ways to produce complex shapes. Play and experiment as you discover the fun of writing a ray tracer. Accept the challenge today! What You Need: Aside from a computer, operating system, and programming environment, you'll need a way to display PPM image files. On Windows, programs like Photoshop will work, or free programs like IrfanView. On Mac, no special software is needed, as Preview can open PPM files. Review: Un bon bouquin qui aurait pu être excellent - Un bon livre à l'approche intéressante, aux explications claires, aux schémas très réussis... qui aurait pu être tout bonnement excellent s'il n'avait eu les deux défauts suivants : - L'approche "test-driven" aurait pu, et dû, être optionnelle. Libre à chacun de vouloir implémenter tous les tests, seulement certains, ou encore n'en implémenter aucun. Si vous décidez de ne pas suivre cette approche, vous aurez à faire de la gymnastique pour vous adapter et suivre le bouquin tel quel malgré tout. Ces tests, détaillés au caractère près, prennent de la place pour quelque chose qui aurait été pourtant capital, cf point suivant. - L'implémentation des calculs mathématiques devrait être plus mise en avant. Si l'implémentation concrète va dépendre du langage utilisé et des méthodes de design propres à chacun, rien n'aurait empêché d'utiliser du pseudo-code ou encore des exemples dans un ou plusieurs langages. Après tout, les tests ne sont-ils pas présentés dans un langage précis choisi par l'auteur ? Certaines opérations mathématiques sont décrites avec des mots, là où un exemple en pseudo-code aurait été bien plus parlant. Je reste satisfait de cet achat et de cette lecture pour l'instant, mais de mon expérience suivre les étapes dans l'ordre est plus fastidieux que si le bouquin avait été structuré sous la forme explications/schémas, puis implémentation, puis propositions de tests. Review: Challenging but so rewarding - Highly recommended, this is most educational book I have read in the last... 5-10 years? A typical chapter will include some descriptions of a ray tracer concept, pseudo code illustrating core parts of the algorithm, a minimal test case example, and then a bunch of test cases assigned for you to finish. These test cases you have to write and then implement are where you prove you really understand what's going on with each ray tracer concept. I suggest you stick with it no matter how long it takes and don't skip ahead, this experience was invaluable. I learned a lot about ray tracing while going through this and came out with a really cool library I can use to render graphics in lots of different ways. It took me at least a year, some parts were very challenging beyond the ray tracing (like how to manage and refactor this growing codebase one chapter at a time), but in the end it all worked out nicely :) This book sets the bar very high for other Pragmatic Bookshelf titles to live up to. I was stuck at least twice and browsing through the forums for this book gave invaluable clues, I recommend to check it out. There are also interesting discussions there for ways to optimize the raytracing logic and implement cool new features. Another review claims that Cucumber test suite is required to use this book, it is certainly not. Examples for test cases are given as short pseudocode Cucumber files, which you can translate into other languages or test frameworks.
| Best Sellers Rank | #421,536 in Books ( See Top 100 in Books ) #66 in 3D Graphics & Design #1,360 in Software Design, Testing & Engineering #173,748 in Textbooks & Study Guides |
| Customer Reviews | 4.6 out of 5 stars 110 Reviews |
T**T
Un bon bouquin qui aurait pu être excellent
Un bon livre à l'approche intéressante, aux explications claires, aux schémas très réussis... qui aurait pu être tout bonnement excellent s'il n'avait eu les deux défauts suivants : - L'approche "test-driven" aurait pu, et dû, être optionnelle. Libre à chacun de vouloir implémenter tous les tests, seulement certains, ou encore n'en implémenter aucun. Si vous décidez de ne pas suivre cette approche, vous aurez à faire de la gymnastique pour vous adapter et suivre le bouquin tel quel malgré tout. Ces tests, détaillés au caractère près, prennent de la place pour quelque chose qui aurait été pourtant capital, cf point suivant. - L'implémentation des calculs mathématiques devrait être plus mise en avant. Si l'implémentation concrète va dépendre du langage utilisé et des méthodes de design propres à chacun, rien n'aurait empêché d'utiliser du pseudo-code ou encore des exemples dans un ou plusieurs langages. Après tout, les tests ne sont-ils pas présentés dans un langage précis choisi par l'auteur ? Certaines opérations mathématiques sont décrites avec des mots, là où un exemple en pseudo-code aurait été bien plus parlant. Je reste satisfait de cet achat et de cette lecture pour l'instant, mais de mon expérience suivre les étapes dans l'ordre est plus fastidieux que si le bouquin avait été structuré sous la forme explications/schémas, puis implémentation, puis propositions de tests.
G**R
Challenging but so rewarding
Highly recommended, this is most educational book I have read in the last... 5-10 years? A typical chapter will include some descriptions of a ray tracer concept, pseudo code illustrating core parts of the algorithm, a minimal test case example, and then a bunch of test cases assigned for you to finish. These test cases you have to write and then implement are where you prove you really understand what's going on with each ray tracer concept. I suggest you stick with it no matter how long it takes and don't skip ahead, this experience was invaluable. I learned a lot about ray tracing while going through this and came out with a really cool library I can use to render graphics in lots of different ways. It took me at least a year, some parts were very challenging beyond the ray tracing (like how to manage and refactor this growing codebase one chapter at a time), but in the end it all worked out nicely :) This book sets the bar very high for other Pragmatic Bookshelf titles to live up to. I was stuck at least twice and browsing through the forums for this book gave invaluable clues, I recommend to check it out. There are also interesting discussions there for ways to optimize the raytracing logic and implement cool new features. Another review claims that Cucumber test suite is required to use this book, it is certainly not. Examples for test cases are given as short pseudocode Cucumber files, which you can translate into other languages or test frameworks.
H**E
Ótimo livro
Se você gosta de programar e tem interesse em Ray Tracing, eu recomendo bastante esse livro. Ele não dá muito detalhe sobre a parte matemática do Ray Tracing, mas sim em como implementá-lo em um linguagem de programação qualquer.
C**D
Bom livro
Bom Livro para quem gosta de um desafio divertido e para quem gosta de programar c
R**S
The most fun tech book I've ever read
I bought this book on the 31st May and it sat on my desk for a few weeks whilst wrapping up other work. On the 2nd July I made my first first commit and I've spent almost all my free time up until the start of August working through it. I originally intended to blog a sort of mini-series as I progressed, but that went out of the window after the first commit - I was utterly enthralled by the challenge and didn't stop for such mundane tasks as writing blog posts! Even tearing away enough free time to write this review has been challenging, although I mostly wrote it whilst waiting for scenes to render and animations build. I am very glad I bought this book - I have never read anything quite like it. The way it was presented means I was never truly floundering, and it quietly taught me without me realising. I've always had trouble reading linear algebra but I've noticed that I'm now finding it easier to read some formulae. I've still got a way to go with that sort of stuff, but I'm definitely improving. I did have some problems - several times I didn't notice that the result of a square root was supposed to be negated and wondering why my tests were failing. On occasion I simply didn't read instructions properly and implemented something almost, but not quite, right. And of course, I spent a lot of time trying to make SpecFlow fit how I have traditionally tested. But it was pretty much all user error... I didn't spot any mistakes in the book or run into insurmountable issues. I do wish there were a few more reference YAML files though, that would mean I could compare images I generate with those in the book to make sure I really had things working correctly, not to mentioning actually defining correct camera and lighting properties is more challenging that you might think. In short, I found this book fun. Really, really fun. It reminded me why I became a programmer in the first place. It also had the unexpected side effect of making me realise that I've been burning out for a while now doing the same old same old. I didn't expect a technical book to make me think about life choices! I also can't stress enough how awesome the test driven format of the book is. It was quite something to implement a few tests, and just like that you have another amazing piece of rendering functionality. Even though I've reached the end of book, this isn't the end of the story. At the time of writing this review, Jamis has also published 3 bonus chapters on the forums, one for creating bounding boxes, another for soft shadows and the third for texture mapping. I really can't wait to get that last one implemented! Some of the (low poly!) OBJ files I've tested also reference external materials and supporting these should be straightforward enough.
Trustpilot
3 weeks ago
1 week ago