-
Notifications
You must be signed in to change notification settings - Fork 2
/
bb78119c.a9760a2d.js
1 lines (1 loc) · 6.35 KB
/
bb78119c.a9760a2d.js
1
(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{76:function(e,n,t){"use strict";t.r(n),t.d(n,"frontMatter",(function(){return o})),t.d(n,"metadata",(function(){return l})),t.d(n,"rightToc",(function(){return s})),t.d(n,"default",(function(){return u}));var r=t(2),a=t(6),i=(t(0),t(90)),o={title:"Vulkan Ray Tracing Best Practices for Hybrid Rendering",author:"Danny Chavez",author_title:"Virtual Boy",author_url:"https://github.com/dochavez",author_image_url:"https://avatars0.githubusercontent.com/u/1315101?s=400&v=4",tags:["Vulkan","Ray","Tracing","Rendering"]},l={permalink:"/Documenting-with-Docusaurus-V2.-/blog/2020/11/30/vulkan",editUrl:"https://github.com/facebook/docusaurus/edit/master/website/blog/blog/2020-11-30-vulkan.md",source:"@site/blog\\2020-11-30-vulkan.md",description:"Today, the Khronos\xae Vulkan\xae Working Group has released the final Vulkan Ray Tracing extensions that seamlessly integrate ray tracing functionality alongside Vulkan\u2019s rasterization framework, making Vulkan the industry\u2019s first open, cross-vendor, cross-platform standard for ray tracing acceleration. The final ray tracing functionality is defined by a set of 5 extensions, namely `VKKHRaccelerationstructure`, `VKKHRraytracingpipeline`, `VKKHRrayquery`, `VKKHRpipelinelibrary`, and `VKKHRdeferredhost_operations`. ISVs played a pivotal role in shaping the extension to enable hybrid rendering\u2014where rasterization and ray tracing are used in tandem to achieve compelling levels of visual fidelity and interactivity. One example of a game using this hybrid approach in Vulkan is the implementation of ray traced reflections in Wolfenstein Youngblood necessarily shipped with an earlier version of Vulkan Ray Tracing extensions, but the techniques used in the game are described here, and can be fully implemented, using the final production extensions that all developers should use now they are available.",date:"2020-11-30T00:00:00.000Z",tags:[{label:"Vulkan",permalink:"/Documenting-with-Docusaurus-V2.-/blog/tags/vulkan"},{label:"Ray",permalink:"/Documenting-with-Docusaurus-V2.-/blog/tags/ray"},{label:"Tracing",permalink:"/Documenting-with-Docusaurus-V2.-/blog/tags/tracing"},{label:"Rendering",permalink:"/Documenting-with-Docusaurus-V2.-/blog/tags/rendering"}],title:"Vulkan Ray Tracing Best Practices for Hybrid Rendering",readingTime:.87,truncated:!1,nextItem:{title:"Shading Rate Extension to Increase Rendering Performance and Quality",permalink:"/Documenting-with-Docusaurus-V2.-/blog/2020/11/30/new"}},s=[],c={rightToc:s};function u(e){var n=e.components,t=Object(a.a)(e,["components"]);return Object(i.b)("wrapper",Object(r.a)({},c,t,{components:n,mdxType:"MDXLayout"}),Object(i.b)("p",null,"Today, the Khronos\xae Vulkan\xae Working Group has released the final Vulkan Ray Tracing extensions that seamlessly integrate ray tracing functionality alongside Vulkan\u2019s rasterization framework, making Vulkan the industry\u2019s first open, cross-vendor, cross-platform standard for ray tracing acceleration. The final ray tracing functionality is defined by a set of 5 extensions, namely ",Object(i.b)("inlineCode",{parentName:"p"},"VK_KHR_acceleration_structure"),", ",Object(i.b)("inlineCode",{parentName:"p"},"VK_KHR_ray_tracing_pipeline"),", ",Object(i.b)("inlineCode",{parentName:"p"},"VK_KHR_ray_query"),", ",Object(i.b)("inlineCode",{parentName:"p"},"VK_KHR_pipeline_library"),", and ",Object(i.b)("inlineCode",{parentName:"p"},"VK_KHR_deferred_host_operations"),". ISVs played a pivotal role in shaping the extension to enable hybrid rendering\u2014where rasterization and ray tracing are used in tandem to achieve compelling levels of visual fidelity and interactivity. One example of a game using this hybrid approach in Vulkan is the implementation of ray traced reflections in Wolfenstein: Youngblood, a technique which we will be looking at in-depth in this post, while also discussing more general aspects of real-time ray tracing with Vulkan. Wolfenstein: Youngblood necessarily shipped with an earlier version of Vulkan Ray Tracing extensions, but the techniques used in the game are described here, and can be fully implemented, using the final production extensions that all developers should use now they are available."))}u.isMDXComponent=!0},90:function(e,n,t){"use strict";t.d(n,"a",(function(){return p})),t.d(n,"b",(function(){return y}));var r=t(0),a=t.n(r);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=a.a.createContext({}),u=function(e){var n=a.a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},p=function(e){var n=u(e.components);return a.a.createElement(c.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.a.createElement(a.a.Fragment,{},n)}},g=a.a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=u(t),g=r,y=p["".concat(o,".").concat(g)]||p[g]||d[g]||i;return t?a.a.createElement(y,l(l({ref:n},c),{},{components:t})):a.a.createElement(y,l({ref:n},c))}));function y(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=g;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var c=2;c<i;c++)o[c]=t[c];return a.a.createElement.apply(null,o)}return a.a.createElement.apply(null,t)}g.displayName="MDXCreateElement"}}]);