KHRONOS GROUP Update to Web3d
Total Page:16
File Type:pdf, Size:1020Kb
Update to Web3D Los Angeles, July 2019 Neil Trevett Khronos President NVIDIA VP Developer Ecosystems [email protected] | @neilt3d ® © Khronos Group 2019 © Khronos® Group Inc. 2019 - Page 1 Active Khronos Standards 3D Commerce Working Group Announced at SIGGRAPH! Khronos is an open, member-driven industry consortium developing royalty-free standards, to harness the power of silicon acceleration for demanding graphics rendering and computationally intensive applications © Khronos® Group Inc. 2019 - Page 2 Vulkan Explicit GPU Control Simpler drivers - application has the best knowledge for holistic optimization – no ‘driver magic’ Complex drivers Application cause overhead Single thread per context Explicit creation of API objects and inconsistent Application before usage – efficient, behavior across Memory allocation Multiple Front-end predictable execution vendors Thread management Explicit Synchronization Compilers Easier portability - no fighting High-level Driver GLSL, HLSL etc. Always active Multi-threaded generation with different vendor heuristics of command buffers error handling Abstraction Layered GPU Control Validation and debug layers Full GLSL Context management SPIR-V loaded only when needed preprocessor and Memory allocation pre-compiled shaders compiler in Full GLSL compiler SPIR-V intermediate language: Error detection driver Thin Driver Loadable debug and shading language flexibility Explicit GPU Control validation layers OpenGL vs. Unified API across mobile and OpenGL ES desktop platforms GPU GPU Multiple graphics, command and DMA queues A Graphics API A GPU API © Khronos® Group Inc. 2019 - Page 3 Pervasive Vulkan Major GPU Companies supporting Vulkan for Desktop and Mobile Platforms http://vulkan.gpuinfo.org/ Platforms Consoles Desktop Mobile (Android 7.0+) Media Players Virtual Reality Cloud Services Game Streaming Embedded Game Engines Croteam Serious Engine © Khronos® Group Inc. 2019 - Page 4 Vulkan 1.1 Ecosystem Evolution Strengthening Tools and Compilers Improved developer tools (SDK, validation/debug layers) Shader toolchain improvements (size, speed, robustness) Shading language flexibility – HLSL and OpenCL C support More rigorous conformance testing Building Vulkan’s Future Listen and prioritize developer needs Drive GPU technology Released Vulkan 1.1 Extensions Vulkan 1.0 Extensions Reduced precision arithmetic types in shaders Maintenance updates plus additional functionality Bindless resources Multiview HLSL-compatible memory layouts Multi-GPU Formal memory model Enhanced Windows System Integration Buffer references Increased Shader Flexibility: https://www.khronos.org/registry/vulkan/specs/1.1-khr- 16-bit storage, Variable Pointers extensions/html/vkspec.html#extension-appendices-list Enhanced Cross-Process and February 2016 Cross-API Sharing March 2018 Roadmap Discussions Vulkan 1.0 Vulkan 1.1 Video encode / decode Machine Learning support Integration of 1.0 Extensions Ray Tracing plus new functionality Timeline semaphores e.g. Subgroup Operations Generalized subgroup operations Widening Platform Support Increasing Support for Pervasive GPU vendor native driver availability Professional Authoring Apps Open source drivers – ANV (Intel), AMDVLK/RADV (AMD) OpenGL-class Line Rasterization Vulkan Portability to macOS/iOS and DX12 (stipple, smooth, Bresenham) OpenGL/Vulkan Interop © Khronos® Group Inc. 2019 - Page 5 SPIR-V Ecosystem SPIR-V Khronos-defined cross-API IR Native graphics and parallel compute support GLSL HLSL Easily parsed/extended 32-bit stream Data object/control flow retained for effective code generation/translation Third party kernel and shader languages glslang DXC MSL C++ for HLSL SYCL for OpenCL in SPIRV-Cross OpenCL C OpenCL C++ ISO C++ clang GLSL Front-end Front-end Front-end Front-end SPIR-V (Dis)Assembler clspv SPIR-V Validator LLVM to SPIR-V Khronos cooperating Bi-directional LLVM with clang/LLVM Translators Community SPIRV-opt | SPIRV-remap Optimization Tools 3rd Party-hosted Open Source Projects Environment spec for Khronos-hosted each target API usedIHV to Driver Open Source Projects drive compilationRuntimes https://github.com/KhronosGroup/SPIRV-Tools © Khronos® Group Inc. 2019 - Page 6 Vulkan Portability Initiative on Apple Almost all mandatory Vulkan 1.0 Khronos and MoltenVK/gfx-rs working on passing Vulkan functionality is supported: Conformance Testing for all implemented functionality No Triangle Fans No separate stencil reference masks Events are not supported Selected Optional Features and Open source SDK to build, Extensions are added as required - Applications run, and debug applications driven by industry input and feedback on macOS - including Robust buffer access validation layer support BC texture compressed formats https://vulkan.lunarg.com/ Fragment shader atomics Tesselation https://github.com/KhronosGroup/MoltenVK Vulkan macOS SDK SPIRV-Cross macOS / iOS Open source beta release for macOS Convert SPIR-V shaders to Run-time Metal Shaders Maps Vulkan to Metal Open source for MacOS and iOS MoltenVK supports Free to use - no fees or royalties macOS 10.11 / iOS 9.0 and up including commercial apps © Khronos® Group Inc. 2019 - Page 7 XR = AR + VR Cross-platform, high-performance access to AR and VR platforms and devices Virtual Reality V A Augmented Reality © Khronos® Group Inc. 2019 - Page 8 OpenXR – Solving XR Fragmentation * OpenXR 1.0 is focused on enabling cross-platform applications. Optional device plugin interface will be supported post V1.0 ** Check OpenXR Landing Page for exact availabiliy of OpenXR in shipping run-times and devices www.khronos.org/openxr © Khronos® Group Inc. 2019 - Page 9 Companies Publicly Supporting OpenXR OpenXR is a collaborative design Integrating many lessons from proprietary ‘first-generation’ XR API designs © Khronos® Group Inc. 2019 - Page 10 OpenXR 1.0 Released Here at SIGGRAPH! Significant community feedback – thank you! Improved OpenXR input subsystem, game engine editor support, loader … Ratify and Provisional Finalize Conformance Release OpenXR Specification Test Suite Enable Officially Conformant GDC, March 2019 1.0 Specification SIGGRAPH, July 2019 Implementations OpenXR runtime for Windows Mixed Reality headsets OpenXR support and HoloLens 2 from Microsoft shipping TODAY for Oculus Rift and Oculus Quest PLUS extensions to support HoloLens 2 hand tracking, eye tracking, spatial Coming soon mapping and spatial anchors by end of year OpenXR 1.0 plugin for Many more Unreal Engine 4.23 coming ‘Monado’ OpenXR open source implementation Starting with preview 4 from Collabora shipping TODAY © Khronos® Group Inc. 2019 - Page 11 Khronos APIs for XR 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 Frame timing and display composition Front buffer rendering Sensor tracking and pose calculation Tiled rendering (beam racing) Input device discovery and events Variable rate rendering Haptics Control * OpenXR can be used with other 3D APIs such as Direct3D, OpenGL and OpenGL ES © Khronos® Group Inc. 2019 - Page 12 OpenXR Win-Win-Win XR End-Users Can run the apps they want on their system – reducing market confusion and increasing consumer confidence XR Vendors Can bring more applications onto their platform by leveraging the OpenXR content ecosystem XR ISVs Can easily ship on more platforms for increased market reach © Khronos® Group Inc. 2019 - Page 13 Bringing XR to the Web Native XR Apps Web XR Apps Future versions of OpenXR will include cross-platform extended AR functionality WebXR 3D Engines 3D Engines System-exposed AR Capabilities Close ongoing collaboration between WebXR and OpenXR Khronos providing the foundation for 3D and XR in the Web and native stacks © Khronos® Group Inc. 2019 - Page 14 WebGL Extensions • Delivering requested features from the developer community • KHR_parallel_shader_compile extension - Asynchronous shader compilation times – does not block the main WebGL thread • multi-draw and instanced multi-draw extensions – on track for all browsers - Command batching and significantly decrease CPU overhead for larger scenes • Compressed texture extensions - already available in browsers - RGTC (BC4 / BC5) and BPTC (BC6H / BC7) extensions • Extensions coming soon - WebGL 2.0 GPU Compute contributed by Intel - WEBGL_video_texture accelerated real-time video processing - BaseVertex and BaseInstance flexible indexing into vertex arrays • WebGL 2.0 public demonstrations - Including how-to enable prototype features with command-line flags in Chrome Canary © Khronos® Group Inc. 2019 - Page 15 glTF – The JPEG of 3D! glTF spec development on open GitHub – get involved! https://github.com/KhronosGroup/glTF Compact to Transmit Simple and Fast to Load Describes Full Scenes Runtime Neutral Open and Extensible glTF 2.0 – June 2017 Efficient, reliable transmission glTF 1.0 – December 2015 Native AND Web APIs Bring 3D assets into 1000s of Primarily for WebGL Physically Based Rendering apps and engines Uses GLSL for materials Metallic-Roughness and Specular-Glossiness © Khronos® Group Inc. 2019 - Page 16 Titania Paint 3D Modo Dedicated 3D Authoring Tools Discover Repositories Game Engines Authoring Tools that Export 3D Web Engines Oculus Create Experience Tools Apps / Engines Ecosystem 3D Builder VR / AR Authoring Tools Prep for 3D printing Sony 3D Creator Drive Demand Apps and Engines Users 3D Live Object 3D Scanning Tools gltfpack Mixed