Khronos Cross-Platform Standards Update Vulkan, Anari, Openxr, Gltf and Opencl
Total Page:16
File Type:pdf, Size:1020Kb
KHRONOS CROSS-PLATFORM STANDARDS UPDATE VULKAN, ANARI, OPENXR, GLTF AND OPENCL Neil Trevett, GTC, March 2020 VP NVIDIA, Khronos President AGENDA Latest updates on key Khronos open standards That are of most interest to the GTC audience Vulkan, ANARI, SPIR-V, OpenXR, glTF and OpenCL On Khronos format slides NVIDIA and Khronos Standards How NVIDIA is supporting and deploying Khronos Open Standards On NVIDIA format slides 2 Khronos Connects Software to Silicon Open interoperability standards to enable software to effectively harness the power of multiprocessors and accelerator silicon 3D graphics, XR, parallel programming, vision acceleration and machine learning Non-profit, member-driven standards-defining industry consortium Open to any interested company All Khronos standards are royalty-free Well-defined IP Framework protects participant’s intellectual property >150 Members ~ 40% US, 30% Europe, 30% Asia © The Khronos® Group Inc. 2020 - Page 3 Khronos Active Initiatives 3D Graphics 3D Assets Portable XR Parallel Computation Desktop, Mobile, Web Authoring Augmented and Vision, Inferencing, Machine Embedded and Safety Critical and Delivery Virtual Reality Learning Guidelines for creating APIs to streamline system safety certification NVIDIA is fully committed to continuing to support OpenGL Exploring expanded interop with Vulkan New functionality is primarily Vulkan-focused © The Khronos® Group Inc. 2020 - Page 4 Pervasive Vulkan Desktop and Mobile GPUs http://vulkan.gpuinfo.org/ Platforms Apple Desktop Android (via porting Media Players Consoles (Android 7.0+) layers) (Vulkan 1.1 required on Android Q) Virtual Reality Cloud Services Game Streaming Embedded Engines Croteam Serious Engine Note: The version of Vulkan available will depend on platform and vendor © The Khronos® Group Inc. 2020 - Page 5 Vulkan AAA Content © The Khronos® Group Inc. 2020 - Page 6 Vulkan Roadmap Vulkan 1.1 Extensions Maintenance updates plus additional functionality Roadmap Discussions Timeline semaphores Ray Tracing DX/HLSL compatibility Variable Rate Shading Bindless resources Reduced precision arithmetic Accelerated Video Encode/Decode Formal memory model Machine Learning Primitives Buffer references Mesh Shaders SPIR-V 1.5 January 2020 DLSS 2.0 smart scaling can be used with Vulkan applications Does not need per application training © The Khronos® Group Inc. 2020 - Page 7 Vulkan Ray Tracing Set of Extensions to Vulkan, GLSL and SPIR-V Seamlessly integrates ray tracing into Vulkan 1.X Familiar Ray Tracing Pipeline Architecture The industry’s first open, cross- Straightforward porting between Vulkan Ray Tracing and DXR vendor, cross-platform standard for - including re-use of ray tracing shaders written in HLSL ray tracing acceleration Can be accelerated on existing Vulkan Ray GPU compute and dedicated ray DX12 / DXR Tracing tracing cores Extensions are Provisional Ray Tracing Pipelines Yes Yes Launched 17th March 2020 DXR 1.1 Open to developer feedback Ray Queries Optional Inline raytracing before finalization https://khr.io/vkrayprovfeedback Language for GLSL or HLSL HLSL Ray Tracing Shaders Pipeline Libraries Yes Yes Build Acceleration Structure Optional No on Host Straightforward port from NVIDIA VKRay Deferred Host Operations Optional No vendor extension to KHR extensions Shipping beta drivers today Capture/Replay Support for Example code coming soon Optional No Tools (e.g. RenderDoc) https://www.khronos.org/registry/vulkan/ © The Khronos® Group Inc. 2020 - Page 8 Vulkan Ray Tracing and Shading Languages HLSL HLSL and Vulkan with DXC DXC Microsoft’s DXC HLSL compiler was open sourced in Jan 2017 Front-end Parsing Google and others have added SPIR-V code generation to DXC and Validation with Microsoft’s knowledge and approval Vulkan developers can now choose between GLSL and HLSL! AST Abstract Syntax Tree Vulkan Ray Tracing includes GLSL and SPIR-V Extensions Enabling compiled GLSL/SPIR-V shaders to operate in a Ray Tracing Pipeline – similar to HLSL features used in Direct3D’s DXR SPIR-V DXIL Backend Backend HLSL for Vulkan Ray Tracing NVIDIA added code generation to DXC to generate SPIR-V for the NVIDIA VKRay ray tracing vendor extension from HLSL SPIR-V DXIL Vulkan Ray Tracing Extensions supported in HLSL soon Developers can port HLSL shaders SPIR-V Tools DXIL Tools with minimal changes between Vulkan Ray Tracing and DXR © The Khronos® Group Inc. 2020 - Page 9 NVIDIA AND VULKAN NVIDIA deeply engaged in Vulkan and driving extend/consolidate cycle NVIDIA shipped Vulkan 1.0, 1.1 and 1.2 on day of spec releases Shipped beta Vulkan Ray Tracing extensions on day of spec release Increased Vulkan support in NSIGHT 2020.2 development tool – close parity now with DX12 NVIDIA chairing multiple Vulkan initiatives at Khronos Ray Tracing: contributed NVIDIA VKRay to catalyze Vulkan Ray Tracing KHR extensions Vulkan Portability: bringing layered Vulkan to Apple, WebGPU, silicon without native drivers etc. Machine Learning: low-level inferencing primitives Cloud – Windows and Linux Desktop – Kepler and later Nintendo Switch Shield Android TV Jetson 10 Open Source Layering Projects Fighting Platform Fragmentation Layers Vulkan OpenGL OpenCL OpenGL ES DX12 DX9-11 Over Vulkan is effective clspv GLOVE DXVK porting layer for API Vulkan Zink clvk Angle vkd3d WineD3D portability and stack simplification gfx-rs OpenGL Ashes Angle WineD3D Microsoft Microsoft Microsoft DX12 gfx-rs ‘GLOn12’ ‘CLOn12’ D3D11On12 gfx-rs DX9-11 Ashes Angle MoltenVK MoltenGL Metal gfx-rs Angle ‘Vulkan everywhere’! Working towards Even if no native ‘OpenCL drivers on platform Everywhere’! © The Khronos® Group Inc. 2020 - Page 11 Vulkan Portability on macOS and iOS Applications Vulkan Portability Extension provides query for available functionality Vulkan Open source SDK on macOS All present functionality must be macOS SDK Build, run, and debug apps conformant to use logo with validation layer support https://vulkan.lunarg.com/ SPIRV-Cross macOS / iOS Open source Convert SPIR-V shaders to Run-time For MacOS/iOS Metal Shading Language Maps Vulkan to Metal Beta open source For MacOS/iOS Vulkan applications shipping today on macOS or iOS using MoltenVK © The Khronos® Group Inc. 2020 - Page 12 ANARI – Analytic Rendering API Scientific Visualization Portability APIs to describe objects in a scene - the renderer does the rest Ray tracing was key motivation – but can drive any renderer SciViz Apps Scene Graphs and Engines Renderers: Intel OSPRAY, AMD ProRender, NVIDIA VisRTX etc. Acceleration APIs: Embree, Optix, Radeon Rays, CUDA, OpenCL, Vulkan etc. Hardware: CPUs, GPUs etc. Industry Support © The Khronos® Group Inc. 2020 - Page 13 OpenXR – Cross-Platform Portable AR/VR Working Group Participants Games Engines Desktop/Console VR AR Mobile VR GPUs OpenXR is a collaborative design UI Devices Integrating many lessons from proprietary ‘first-generation’ XR API designs * OpenXR 1.0 is focused on enabling cross-platform applications. Optional device plugin interface will be supported post V1.0 © Copyright Khronos® Group Inc. 2020 Page 14 OpenXR 1.0 Availability Significant Community Feedback Finalize Conformance Test Suite Enable Officially Conformant Implementations Improved Input subsystem, game engine editor support, loader … Provisional OpenXR for Windows Mixed Reality headsets Specification and HoloLens 2 GDC, March 2019 PLUS extensions to support HoloLens 2 hand tracking, eye tracking, spatial mapping and spatial anchors Many more coming! Ratify and Release OpenXR support for Oculus Rift and Oculus Quest OpenXR 1.0 Oculus PC (for Rift) and Android SDK (for Quest) SIGGRAPH, July 2019 include OpenXR for native C/C++ development ‘Monado’ OpenXR open source implementation Support OpenHMD hardware and Nova Northstar AR HMD OpenXR 1.0 plugin for Unreal Engine v4.2.4 © The Khronos® Group Inc. 2019 - Page 15 OpenXR is used with a 3D API Application or Engine Display, High-performance, low-latency composition and Cross-platform access to XR 3D rendering and composition* optical correction HMDs and sensors Multiview parameters XR application lifecycle Context priority Input device discovery and events Front buffer rendering Sensor tracking and pose calculation Tiled rendering (beam racing) Frame timing and display composition Variable rate rendering Haptics Control * OpenXR can be used with other 3D APIs such as Direct3D, OpenGL and OpenGL ES © The Khronos® Group Inc. 2019 - Page 16 OPENXR AND EDGE SERVER APPS Low latency Sensor Data Location–aware Content Requests OpenXR APIs hide the 5G round trip from applications MEC (Multi-access Edge Sensor handling Computing) Server 1. Processes sensor data, including machine learning for environmental lighting, occlusion, Needed assets Display composition scene semantics, object loaded to reconstruction and UI edge server 2. Generates imagery from 3D Wireless mobile device with models, including stereo, foveal rendering, ray-tracing, optics pre- display and sensors distortion, varifocal processing Apps and 3D Assets NVIDIA EGX Generated Augmentations & Scenes 17 Modo Paint 3D Titania Discover Repositories Game Engines 3D Authoring Tools Web Engines 3D Builder Oculus Create Experience 3D printing Tools Apps / Engines 3D Asset Format for Efficient VR / AR Authoring Tools Transmission and Processing Sony 3D Creator Drive Demand Apps and Engines Users 3D Live Object 3D Scanning Tools gltfpack Mixed Reality Viewer Collada2gltf OBJ2GLTF FBX2glTF Windows Mixed Convertors and Optimizers Reality Home glTF Reference Viewer VR / AR Apps and Engines gltf-vscode glTF-asset-generator