[{"data":1,"prerenderedAt":400},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fthe-perils-of-ray-tracing":286,"\u002Fblog\u002Fthe-perils-of-ray-tracing-surround":393},[4],{"title":5,"path":6,"stem":7,"children":8,"page":285},"Blog","\u002Fblog","blog",[9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,233,237,241,245,249,253,257,261,265,269,273,277,281],{"title":10,"path":11,"stem":12},"2020 - The best Javascript Frameworks","\u002Fblog\u002F2020-the-best-javascript-frameworks","blog\u002F2020 - The best Javascript Frameworks",{"title":14,"path":15,"stem":16},"5 Essential Reasons for E2E Testing","\u002Fblog\u002F5-essential-reasons-for-e2e-testing","blog\u002F5 Essential Reasons for E2E Testing",{"title":18,"path":19,"stem":20},"5 Mistakes Front-end Developers should Avoid","\u002Fblog\u002F5-mistakes-front-end-developers-should-avoid","blog\u002F5 Mistakes Front-end Developers should Avoid",{"title":22,"path":23,"stem":24},"5 Things to motivate you to perform Unit Testing","\u002Fblog\u002F5-things-to-motivate-you-to-perform-unit-testing","blog\u002F5 Things to motivate you to perform Unit Testing",{"title":26,"path":27,"stem":28},"52 Articles, 7 Books and a Pandemic","\u002Fblog\u002F52-articles-7-books-and-a-pandemic","blog\u002F52 Articles, 7 Books and a Pandemic",{"title":30,"path":31,"stem":32},"6 Levels of Autonomous Vehicles","\u002Fblog\u002F6-levels-of-autonomous-vehicles","blog\u002F6 Levels of Autonomous Vehicles",{"title":34,"path":35,"stem":36},"ADAS","\u002Fblog\u002Fadas","blog\u002FADAS",{"title":38,"path":39,"stem":40},"Ambient Intelligence","\u002Fblog\u002Fambient-intelligence","blog\u002FAmbient Intelligence",{"title":42,"path":43,"stem":44},"Best 5 Hybrid Mobile App Development Frameworks","\u002Fblog\u002Fbest-5-hybrid-mobile-app-development-frameworks","blog\u002FBest 5 Hybrid Mobile App Development Frameworks",{"title":46,"path":47,"stem":48},"Best Practices for Code Testing","\u002Fblog\u002Fbest-practices-for-code-testing","blog\u002FBest Practices for Code Testing",{"title":50,"path":51,"stem":52},"Blockchains - How and Why?","\u002Fblog\u002Fblockchains-how-and-why","blog\u002FBlockchains - How and Why",{"title":54,"path":55,"stem":56},"Brain Computer Interfaces","\u002Fblog\u002Fbrain-computer-interfaces","blog\u002FBrain Computer Interfaces",{"title":58,"path":59,"stem":60},"Computational Fluid Dynamics","\u002Fblog\u002Fcomputational-fluid-dynamics","blog\u002FComputational Fluid Dynamics",{"title":62,"path":63,"stem":64},"Computer Vision","\u002Fblog\u002Fcomputer-vision","blog\u002FComputer Vision",{"title":66,"path":67,"stem":68},"Cryptography","\u002Fblog\u002Fcryptography","blog\u002FCryptography",{"title":70,"path":71,"stem":72},"Cyber-Physical Systems: Where Digital Meets Reality","\u002Fblog\u002Fcyber-physical-systems","blog\u002FCyber-Physical Systems",{"title":74,"path":75,"stem":76},"Design Patterns - Why and How?","\u002Fblog\u002Fdesign-patterns-why-and-how","blog\u002FDesign Patterns - Why and How",{"title":78,"path":79,"stem":80},"Edge AI: Revolutionizing Intelligence at the Edge","\u002Fblog\u002Fedge-ai","blog\u002FEdge AI",{"title":82,"path":83,"stem":84},"Edge Computing","\u002Fblog\u002Fedge-computing","blog\u002FEdge Computing",{"title":86,"path":87,"stem":88},"Embracing Decentralized Development","\u002Fblog\u002Fembracing-decentralized-development","blog\u002FEmbracing Decentralized Development",{"title":90,"path":91,"stem":92},"Extended Reality Simplified","\u002Fblog\u002Fextended-reality-simplified","blog\u002FExtended Reality Simplified",{"title":94,"path":95,"stem":96},"Good practices for Git","\u002Fblog\u002Fgood-practices-for-git","blog\u002FGood practices for Git",{"title":98,"path":99,"stem":100},"How do browsers work","\u002Fblog\u002Fhow-do-browsers-work","blog\u002FHow do browsers work",{"title":102,"path":103,"stem":104},"How to be a Full Stack Engineer","\u002Fblog\u002Fhow-to-be-a-full-stack-engineer","blog\u002FHow to be a Full Stack Engineer",{"title":106,"path":107,"stem":108},"How to be an effective Engineer?","\u002Fblog\u002Fhow-to-be-an-effective-engineer","blog\u002FHow to be an effective Engineer",{"title":110,"path":111,"stem":112},"How to choose components for a desktop PC on your own","\u002Fblog\u002Fhow-to-choose-components-for-a-desktop-pc-on-your-own","blog\u002FHow to choose components for a desktop PC on your own",{"title":114,"path":115,"stem":116},"Industry 4.0","\u002Fblog\u002Findustry-4","blog\u002FIndustry 4",{"title":118,"path":119,"stem":120},"Industry 4.0 & Mixed Reality","\u002Fblog\u002Findustry-4-and-mixed-reality","blog\u002FIndustry 4 & Mixed Reality",{"title":122,"path":123,"stem":124},"Internet of Behaviours","\u002Fblog\u002Finternet-of-behaviours","blog\u002FInternet of Behaviours",{"title":126,"path":127,"stem":128},"Internet of Things","\u002Fblog\u002Finternet-of-things","blog\u002FInternet of Things",{"title":130,"path":131,"stem":132},"Let's talk about SOLID Principles","\u002Fblog\u002Flets-talk-about-solid-principles","blog\u002FLets talk about SOLID Principles",{"title":134,"path":135,"stem":136},"LiDAR","\u002Fblog\u002Flidar","blog\u002FLiDAR",{"title":138,"path":139,"stem":140},"Machine Vision -Transforming Industries AI","\u002Fblog\u002Fmachine-vision-transforming-industries-ai","blog\u002FMachine Vision -Transforming Industries AI",{"title":142,"path":143,"stem":144},"Mathematics in Software Engineering","\u002Fblog\u002Fmathematics-in-software-engineering","blog\u002FMathematics in Software Engineering",{"title":146,"path":147,"stem":148},"Micro Frontends - A Modern Approach to Front-End Development","\u002Fblog\u002Fmicro-frontends-a-modern-approach-to-front-end-development","blog\u002FMicro Frontends - A Modern Approach to Front-End Development",{"title":150,"path":151,"stem":152},"Natural Language Processing","\u002Fblog\u002Fnatural-language-processing","blog\u002FNatural Language Processing",{"title":154,"path":155,"stem":156},"Optimizing for Search Engines","\u002Fblog\u002Foptimizing-for-search-engines","blog\u002FOptimizing for Search Engines",{"title":158,"path":159,"stem":160},"Physics Engine","\u002Fblog\u002Fphysics-engine","blog\u002FPhysics Engine",{"title":162,"path":163,"stem":164},"Point cloud","\u002Fblog\u002Fpoint-cloud","blog\u002FPoint cloud",{"title":166,"path":167,"stem":168},"Processes for Better Software Volume 1","\u002Fblog\u002Fprocesses-for-better-software-volume-1","blog\u002FProcesses for Better Software Volume 1",{"title":170,"path":171,"stem":172},"Processes for Better Software Volume 2","\u002Fblog\u002Fprocesses-for-better-software-volume-2","blog\u002FProcesses for Better Software Volume 2",{"title":174,"path":175,"stem":176},"Processes for Better Software Volume 3","\u002Fblog\u002Fprocesses-for-better-software-volume-3","blog\u002FProcesses for Better Software Volume 3",{"title":178,"path":179,"stem":180},"Quantum Computers","\u002Fblog\u002Fquantum-computers","blog\u002FQuantum Computers",{"title":182,"path":183,"stem":184},"Quantum Computing and its Potential Impact on Software Development","\u002Fblog\u002Fquantum-computing-and-its-potential-impact-on-software-development","blog\u002FQuantum Computing and its Potential Impact on Software Development",{"title":186,"path":187,"stem":188},"Quantum Cryptography","\u002Fblog\u002Fquantum-cryptography","blog\u002FQuantum Cryptography",{"title":190,"path":191,"stem":192},"Ray tracing - What you need to know","\u002Fblog\u002Fray-tracing-what-you-need-to-know","blog\u002FRay tracing - What you need to know",{"title":194,"path":195,"stem":196},"Reflections on how we code","\u002Fblog\u002Freflections-on-how-we-code","blog\u002FReflections on how we code",{"title":198,"path":199,"stem":200},"Robotic Process Automation","\u002Fblog\u002Frobotic-process-automation","blog\u002FRobotic Process Automation",{"title":202,"path":203,"stem":204},"Self Driving Cars - A Better Tomorrow","\u002Fblog\u002Fself-driving-cars-a-better-tomorrow","blog\u002FSelf Driving Cars - A Better Tomorrow",{"title":206,"path":207,"stem":208},"Semantic Web - A Smarter Future","\u002Fblog\u002Fsemantic-web-a-smarter-future","blog\u002FSemantic Web A Smarter Future",{"title":210,"path":211,"stem":212},"Sensor Fusion","\u002Fblog\u002Fsensor-fusion","blog\u002FSensor Fusion",{"title":214,"path":215,"stem":216},"Serverless Computing and the Future","\u002Fblog\u002Fserverless-computing-and-the-future","blog\u002FServerless Computing and the Future",{"title":218,"path":219,"stem":220},"Shaders","\u002Fblog\u002Fshaders","blog\u002FShaders",{"title":222,"path":223,"stem":224},"Smart Home Automation","\u002Fblog\u002Fsmart-home-automation","blog\u002FSmart Home Automation",{"title":226,"path":227,"stem":228},"The Horizon of Cybersecurity","\u002Fblog\u002Fthe-horizon-of-cybersecurity","blog\u002FThe Horizon of Cybersecurity",{"title":230,"path":231,"stem":232},"The Perils of Ray-Tracing","\u002Fblog\u002Fthe-perils-of-ray-tracing","blog\u002FThe Perils of Ray-Tracing",{"title":234,"path":235,"stem":236},"The Psychology of Software Bugs Understanding and Preventing Common Mistakes","\u002Fblog\u002Fthe-psychology-of-software-bugs-understanding-and-preventing-common-mistakes","blog\u002FThe Psychology of Software Bugs - Understanding and Preventing Common Mistakes",{"title":238,"path":239,"stem":240},"Top 5 Advantages of MongoDB","\u002Fblog\u002Ftop-5-advantages-of-mongodb","blog\u002FTop 5 Advantages of MongoDB",{"title":242,"path":243,"stem":244},"Top Trends in Augmented Reality","\u002Fblog\u002Ftop-trends-in-augmented-reality","blog\u002FTop Trends in Augmented Reality",{"title":246,"path":247,"stem":248},"Top features of Unreal Engine","\u002Fblog\u002Ftop-features-of-unreal-engine","blog\u002FTop features of Unreal Engine",{"title":250,"path":251,"stem":252},"Unity 3D - Why to go with it?","\u002Fblog\u002Funity-3d-why-to-go-with-it","blog\u002FUnity 3D - Why to go with it",{"title":254,"path":255,"stem":256},"Virtual Reality Advantages","\u002Fblog\u002Fvirtual-reality-advantages","blog\u002FVirtual Reality Advantages",{"title":258,"path":259,"stem":260},"Virtual Test Drive & Autonomous Driving","\u002Fblog\u002Fvirtual-test-drive-and-autonomous-driving","blog\u002FVirtual Test Drive & Autonomous Driving",{"title":262,"path":263,"stem":264},"WebAssembly and Progressive Web Apps","\u002Fblog\u002Fwebassembly-and-progressive-web-apps","blog\u002FWebAssembly and Progressive Web Apps",{"title":266,"path":267,"stem":268},"What are Best Practices?","\u002Fblog\u002Fwhat-are-best-practices","blog\u002FWhat are Best Practices",{"title":270,"path":271,"stem":272},"What are Digital Twins?","\u002Fblog\u002Fwhat-are-digital-twins","blog\u002FWhat are Digital Twins",{"title":274,"path":275,"stem":276},"What makes Mixed Reality the next big thing?","\u002Fblog\u002Fwhat-makes-mixed-reality-the-next-big-thing","blog\u002FWhat makes Mixed Reality the next big thing",{"title":278,"path":279,"stem":280},"Why Game Engines?","\u002Fblog\u002Fwhy-game-engines","blog\u002FWhy Game Engines",{"title":282,"path":283,"stem":284},"Why we need User Experience Design?","\u002Fblog\u002Fwhy-we-need-user-experience-design","blog\u002FWhy we need User Experience Design",false,{"id":287,"title":230,"author":288,"body":292,"date":384,"description":385,"extension":386,"image":387,"meta":388,"minRead":389,"navigation":390,"path":231,"seo":391,"stem":232,"__hash__":392},"blog\u002Fblog\u002FThe Perils of Ray-Tracing.md",{"name":289,"avatar":290},"Aghil Jose",{"src":291,"alt":289},"\u002Fassets\u002Fimages\u002Fabout.jpg",{"type":293,"value":294,"toc":376},"minimark",[295,299,302,305,308,311,314,321,324,327,330,333,336,339,342,347,350,353,356,359,362,365,368,373],[296,297,298],"p",{},"Ray tracing is arguably the most significant change to the real-time graphics\npipeline in the last decade. It gives developers new tools in the box of\ntricks they use to carefully persuade today’s GPUs to draw immersive,\nrealistic, high-quality scenes at high performance.",[296,300,301],{},"Within the last couple of years, products have hit the high-end PC market that\nsupport Microsoft’s DirectX Ray Tracing (DXR) specification. A number of\nhigh-profile games that use DXR showcase the potential of the technology.",[296,303,304],{},"The great folks at Khronos have also recently released their view of ray\ntracing as it applies to Vulkan. The resulting API will feel familiar to\nstudents of DXR, giving developers another ray-tracing API to target and a\nmeans to expand over time to platforms that aren't Windows.",[296,306,307],{},"However, at the time of writing, all of the public implementations come from a\nsingle vendor, Nvidia. Consequently, developers have a rather narrow view of\nwhat makes an accelerated ray-tracing implementation based on DXR or Vulkan\nray tracing tick.",[296,309,310],{},"That's no fault of Nvidia, the graphics giant taking advantage of their\nability to strong arm their view of ray tracing into DirectX and therefore\nrobustly influence the resulting capabilities in Vulkan. Any other vendor in\nNvidia's position would do the same, and the company's ability to productize\nthe output of its incredible research team is second to none.",[296,312,313],{},"However, if that's how a new graphics capability comes into being, driven\nalmost completely by a single vendor in the beginning, resulting in a narrow\nspectrum of implementations with limited market share, developers need to be\ncareful as that landscape of implementations broadens over time.",[296,315,316,320],{},[317,318,319],"strong",{},"Multiple Design Paths"," **",[296,322,323],{},"That's especially true when it comes to a largely black box feature like ray\ntracing. What do we mean by black box? For any given hardware and software\nspecification in the semiconductor world, and that isn't limited to GPUs,\nthere's a huge design space you can explore to implement it.",[296,325,326],{},"There's no one way to build a CPU for example, leading to a wide range of\npractical instruction set architectures (ISAs) that can all run roughly the\nsame software. GPUs enjoy an even wider range of potential implementations\nfrom different vendors because there's no standard ISA from which the industry\ndesigns its implementations.",[296,328,329],{},"GPU vendors take advantage of that to innovate more rapidly under the hood\ncompared to CPUs. That’s because the combination of hardware and software at\nwork can more readily hide what's under the hood doing the work at the silicon\nlevel.",[296,331,332],{},"So, when Nvidia proposed what became DXR to Microsoft, when specifying the\nprogramming model and API that developers need to target to perform ray\ntracing in their renderer, they left certain parts of it almost completely\nundefined.",[296,334,335],{},"That lack of guidance in parts of the specification is completely on purpose.\nWhy? It allows the underlying implementation of that bit of the specification\nto be entirely specific to a given GPU and its driver. In fact, parts of DXR\nand Vulkan ray tracing don't even need to run on the GPU at all!",[296,337,338],{},"And therein lies the rub: because of that, unlike almost every other feature\never added to the real-time graphics pipeline in GPU history, ray tracing will\nbe very difficult for developers to target in a uniform way.",[296,340,341],{},"That's further complicated by the fact that ray tracing is also bifurcating\nfrom the developer's point of view, too, with a simpler model having emerged\nfrom the full ray pipelines first specified. This allows for easier\nimplementation of some specific effects, particularly ray-traced shadows.",[343,344,346],"h2",{"id":345},"advice-for-developers","Advice for Developers",[296,348,349],{},"So, with two ray-tracing programming models for developers to target and still\nonly one generation of shipping accelerators to try it out on, and with key\nparts of DXR and Vulkan ray tracing specified as completely\nimplementation-dependent, what should developers be aware of as things develop\nin the ray-tracing acceleration space?",[296,351,352],{},"As a company developing ray-tracing acceleration for its future GPUs, where\nour solution will have microarchitectural performance characteristics that are\nnecessarily different—and better by far, we hope—to those implementations from\nother vendors, we have some simple advice.",[296,354,355],{},"First, avoid any marketing claims about ray-tracing performance since there's\nno standard way to describe it. The black box nature of the ray-tracing\nspecifications makes it almost impossible to do so anyway. Let's pick on one\nof the most impressive GPUs ever made to push home the point: Nvidia's TU102\nin GeForce RTX 2080 Ti form. It's a competing product so I shouldn't really\nsay this, but woof, it's one heck of a GPU.",[296,357,358],{},"Nvidia says there's a peak ray flow of 10 Grays\u002Fsec in that product, which is\nan incredibly impressive headline number. Sadly, though, it doesn't actually\nsay anything concrete that you can understand as a consumer, developer, or\nanyone else interested in the technology and how it works.",[296,360,361],{},"Does it only measure miss-only rate with empty rays, or is it measuring\nreal-world usable ray flow on rays with a proper payload? It's a marketing\nnumber, so it's definitely a lot closer to the former than the latter,\nunfortunately. It also doesn't tell you anything about the location of the\nperformance cliffs. Nor does it tell you how ray-tracing throughput degrades\nwith complexity of ray, hierarchy, or any of the other moving parts of the\nray-tracing system, and how it's all integrated with the rest of the rendering\nworkload.",[296,363,364],{},"As a result, you're left with testing and measuring as your only realistic way\nto determine what's possible with a given level of ray-tracing performance in\na GPU. That’s because Nvidia's 10 Grays\u002Fsec won't mean the same thing as the\nsame number quoted by Imagination, or any of the other vendors that will try\ntheir hand at useful DXR or Vulkan ray-tracing acceleration for that matter.\nIt won't even mean the same thing generationally for Nvidia!",[296,366,367],{},"Lastly, does that mean the graphics market now has a need for public software\nthat tests meaningful peak microarchitectural ray flow to expose\nimplementation-specific details, along with some measures of real-world\nperformance in idiomatic game-like settings? Absolutely, and we'd love to talk\nto anyone who wants to tackle that problem, since it's a big missing piece of\nthe puzzle.",[369,370,372],"h3",{"id":371},"real-time-graphics-has-entered-a-new-era-with-the-advent-of-ray-tracing-which-delivers-more-realistic-scenes-than-ever-before-but-all-current-implementations-centre-around-one-vendorand-that-raises-issues-especially-when-the-competitive-field-expands","Real-time graphics has entered a new era with the advent of ray tracing, which delivers more realistic scenes than ever before. But all current implementations centre around one vendor—and that raises issues, especially when the competitive field expands.",[296,374,375],{},"Disclaimer : The views and opinions expressed in the article belong solely to the\nauthor, and not necessarily to the author's employer, organisation, committee\nor other group or individual.",{"title":377,"searchDepth":378,"depth":378,"links":379},"",2,[380],{"id":345,"depth":378,"text":346,"children":381},[382],{"id":371,"depth":383,"text":372},3,"2020-08-17","There are certain perils for ray tracing among most of the advances it provides.","md","\u002Fassets\u002Fimages\u002Fblog\u002F170820\u002FrtPerilsTitle.jpg",{},7,true,{"title":230,"description":385},"CMmuUuVK1oaFUFO2oTLe19ELrsQD2Z3kwTIJuiyFtw8",[394,397],{"path":167,"title":166,"description":395,"date":396},"Best practices for Software Engineers.","2020-08-24",{"path":91,"title":90,"description":398,"date":399},"Extended Reality Explained.","2020-08-10",1790439209839]