{"id":5265,"date":"2019-12-23T17:27:41","date_gmt":"2019-12-23T23:27:41","guid":{"rendered":"http:\/\/www.realtimerendering.com\/blog\/?p=5265"},"modified":"2019-12-23T21:11:17","modified_gmt":"2019-12-24T03:11:17","slug":"about-that-glass-ball","status":"publish","type":"post","link":"https:\/\/www.realtimerendering.com\/blog\/about-that-glass-ball\/","title":{"rendered":"About that glass ball&#8230;"},"content":{"rendered":"<p>Here&#8217;s a classic image you&#8217;re probably familiar with, which is having its 40th anniversary:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5266\" src=\"http:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/7hislqalfpj21.png\" alt=\"\" width=\"600\" height=\"368\" srcset=\"https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/7hislqalfpj21.png 960w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/7hislqalfpj21-300x184.png 300w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/7hislqalfpj21-768x470.png 768w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/7hislqalfpj21-490x300.png 490w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>I recently joined <a href=\"https:\/\/www.reddit.com\/r\/raytracing\">Reddit&#8217;s Raytracing feed<\/a>, where I noticed it recently <a href=\"https:\/\/www.reddit.com\/r\/vintagecgi\/comments\/awhlc8\/reflecting_spheres_by_turner_whitted_1979\">here<\/a>, in <a href=\"https:\/\/www.reddit.com\/r\/vintagecgi\/\">Reddit&#8217;s Vintage CGI feed<\/a>. I&#8217;d been playing with a real-time demo of this scene in <a href=\"https:\/\/developer.nvidia.com\/designworks\/optix\/download\">OptiX 7,<\/a> as it&#8217;s a sample program, optixWhitted. Examining that demo, it pointed out something that never dawned on me: the glass ball is actually mostly hollow, not solid glass!<\/p>\n<div><\/div>\n<div>Here&#8217;s optixWhitted with an inner radius of 0.96 (vs. 1.0 for the outer radius) vs. a solid glass ball:<\/div>\n<div><\/div>\n<div><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5267\" src=\"http:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/optixWhittedShell.png\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/optixWhittedShell.png 768w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/optixWhittedShell-150x150.png 150w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/optixWhittedShell-300x300.png 300w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-5268\" src=\"http:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/optixWhittedSolid-300x300.png\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/optixWhittedSolid-300x300.png 300w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/optixWhittedSolid-150x150.png 150w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/optixWhittedSolid.png 768w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/div>\n<div><\/div>\n<div>\n<P><br \/>\nQuite different!<\/p>\n<\/div>\n<div><\/div>\n<div>\n<div>I wrote Turner Whitted, as I had a theory:<\/div>\n<div><\/div>\n<div style=\"padding-left: 30px;\">Why did you make the glass sphere in &#8220;An improved illumination model for shaded display&#8221; hollow?<\/div>\n<div style=\"padding-left: 30px;\">My theory is &#8220;it looked better&#8221; &#8211; you can see a bit of refraction, but there&#8217;s not so much that it&#8217;s confusing to the viewer.<\/div>\n<\/div>\n<div><\/div>\n<div>\n<P><br \/>\nTurns out, that wasn&#8217;t really it. Turner replied:<\/p>\n<\/div>\n<div><\/div>\n<div>\n<p style=\"padding-left: 30px;\">Obviously a solid sphere would be too heavy. \ud83d\ude42<\/p>\n<p style=\"padding-left: 30px;\">Concentric spheres offered a more interesting ray tree with internal reflection and also served as a testbed for using the outer sphere as a bounding volume for the inner one. I didn\u2019t really get far with bounding volumes until teaming up with Steve Rubin for SIGGRAPH \u201980. As you point out, concentric spheres also look better.<\/p>\n<p>I also wasn&#8217;t sure when exactly his paper was officially published, as the paper was presented at SIGGRAPH &#8217;79, but the ACM Digital Library shows <a href=\"https:\/\/dl.acm.org\/citation.cfm?id=807419\">just an abstract<\/a>. The published version is stored as <a href=\"https:\/\/dl.acm.org\/citation.cfm?id=358882\">a Communications of the ACM paper<\/a> in 1980. Turner comments:<\/p>\n<p style=\"padding-left: 30px;\">As for publication, the entire paper and not just the abstract was distributed at SIGGRAPH \u201979, but only the abstract was included in the proceedings. In those days the papers committee chose a couple of papers each year to forward to CACM. Those papers were distributed to SIGGRAPH attendees in a supplement. After 1980 they stopped doing that and published full papers in the conference proceedings and picked 3 or 4 to re-publish in TOG.<\/p>\n<p>It&#8217;s a bit hard for me to remember how slow and friction-filled it was back then, where you pretty much had to use the mail to get or give any information and had to go to the university library to look up and photocopy articles (if you were lucky enough to find them on the shelves). And we walked to school through the snow uphill both ways.<\/p>\n<\/div>\n<p>To conclude, here&#8217;s a physical homage to the paper, with various transparent balls I have lying around on its first page. The one on the left is a glass shell, though quite wobbly in its thickness.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5281\" src=\"http:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/small_real_whitted_photo.jpg\" alt=\"\" width=\"800\" height=\"600\" srcset=\"https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/small_real_whitted_photo.jpg 800w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/small_real_whitted_photo-300x225.jpg 300w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/small_real_whitted_photo-768x576.jpg 768w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/small_real_whitted_photo-400x300.jpg 400w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>And if you just can&#8217;t get enough, here&#8217;s one with a plastic shell instead, which is more uniform but where the shell gets thicker toward its bottom (in the upper right part of it in this view).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5274\" src=\"http:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/small_whitted_photo.jpg\" alt=\"\" width=\"800\" height=\"600\" srcset=\"https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/small_whitted_photo.jpg 800w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/small_whitted_photo-300x225.jpg 300w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/small_whitted_photo-768x576.jpg 768w, https:\/\/www.realtimerendering.com\/blog\/wp-content\/uploads\/2019\/12\/small_whitted_photo-400x300.jpg 400w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s a classic image you&#8217;re probably familiar with, which is having its 40th anniversary: I recently joined Reddit&#8217;s Raytracing feed, where I noticed it recently here, in Reddit&#8217;s Vintage CGI feed. I&#8217;d been playing with a real-time demo of this scene in OptiX 7, as it&#8217;s a sample program, optixWhitted. Examining that demo, it pointed [&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-5265","post","type-post","status-publish","format-standard","hentry","category-misc"],"_links":{"self":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/5265","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=5265"}],"version-history":[{"count":6,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/5265\/revisions"}],"predecessor-version":[{"id":5296,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/5265\/revisions\/5296"}],"wp:attachment":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/media?parent=5265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/categories?post=5265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/tags?post=5265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}