{"id":6298,"date":"2026-07-02T09:00:03","date_gmt":"2026-07-02T15:00:03","guid":{"rendered":"https:\/\/www.realtimerendering.com\/blog\/?p=6298"},"modified":"2026-07-02T09:26:17","modified_gmt":"2026-07-02T15:26:17","slug":"slopendium-on-computational-photography","status":"publish","type":"post","link":"https:\/\/www.realtimerendering.com\/blog\/slopendium-on-computational-photography\/","title":{"rendered":"Slopendium on Computational Photography"},"content":{"rendered":"\n<p>(Me, I think it should be &#8220;Sloppendium&#8221; so you don&#8217;t say &#8220;slope,&#8221; but so be it.)<\/p>\n\n\n\n<p><a href=\"https:\/\/people.csail.mit.edu\/fredo\/\">Fredo Durand<\/a> writes, &#8220;I wanted to see how far I could go in a month with the help of AI coding agents to write course notes \/ a web book for my computational photography class.\u00a0<\/p>\n\n\n\n<p>Here is what I have so far\u00a0<a href=\"https:\/\/comp-photo-book.pages.dev\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/comp-photo-book.pages.dev<\/a>&#8220;<\/p>\n\n\n\n<p>So, you&#8217;re saying, &#8220;why bother looking at <em>that<\/em>?&#8221; The main reason, for me, is: interactive figures! I missed the memo, but it turns out <a href=\"https:\/\/flourish.studio\/blog\/interactive-svg-template\/\">SVG figures now support interactivity<\/a>. &lt;&#8211; And that link is wimpy, mostly showing highlights when you mouse over or click something. It&#8217;s better than that&#8230;<br><br>Go to <a href=\"https:\/\/comp-photo-book.pages.dev\/03-basic-image-processing-and-isp-10-sampling-downsampling-and-aliasing#fig-aliasing\">the section on aliasing<\/a> and check out the first figure. Slide the slider &#8211; ooo, high frequencies turning into lower ones, in a nutshell. This figure, and all the others, were generated by AI, with Fredo&#8217;s guidance.<\/p>\n\n\n\n<p>The process of making an interactive illustration is imperfect. In this case, the original figure had a bug for some values on the slider, which Fredo then had to get the AI to correct. I&#8217;m sure there are plenty of other bugs throughout the book at this point. Fredo says it&#8217;s &#8220;very much in progress and I have more or less not read a word of it.&#8221; But, having an AI agent code up interactive SVG figures is way more efficient than learning a whole new language and dealing with all the fiddly bits.<\/p>\n\n\n\n<p>The book is indeed incomplete, many sections TBD. It has layout problems and oddities, like some equations having unnecessary scroll bars. But, it&#8217;s an experiment, WIP, and it&#8217;s notes for a class &#8211; an effort that, if done by hand, would have easily taken a few authors a year or more. Perhaps consider it an exercise: maybe reward students with a candy for each bug found? Well, that&#8217;s a bad idea, I admit: a bunch of students then are learning the wrong material before it&#8217;s corrected. That said, I&#8217;ve heard of teachers having students use AI tools to help find and correct errors purposely put into some document or code. For this sort of book project, the fact-checking is probably the most time-intensive part.<\/p>\n\n\n\n<p>To digress a bit, here&#8217;s a paragraph from <a href=\"https:\/\/www.wired.com\/story\/fact-checking-ai\/\">an article in Wired<\/a> about fact-checking that made me laugh: &#8220;Then there\u2019s the models\u2019 own assessments. When I asked ChatGPT how accurate the major LLMs are, it told me that most models had 90 to 96 percent accuracy on some professional-style tests. It then offered a link, confusingly, to a paper on a sleep medicine certification exam. On &#8216;general real-world questions,&#8217; it simply offered me the rate at which models like it have been shown to hallucinate: 1 to 2 percent, apparently, though when I tried to click through to that referenced source, it didn\u2019t exist.&#8221;<\/p>\n\n\n\n<p>Back to the coolest part of Fredo&#8217;s experiment &#8211; the figures. The aliasing page has a few &#8211; scroll down. Or <a href=\"https:\/\/comp-photo-book.pages.dev\/02-fundamentals-01-light-and-physics\">go here<\/a> and play with shading models (this figure could use something to normalize the curves, but in a way, that&#8217;s the lesson). Or <a href=\"https:\/\/comp-photo-book.pages.dev\/06-warping-and-morphing-01-warping\">warp a mesh<\/a>. Or <a href=\"https:\/\/comp-photo-book.pages.dev\/09-optics-lenses-and-aberration-correction-01-aberrations-and-optical-challenges#fig-aberration-explorer\" data-type=\"link\" data-id=\"https:\/\/comp-photo-book.pages.dev\/09-optics-lenses-and-aberration-correction-01-aberrations-and-optical-challenges#fig-aberration-explorer\">check out caustics and chromatic aberration<\/a>. Or look in other chapters &#8211; you&#8217;ll find them. Fredo notes, &#8220;It&#8217;s crazily easy to make demos. I was initially worried that figures were going to be a major issue but they turn out to be mostly easy and incredibly fun. I even have stable diffusion running\u00a0in the browser.&#8221;<\/p>\n\n\n\n<p>I know of only one other book related to computer graphics with interactive elements: <a href=\"https:\/\/immersivemath.com\/ila\/index.html\">Immersive Linear Algebra<\/a>. It seems like there should be more, but I can also imagine how much effort it is, or was, to make such figures (I know <a href=\"https:\/\/www.realtimerendering.com\/udacity\/?load=demo\/unit7-view-pipeline.js\">my MOOC demos<\/a> took me a good long while). Hopefully now with interactive SVG and AI agents, there will be.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2026\/07\/aliasing.png\"><img loading=\"lazy\" decoding=\"async\" width=\"663\" height=\"448\" src=\"https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2026\/07\/aliasing.png\" alt=\"\" class=\"wp-image-6299\" srcset=\"https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2026\/07\/aliasing.png 663w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2026\/07\/aliasing-300x203.png 300w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2026\/07\/aliasing-624x422.png 624w\" sizes=\"auto, (max-width: 663px) 100vw, 663px\" \/><\/a><\/figure>\n\n\n\n<p><em>Not <\/em>interactive in this blog, sadly. Go <a href=\"https:\/\/comp-photo-book.pages.dev\/03-basic-image-processing-and-isp-10-sampling-downsampling-and-aliasing#fig-aliasing\">here<\/a> and you can slide the slider.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>(Me, I think it should be &#8220;Sloppendium&#8221; so you don&#8217;t say &#8220;slope,&#8221; but so be it.) Fredo Durand writes, &#8220;I wanted to see how far I could go in a month with the help of AI coding agents to write course notes \/ a web book for my computational photography class.\u00a0 Here is what I [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6298","post","type-post","status-publish","format-standard","hentry","category-misc"],"_links":{"self":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/6298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/comments?post=6298"}],"version-history":[{"count":4,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/6298\/revisions"}],"predecessor-version":[{"id":6303,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/6298\/revisions\/6303"}],"wp:attachment":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/media?parent=6298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/categories?post=6298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/tags?post=6298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}