Seven Semi-Graphical Things for November 2, 2021

I had some “well, they’re sorta graphics-related” links left from making yesterday’s blog post. Here you go:

  • MeshOptimizer – definitely graphical, a software system that encompasses a wide range of optimization techniques for real-time display of meshes. Listed today because I mentioned another resource by the same author (on Vulkan) yesterday – I didn’t want to overload that post with “all-things-zeux.”
  • Desmos Global Math Art Content results – kids use weird equations to make line art creations on a graphing calculator app. Click on one and open up the folders to see the crazy. Future ShaderToy programmers in training, I guess…
  • Reading the first chapter of Ray Tracing Gems II (free to download, and also now re-available in soft and hardcover through Apress, soon through Amazon I assume), I found I’ve been misusing “depth of field” for these many decades. That’s of course a teaser for you to check it out yourself. I like the author’s tone of exasperation. That said, “defocus blur” seems unlikely to fully catch on.
  • Electronic Arts has taken a patent pledge to not sue anyone reusing their accessibility-centered technology patents. Not a lot of patents covered, but a nice thing nonetheless.
  • This announcement reminded me of a 1993 article, Patent Nonsense, by John Walker, one of the founders of Autodesk. He talks about the idea of companies making cross-licensing pools of patents.
  • Which reminded me of another article that he wrote worth a read, “Creation/Evolution,” about how trying to get a design perfect at the start is a fool’s errand. Which reminds me of the book Adapt, by Tim Harford, which I just started and am enjoying… OK, I’ll stop the flow of consciousness here.
  • The Microsoft Teams virtual backgrounds page is a bit of a surprise, even after noting it’s under the “Educator Center” heading. My new favorite Teams background:
Cat Attack!

Seven Things for November 1, 2021

Seven graphics-related things gathered up over the past months that I thought worth passing on:

  • Nanite presentation from people at Unreal at SIGGRAPH 2021. Quite involved by the end, and it gets over my head without further reading on my part (e.g., “Tetrapuzzles”), but gives you a sense of how Unreal’s Nanite system works. I particularly liked how they go through alternatives for presenting worlds with massive amounts of detail, ruling out each in turn. Also, Slide 81 and thereabouts is pretty fascinating, that their scheme (visibility buffer for tiny polygons) is faster with “software” (compute shaders on the GPU) than “hardware” (traditional GPU) rasterization. (Updated: thanks, Olivier Groulx, for the correction! Me, I dislike saying “software vs. hardware,” as the slide does – both methods are controlled by software and run on hardware.)
  • The nanite presentation is just one of many from the SIGGRAPH 2021 Advances in Real-Time Rendering for Games course. And for much more that was at (virtual) SIGGRAPH, see Stephen Hill’s wonderful SIGGRAPH 2021 links page.
  • GPU Zen 2 is now just $2.99 for the Kindle version. See the table of contents (and some article teasers) here, code here, and a free article here, “Writing an Efficient Vulkan Renderer.”
  • Samsung announced ray tracing support for upcoming mobile devices.
  • Free models? Here’s another small site, Poly Haven. I’ve update this site’s Portal Page with it (item #18 in the list).
  • Finally, Doom can be played on a pregnancy test.
  • The last time “teapot” was mentioned in this blog was 2014. Until now, I hadn’t noticed the sometimes-yearly University of Utah Teapot Rendering Competition. Normally I like to end these quick posts with a picture – just click that link instead for a little treat of (Halloween, I guess) eye candy.

Back of the Business Card Ray Tracers

Basic ray tracing is a simple algorithm. As sometimes given as proof, there are two business card ray tracers I know of: Paul Heckbert’s and Andrew Kensler’s. You can see Andrew’s explanation here (as well as links to ports), the leet code here, and an involved revisit and optimization and CUDA-ization of this code by Fabien Sanglard here.

Andrew’s dates from somewhere during 2005-2009, when he was avoiding writing his thesis. Paul’s dates from 1987, including tricks he learned from Darwyn Peachey and Joe Cychosz. His links are here, the code’s here and unminimized here, and the whole thing is written up in Graphics Gems IV. Which I wish was free on the (legal) web at this point… But through the miracle of Google Books, you can find most of the article here and missing page 379 (just the code listing) here.

Yesterday I realized I likely had never seen the output of Paul’s ray tracer. I installed Ghostscript to look at his file, but it was pretty beat:

Yeah, definitely ray tracing, or something

So I compiled Paul’s minimized code, finding a few small syntax errors that VS 2019 didn’t like so much. Adding a PPM header to the image file dumped, it’s this:

32 x 32

So, better, I can see spheres. I upped the resolution – it took a whole 10 seconds to run on a single CPU:

1024 x 1024

Not stunning, but now I know!

And today I ran across a set of lecture slides from the University of Utah which shows both of these business-card ray tracers’ results, page 22 on. Oddly, the image shown there has different colors – maybe gamma correction or something?

Anyway, now you can say you’ve seen it, too. And here’s the back of my copy of Paul’s business card, in the flesh, as it were:

Me, I was thrilled that 34-year-old code basically still ran, with minimal messing about.

New Graphics Books, Fall 2021

Short version: see new book releases here.

Long version: All credit goes to Ibrahim Belabbaci for bringing these new books to our attention. Beyond Ray Tracing Gems II, he sent on five new titles released since June. One’s entirely free to download, and there are nice long excerpts of the rest on Google Books. You’ll see all the links on our page.

I was particularly happy to see that Lee Stemkoski coauthored the free one, Developing Graphics Frameworks with Python and OpenGL. Years ago he put up a marvelous website of three.js demos with clean source code, showing how to do each operation. It’s also nice to see that MIT Press is publishing more books on computer graphics. Anyway, go take a look at the updated page. Covers below.

Some Books

A few interesting books have come out recently. Full disclosure: I have an indirect connection to the first and third.

  • First one’s free to download: Ray Tracing Gems II. That link also notes where the Github code repo is, shows the Table of Contents, etc. You can also download individual chapters from Apress’s site. Oh, and here’s a funny review from PC Gamer.
  • Second one’s a reasonable introduction to the basic ideas behind 3D computer graphics: Computer Graphics from Scratch. This book has nothing to do with the computer language called Scratch (which No Starch also sells books about). There’s a free sample chapter on that page. Also, I noticed today that all No Starch Press books are 35% off until August 9th. I’m appreciating this publisher more and more, as they offer their books in a variety of unprotected e-book formats, including PDF.
  • Third one’s not about 3D graphics, but written by a graphics luminary: Deep Learning: A Visual Approach, by Andrew Glassner (who also wrote a foreword for Ray Tracing Gems II). This is an equation-light introduction to the field, instead using lots of figures to build up your understanding. There’s a free sample chapter and also a Github link. This repo has three more free chapters, about running scikit-learn and Keras. It also includes 870 figures from the book, all under the MIT License for reuse. Again from No Starch Press, so their discount applies, there’s a DRM-free PDF, etc.

Oh, and one more page from No Starch Press that made me laugh: their manga guides, such as this one

Check them out. As usual, they each have a free chapter available. From my brief sampling, they look fun but don’t appear dumbed down and are not shy about using proper math.

Free Intro to RT and ML & NN Courses

Two free webinar courses from SIGGRAPH 2021, run by Rajesh Sharma at Disney Animation, starting next week:

Introduction to Ray Tracing starts Tuesday, May 25th, running for seven sessions. It’s based on Pete Shirley’s Ray Tracing in One Weekend book (which is also free). Each class starts with a live conversation with a ray tracing luminary (or me). See here for the full description, syllabus, and YouTube links. You don’t need to register – just show up. But, when? Here’s a Google calendar for integrating into your own, and here’s a link for the ICS file for Outlook, etc. Course materials and prerequisites are here.

Machine Learning and Neural Networks starts Monday, May 24th, also seven sessions. Similar thing: see here for the description, syllabus, and YouTube links. Registration not required. Here’s the Google Calendar link and here’s the ICS link. Course materials and prerequisites (not many!) here.

Me, I hope to at least watch the first 10 minutes of every session to get a glimpse of what the experts are thinking about.

From Rajesh’s Linked-In posting:

Seven Things for May 13th, 2021

So much good stuff is going on:

  • The Graphics Codex is now free on the web. This thing’s both a good source of tutorials on all sorts of areas of 3D graphics, as well as a reference of handy code bits. It’s basically “stuff Morgan McGuire got interested in and decided to write up.” It’s best integrated source for learning about ray marching algorithms that I know. The book’s main site is here.
  • For ray marching, also see Inigo Quilez’s site (you know, the Shadertoy guy). This should be old news, but just in case… He writes on a bunch of topics and rarely publishes in journals or presents at conferences, so there’s a mess of useful bits on his site.
  • Speaking of Shadertoy: English Lane. Quite incredible (with maybe a few too many lanes, but that’s a niggle).
  • A Survey on Bounding Volume Hierarchies for Ray Tracing” is indeed a monster survey. Someone still needs to prove forming an optimal BVH is NP-hard. If you’re a professor, give it as a homework assignment “by accident” – someone will probably prove it and you’ll get to be on Snopes.
  • Running a virtual conference and want to know how to use OBS (Open Broadcaster Software)? Zdravko Velinov wrote a detailed article (two, actually) all about doing this for I3D 2020 and 2021.
  • Speaking of which, the I3D 2021 awards are here, with paper links here. Also, I3D 2022 is looking for more help, especially with publicity and website redesign – consider it! You can write them here.
  • I want this manga book, GPU Optimization: Getting Started, in English, now. I particularly appreciate the character with GPU cards for ears and a GPU chip as a third eye or whatever. Here’s a page after applying Google Translate:

Skribbl.io + computer graphics terms

One activity we did during Tuesday and Wednesday evenings after I3D sessions ended was to play skribbl.io (essentially, Pictionary) together. Quite fun! It’s maybe not ideal for an international audience, since it involves typing English words, but given that the winners were generally people from non-English-speaking countries, maybe that’s not so limiting. The good bits are that the game’s easy to learn and people can join or quit at any time. It also gets everyone talking and is free. Plus, it’s like 15 minutes or so for a full game, depending on the number of players.

Since I3D is about graphics and interaction, I made a custom list of graphics terms for people to draw. These can be pasted into the program when starting a match. Christoph Peters had this clever idea, but his phrase list on Tuesday was a bit ambitious: all the terms in the index of the PBR book. Turns out there’s a thirty-character limit… The next day I made a list from looking at a 3D graphics glossary and some other sources, culling out ones that seemed way too tough. Using this worked well for the one game we played with it (after a single game you’ll start to get repeats).

Here’s my list to paste in as custom words, most from last night and a few I added just now:

antialiasing, aliasing, alpha channel, ambient light, ambient occlusion, augmented reality, backface culling, baking, billboard, blending, bounding box, bounding volume, bump mapping, BRDF, cache, camera, clipping, collision detection, color bleeding, convolution, Cornell box, cube mapping, decal, deep learning, depth buffer, diffuse, fill rate, filter, fractal, global illumination, graphics processing unit, height field, interpolation, intersection, keyframe, level of detail, lighting, Manhattan distance, marching cubes, mipmap, multiprocessing, noise, particle, path tracing, penumbra, pipeline, point cloud, polygon mesh, post processing, refraction, shader, shadow, skinning, specular highlight, spline, sprite, Stanford bunny, stereo rendering, tangent, texture mapping, transform, transparency, umbra, Utah teapot, view frustum, virtual reality, voxel grid, wavelength, wireframe

Have fun! And good luck drawing “convolution,” that’s there mostly for “are you crazy?” value – you should edit the list as you wish.

A screenshot from last night’s game. My score’s low since I was aiming to give hints (and, yes, it should have been “multum” – didn’t help anyone anyway). If you host the game and provide the list, I recommend you take on this clue-giver role, too. But, type something each drawing, whatever the case. If you don’t make any guesses for a few turns you’ll get autokicked.

 

Seven Things for April 19, 2021

Seven things:

Seven Things for March 25, 2021

Seven things: