khronos press update€¦ · - improved portability and testability • adds many clarifications...
TRANSCRIPT
© Copyright Khronos Group 2013 | Page 1
Khronos Press Update
Neil Trevett Khronos President
Vice President Mobile Content, NVIDIA March 2013
© Copyright Khronos Group 2013 | Page 2
Significant 3D Ecosystem Announcements
Creating the Industry’s most portable and secure 3D
execution platform
Creating the Industry’s most portable and reliable 3D asset
interchange format
Connecting the two with a new 3D run-time asset transmission format – glTF. A standards-based content pipeline for rich
native and Web 3D applications
© Copyright Khronos Group 2013 | Page 3
Creating a Web-ready 3D Platform
JavaScript Bindings to OpenGL ES 2.0 Functionality
Native platform 3D APIs
Extra run-time checks and API/language
restrictions for security
Bug reporting and fixing
Additional native API functions for security
Additional handling of multi-tasking and pre-emption in silicon
© Copyright Khronos Group 2013 | Page 4
Fully Compliant WebGL 1.0.1 Shipping! • Browser and GPU vendors working closely together
- Resolving GPU driver issues across multiple platforms
• Chrome 25 and Firefox 19 now 100% WebGL compliant
- Windows, Mac, Linux
• NVIDIA has first fully compliant Android WebGL browser on Tegra
- getContext("webgl") will now start to be supported
• Others to follow!
- Special thanks to AMD, Intel, NVIDIA, Chrome, Firefox and Safari teams, Mesa
A major cooperative milestone in bringing the
power of the GPU to the Web
© Copyright Khronos Group 2013 | Page 5
WebGL 1.0.2 in Ratification - Reliability • Significantly tightens specified behavior
- Improved portability and testability
• Adds many clarifications for specification behavioral precision
- Principally thanks to Mozilla
• Mandates support for certain combinations of framebuffer formats
- Eases developer adoption
• Clarifies interactions with the encompassing HTML5 platform
- Including the browser compositor and high-DPI displays
• Increases the number of conformance tests to 21,000 from 8,900
- To improve both the breadth and depth of test coverage - thanks principally to
work by Gregg Tavares at Google and the OpenGL ES working group
• Expecting formal release at end of April
© Copyright Khronos Group 2013 | Page 6
New WebGL Extensions in Ratification • Also expecting to be released in April
• JavaScript-level debugging of WebGL API calls and shaders
• Query to ensure lost context events are handled correctly
- Such as when a mobile device is powered off when WebGL is executing
• Additional 3D functionality from the OpenGL ES 2.0 ecosystem
- Anisotropic filtering, standard derivatives and vertex array objects
© Copyright Khronos Group 2013 | Page 7
COLLADA is Now ISO Standard • COLLADA is now an ISO Standard
- COLLADA 1.5.0 has been published as ISO PAS 17506 by ISO SC4 TC184
- “… to enable developers to create tools to process COLLADA resources to import to
or export from digital content creation (DCC) applications, 3D interactive
applications and tool chains, prototyping tools, real-time visualization applications”
• Provides a reliable, long-term international standard
- For 3D asset authoring and interchange
© Copyright Khronos Group 2013 | Page 8
OpenCOLLADA Import/Export • OpenCOLLADA upgraded and released as open source on Github
- High-quality, full functionality COLLADA importer/exporter
- Available free-of-charge for tools vendors to integrate
- https://github.com/KhronosGroup/OpenCOLLADA
• COLLADA conformance test suite released on GitHub
- Enables tools vendors, and their users, to test for conformant COLLADA IO
- https://github.com/KhronosGroup/COLLADA-CTS
No excuses left for low quality
COLLADA import/export!
© Copyright Khronos Group 2013 | Page 9
3D Needs a Transmission Format • Compression and streaming of 3D assets becoming essential
- Mobile and connected devices need access to increasingly large asset databases
• 3D is the last media type to define a compressed format
- 3D is more complex – diverse asset types and use cases
• Need to handle sophisticated 3D assets and scenes
- Scenegraph, geometry, textures, materials, animations…
Audio Video Images 3D
MP3 H.264 JPEG ? !
An effective and widely adopted codec ignites previously unimagined opportunities for a media type
© Copyright Khronos Group 2013 | Page 10
Authoring and Runtime 3D Formats • COLLADA solves interchange problem, but is NOT a format for rendering
- XML-text based, human readable but not optimized for size
- Requires significant processing to render COLLADA models with GL APIs
• Developers typically use custom conditioning pipelines
- To convert COLLADA to proprietary runtime formats
- No standardized methods for asset streaming or compression
• Losing advantages of a cross vendor standardized run-time format
- Optimized codec implementations in software or hardware
- Portable, reusable content
- Size-optimized asset stores, repositories and archives
Proprietary Run-time formats
Rendering
Custom Conditioner
Maya
Blender
…
Authoring Interchange
Apps
© Copyright Khronos Group 2013 | Page 11
glTF – OpenGL Transmission Format • glTF is a final-stage asset format driven by OpenGL APIs
- Bridges the gap between COLLADA and GL APIs
- OpenGL, OpenGL ES and WebGL
• Uses JSON to describe node hierarchy
- Platform neutral, many processing libraries available
• Node hierarchy refers to geometry, textures, materials, animations…
- Separate binary blob for geometry/texture assets
- Will enable parallel work on 3D asset streaming and compression
.json Node Hierarchy
.bin Vertices and
indices
.glsl Shaders
(materials)
astc, .png, .jpg, etc.
Textures
glTF File
© Copyright Khronos Group 2013 | Page 12
Building glTF • Khronos COLLADA working group driving the glTF specification design
- Draft specifications will be PUBLICLY available for industry review and feedback
• Prototype implementation: COLLADA2GLTF
- Uses OpenCOLLADA to convert COLLADA assets to JSON for use in WebGL
- Source uploaded on Github: https://github.com/KhronosGroup/glTF
• Format requirements driven by WebGL/OpenGL ES
- Unique indices buffer, requires shaders, split meshes > 65536 indices…
- Buffers description compliant with typed arrays
- Incorporate requirements from MPEG, Web3D and others
glTF
Rendering
COLLADA2GLTF
Maya
Blender
…
Authoring Interchange
Apps
JSON Scene Graph
Description
Open source sample
convertor
© Copyright Khronos Group 2013 | Page 13
Building a Complete Transmission Solution • gkTF is first step of three for complete 3D codec solution
- JSON Node Hierarchy encoding +
- REST3D APIs for Server/Client Negotiation +
- 3D Asset payload compression/streaming
3D Asset Server
3D Client
Encode 3D Asset Payload
Decode 3D Asset Payload
2. Use REST to negotiate asset selection, compression and streaming
1. Send JSON encoded scene graph
3. Compress and Stream Assets
© Copyright Khronos Group 2013 | Page 14
OpenGL 3D API Everywhere Desktop Windows Windows
Mac Linux
Mobile Android
iOS Blackberry
Ubuntu
Web Most desktops
Mobile in next 12 months
TV
EVERY Phone
Cars
Everywhere
© Copyright Khronos Group 2013 | Page 16
WebGL 1.0.2 Ratification • A sweep through the specification for tightened behavior and clarifications for
improved application portability and enhanced security - WebGLHandlesContextLoss extended attribute to define context lost handling; tightened behavior
- Mandated certain combinations of framebuffer object attachments be supported
- Explicitly disallowed while and do-while loops in shaders
- Tightened behavior for out-of-range array accesses in shaders
- Tightened behavior when depth, stencil, or antialiased context creation attributes are false
- Clarified when drawing buffer is presented to HTML page compositor
- Specified behavior on high-DPI displays
- Many cleanups of IDL; most informed and verified by Mozilla
- Specified first pixel transferred during texImage2D taking HTML elements
- Specified texImage2D behavior with null pixels in a few more cases
- Clarified error for negative offset in vertexAttribPointer
- Clarified case-insensitivity of strings in getExtension
- Specified lack of default textures
- Enforced packing restrictions for uniforms and varyings
- Fixed bug in initial viewport
© Copyright Khronos Group 2013 | Page 17
WebGL Extensions • Specific WebGL extensions:
- WEBGL_debug_renderer_info
- WEBGL_debug_shaders
- WEBGL_lose_context
• Wrapping OpenGL ES Extensions
- OES_texture_float
- OES_texture_half_float
- WEBGL_compressed_texture_s3tc
- EXT_texture_filter_anisotropic
- OES_element_index_uint
- OES_standard_derivatives
- OES_vertex_array_object
- WEBGL_depth_texture