{"id":25859,"date":"2023-10-05T18:28:17","date_gmt":"2023-10-05T23:28:17","guid":{"rendered":"http:\/\/blog.kenperlin.com\/?p=25859"},"modified":"2023-10-05T18:28:17","modified_gmt":"2023-10-05T23:28:17","slug":"glass-spheres","status":"publish","type":"post","link":"http:\/\/blog.kenperlin.com\/?p=25859","title":{"rendered":"Glass spheres"},"content":{"rendered":"<p>To teach the principles of ray tracing with reflection and refraction in fragment shaders for my computer graphics students, I implemented a little scene of glass spheres bouncing off each other (click on the image below to try it).<\/p>\n<p>It runs just fine on my MacBook Pro. But oddly, it has all sorts of artifacts when I try to run it on my Android Pixel Phone.<\/p>\n<p>I wonder what is causing the difference.<\/p>\n<p><center><a href=\"https:\/\/mrl.nyu.edu\/~perlin\/glass_spheres\"><img decoding=\"async\" src=\"http:\/\/blog.kenperlin.com\/wp-content\/uploads\/2023\/10\/glass_spheres.png\"><\/a><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>To teach the principles of ray tracing with reflection and refraction in fragment shaders for my computer graphics students, I implemented a little scene of glass spheres bouncing off each other (click on the image below to try it). It runs just fine on my MacBook Pro. But oddly, it has all sorts of artifacts &hellip; <a href=\"http:\/\/blog.kenperlin.com\/?p=25859\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Glass spheres&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/25859"}],"collection":[{"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=25859"}],"version-history":[{"count":4,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/25859\/revisions"}],"predecessor-version":[{"id":25863,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/25859\/revisions\/25863"}],"wp:attachment":[{"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25859"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25859"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}