{"id":4612,"date":"2018-03-20T11:45:37","date_gmt":"2018-03-20T17:45:37","guid":{"rendered":"http:\/\/www.realtimerendering.com\/blog\/?p=4612"},"modified":"2018-07-12T06:09:15","modified_gmt":"2018-07-12T12:09:15","slug":"ray-tracing-at-gdc","status":"publish","type":"post","link":"https:\/\/www.realtimerendering.com\/blog\/ray-tracing-at-gdc\/","title":{"rendered":"Ray Tracing at GDC (and beyond)"},"content":{"rendered":"<p>One reason\u00a0I love interactive graphics is that every now and then something happens in the field &#8211; programmable shaders, powerful mobile devices, DX12\/Vulkan\/Metal, VR, AR, and now this &#8211; that changes what&#8217;s possible and how we think about interactive rendering. New algorithms arise to exploit new and different functionality. It&#8217;s a fun world!<\/p>\n<p>Microsoft added ray tracing support to its DirectX API. And this time it&#8217;s not an April Fool&#8217;s Day spoof, like <a href=\"https:\/\/archive.techarp.com\/showarticleb2bb.html?artno=526&amp;pgno=0\">a decade ago<\/a>. Called DirectX Raytracing, <em>DXR<\/em> for short, it adds the ability to cast rays as shader invocations. There are already a bunch of articles and blog posts.<\/p>\n<p>Here are the resources I&#8217;ve noticed so far\u00a0(updated as I see new ones &#8211; let me know):<\/p>\n<ul>\n<li><a href=\"https:\/\/www.gamasutra.com\/view\/news\/315649\/Microsoft_launches_DirectX_Raytracing_to_streamline_realtime_rendering.php\">Gamasutra&#8217;s<\/a>, on DXR. Useful as a quick overview and for its links to the Remedy talk and other resources.<\/li>\n<li><a href=\"https:\/\/youtu.be\/70W2aFr5-Xk\">The Northlight video<\/a>.\u00a0<a href=\"https:\/\/www.remedygames.com\/experiments-with-directx-raytracing-in-remedys-northlight-engine\/\">Remedy&#8217;s presentation<\/a>\u00a0on Monday at GDC.\u00a0<a href=\"https:\/\/www.dropbox.com\/s\/ni32kzk0twjzwo0\/RemedyRenderingGDC18.pptx?dl=0\">The Powerpoint<\/a>\u00a0is a large download, but has some good comparison images and slide notes.<\/li>\n<li>Jaw-dropping reflections in <a href=\"https:\/\/youtu.be\/lMSuGoYcT3s\">the real-time Sta<\/a><a href=\"https:\/\/youtu.be\/lMSuGoYcT3s\">r Wars demo<\/a>. Unreal has <a href=\"https:\/\/www.unrealengine.com\/en-US\/blog\/unreal-engine-4-supports-microsoft-s-directx-raytracing-and-nvidia-rtx\">information about their use of DXR<\/a>\u00a0and links; more <a href=\"https:\/\/www.unrealengine.com\/en-US\/blog\/technology-sneak-peek-real-time-ray-tracing-with-unreal-engine\">here<\/a>.<\/li>\n<li><a href=\"https:\/\/youtu.be\/LXo0WdlELJk\">SEED&#8217;s Pica Pica demo video<\/a>,\u00a0<a href=\"https:\/\/www.ea.com\/seed\/news\/seed-gdc-2018-presentation-slides-shiny-pixels\">their presentation slides<\/a>,\u00a0<a href=\"https:\/\/colinbarrebrisebois.com\/2018\/04\/07\/some-thoughts-on-real-time-raytracing\/\">post-GDC report<\/a>, and <a href=\"https:\/\/colinbarrebrisebois.com\/2018\/07\/10\/gathering-feedback-open-problems-in-real-time-raytracing\/\">HPG keynote announcement<\/a>.<\/li>\n<li>Microsoft&#8217;s <a href=\"https:\/\/blogs.msdn.microsoft.com\/directx\/2018\/03\/19\/announcing-microsoft-directx-raytracing\/\">blog entry on DXR<\/a>, and <a href=\"https:\/\/blogs.msdn.microsoft.com\/pix\/2018\/03\/19\/pix-1803-16-raytracing-directx-raytracing-support\/\">PIX supports it<\/a>, and <a href=\"http:\/\/forums.directxtech.com\/index.php?topic=5860.0\">tips on setting up<\/a>.<\/li>\n<li><a href=\"https:\/\/www.anandtech.com\/show\/12547\/expanding-directx-12-microsoft-announces-directx-raytracing\">Anandtech<\/a> covers and speculates a bit on hardware vendor support.<\/li>\n<li>NVIDIA&#8217;s <a href=\"https:\/\/devblogs.nvidia.com\/introduction-nvidia-rtx-directx-raytracing\/\">developer blog<\/a>, <a href=\"https:\/\/developer.nvidia.com\/gameworks-ray-tracing\">GameWorks overview<\/a>, and <a href=\"https:\/\/globenewswire.com\/news-release\/2018\/03\/19\/1442248\/0\/en\/NVIDIA-RTX-Technology-Realizes-Dream-of-Real-Time-Cinematic-Rendering.html\">general press release<\/a>\u00a0each have useful bits.<\/li>\n<li>NVIDIA also\u00a0announced <a href=\"https:\/\/www.anandtech.com\/show\/12546\/nvidia-unveils-rtx-technology-real-time-ray-tracing-acceleration-for-volta-gpus-and-later\">RTX<\/a>,\u00a0their DXR backend implementation. <a href=\"https:\/\/youtu.be\/-zW3Ghz-WQw\">Video Q&amp;A<\/a>, and <a href=\"https:\/\/devblogs.nvidia.com\/ray-tracing-games-nvidia-rtx\/\">blog intro<\/a> (from June).<\/li>\n<li>The Call for Participation for the book <a href=\"http:\/\/www.realtimerendering.com\/blog\/ray-tracing-gems-book-call-for-participation\/\">Ray Tracing Gems<\/a>, due out at GDC 2019. Deadline for submissions is October 15th.<\/li>\n<li>Aras Pranckevi\u010dius from Unity\u00a0<a href=\"https:\/\/aras-p.info\/blog\/2018\/03\/21\/Random-Thoughts-on-Raytracing\/\">has some thoughts on his blog<\/a> about DXR, with some tasty links tossed in.<\/li>\n<li>NVIDIA has <a href=\"https:\/\/github.com\/NVIDIAGameWorks\/DxrTutorials\">some DXR ray tracing tutorials<\/a> up on Github. Their <a href=\"https:\/\/developer.nvidia.com\/falcor\">Falcor<\/a> rapid-prototyping renderer has DXR support.<\/li>\n<li><a href=\"https:\/\/youtu.be\/tjf-1BxpR9c\">Long video<\/a> from NVIDIA showing DXR used in a wide variety of effects. Worth your time.<\/li>\n<li>I await slides or a video of the session for <a href=\"http:\/\/schedule.gdconf.com\/session\/the-ray-raster-era-begins-an-rd-roadmap-for-the-game-industry-presented-by-nvidia\/856277\">this<\/a>, <a href=\"http:\/\/schedule.gdconf.com\/session\/real-time-raytracing-for-interactive-global-illumination-workflows-in-frostbite-shiny-pixels-and-beyond-real-time-raytracing-at-seed-presented-by-nvidia\/856424\">this<\/a>,\u00a0and <a href=\"http:\/\/schedule.gdconf.com\/session\/improving-real-time-rendering-of-reflections-shadows-and-ambient-occlusion-presented-by-nvidia\/856275\">this<\/a>.<\/li>\n<li>and no doubt a dozen more resources by the end of GDC, e.g. <a href=\"http:\/\/schedule.gdconf.com\/session\/directx-evolving-microsofts-graphics-platform-presented-by-microsoft\/856594\">this talk<\/a>, so <a href=\"https:\/\/twitter.com\/search?q=dxr&amp;src=typd\">search Twitter<\/a> for more (I did like <a href=\"https:\/\/twitter.com\/richgel999\/status\/975853378637938688\">this one<\/a>).<\/li>\n<\/ul>\n<p>It will be interesting to see if there&#8217;s any spike of interest for ray tracing on <a href=\"https:\/\/trends.google.com\/trends\/explore?date=all&amp;q=ray%20tracing\">Google&#8217;s analytics<\/a>. While I doubt having DXR functionality will change everything &#8211; it still has to be performant compared to other specialized techniques &#8211; it&#8217;s great seeing another tool in the toolbox, especially one so general. Even if no ray tracing is done in an interactive renderer that is in development,\u00a0it will now be much easier to get a ground-truth image for comparison when testing other techniques, since shader evaluations and all the rest now fit within a ray tracing fragment. Ray and path tracing, done long enough (or smart enough), give the correct answer, versus screen-based techniques.<\/p>\n<p>Doing these fast enough is the challenge, and\u00a0<a href=\"https:\/\/news.developer.nvidia.com\/profiling-the-ai-performance-boost-in-optix-5\/\">denoisers<\/a> and other filtering techniques (just as done today with rasterized-buffer-based algorithms) will see a lot of use in the coming months and years. I&#8217;m going to go out on a limb here, but I&#8217;m guessing GPUs will also get faster. Now if we can just get people to stop upping the resolution of screens and stop adding more content to scenes, it&#8217;ll all work out.<\/p>\n<p>Even within the Remedy talk, we see ray tracing blending with other techniques more appropriate for diffuse global illumination effects. Ambient occlusion is of course a hack, but a lovely one, and ray tracing can stand in for screen-space methods and so avoid some artifacts. I think getting away from screen-space techniques is potentially a big win, as game artists and engineers won&#8217;t have to\u00a0hack models or lighting to work around major artifacts seen in some situations, so saving time and money.<\/p>\n<p>I&#8217;m also interested to see if this functionality\u00a0gets used in other applications, as there are plenty of areas &#8211; all sorts of audio design applications, various other types of engineering analyses &#8211; that could benefit from faster turnaround on computations.<\/p>\n<p>Enjoy exploring! I look forward to what we all find.<\/p>\n<p>Some of the eye-candy videos:<\/p>\n<p><iframe loading=\"lazy\" title=\"\u201cReflections\u201d \u2013 A Star Wars UE4 Real-Time Ray Tracing Cinematic Demo | By Epic, ILMxLAB, and NVIDIA\" width=\"625\" height=\"352\" src=\"https:\/\/www.youtube.com\/embed\/lMSuGoYcT3s?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p><iframe loading=\"lazy\" title=\"Experiments with DirectX Raytracing in Northlight\" width=\"625\" height=\"352\" src=\"https:\/\/www.youtube.com\/embed\/70W2aFr5-Xk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p><iframe loading=\"lazy\" title=\"SEED - Project PICA PICA - Real-time Raytracing Experiment using DXR (DirectX Raytracing)\" width=\"625\" height=\"352\" src=\"https:\/\/www.youtube.com\/embed\/LXo0WdlELJk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p><iframe loading=\"lazy\" title=\"NVIDIA RTX and GameWorks Ray Tracing Technology Demonstration\" width=\"625\" height=\"352\" src=\"https:\/\/www.youtube.com\/embed\/tjf-1BxpR9c?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>One reason\u00a0I love interactive graphics is that every now and then something happens in the field &#8211; programmable shaders, powerful mobile devices, DX12\/Vulkan\/Metal, VR, AR, and now this &#8211; that changes what&#8217;s possible and how we think about interactive rendering. New algorithms arise to exploit new and different functionality. It&#8217;s a fun world! Microsoft added [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[55],"class_list":["post-4612","post","type-post","status-publish","format-standard","hentry","category-resources","tag-ray-tracing"],"_links":{"self":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/4612","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=4612"}],"version-history":[{"count":6,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/4612\/revisions"}],"predecessor-version":[{"id":4710,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/posts\/4612\/revisions\/4710"}],"wp:attachment":[{"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/media?parent=4612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/categories?post=4612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.realtimerendering.com\/blog\/wp-json\/wp\/v2\/tags?post=4612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}