OpenGL ES 2.0 : Start Developing Now. Dan Ginsburg Advanced Micro Devices, Inc.

Similar documents
The Ultimate Developers Toolkit. Jonathan Zarge Dan Ginsburg

RenderMonkey 1.6. Natalya Tatarchuk ATI Research

Copyright Khronos Group Page 1

Programming Guide. Aaftab Munshi Dan Ginsburg Dave Shreiner. TT r^addison-wesley

Next Generation OpenGL Neil Trevett Khronos President NVIDIA VP Mobile Copyright Khronos Group Page 1

Shaders : the sky is the limit Sébastien Dominé NVIDIA Richard Stenson SCEA

Real - Time Rendering. Graphics pipeline. Michal Červeňanský Juraj Starinský

Siggraph Agenda. Usability & Productivity. FX Composer 2.5. Usability & Productivity 9/12/2008 9:16 AM

Pipeline Integration with FX Composer. Chris Maughan NVIDIA Corporation

The PowerVR Insider SDK. PowerVR Developer Technology

Mention driver developers in the room. Because of time this will be fairly high level, feel free to come talk to us afterwards

Adding Advanced Shader Features and Handling Fragmentation

PowerVR SDK & Tools. February 2017

Prospects for a more robust, simpler and more efficient shader cross-compilation pipeline in Unity with SPIR-V

GDC 2014 Barthold Lichtenbelt OpenGL ARB chair

EECS 487: Interactive Computer Graphics

Introduction to Shaders.

OpenGL Status - November 2013 G-Truc Creation

Accelerating Realism with the (NVIDIA Scene Graph)

CS GPU and GPGPU Programming Lecture 7: Shading and Compute APIs 1. Markus Hadwiger, KAUST

NVIDIA Developer Tools for Graphics and PhysX

Free Downloads OpenGL ES 3.0 Programming Guide

Press Briefing SIGGRAPH 2015 Neil Trevett Khronos President NVIDIA Vice President Mobile Ecosystem. Copyright Khronos Group Page 1

Cg Toolkit. Cg 2.0 May 2008 Release Notes

Whiz-Bang Graphics and Media Performance for Java Platform, Micro Edition (JavaME)

CS452/552; EE465/505. Finale!

Introduction. What s New in This Edition

RenderMonkey SDK Version 1.71

Hardware Accelerated Graphics for High Performance JavaFX Mobile Applications

Introduction to OpenGL ES 3.0

COMP371 COMPUTER GRAPHICS

PowerVR Series5. Architecture Guide for Developers

Cg Toolkit. Cg 2.0 January 2008 Release Notes

Mali Developer Resources. Kevin Ho ARM Taiwan FAE

OpenGL BOF Siggraph 2011

Tools To Get Great Graphics Performance

Graphics Performance Optimisation. John Spitzer Director of European Developer Technology

Real-Time Rendering (Echtzeitgraphik) Michael Wimmer

Working with Metal Overview

WebGL Meetup GDC Copyright Khronos Group, Page 1

Standards for WebVR. Neil Trevett. Khronos President Vice President Mobile Content,

Graphics Processing Unit Architecture (GPU Arch)

OpenGL on Android. Lecture 7. Android and Low-level Optimizations Summer School. 27 July 2015

Chapter Answers. Appendix A. Chapter 1. This appendix provides answers to all of the book s chapter review questions.

GPU Ray Tracing at the Desktop and in the Cloud. Phillip Miller, NVIDIA Ludwig von Reiche, mental images

Mobile Graphics Ecosystem. Tom Olson OpenGL ES working group chair

Introduction to the OpenGL Shading Language

The Application Stage. The Game Loop, Resource Management and Renderer Design

Programmable Graphics Hardware

Optimizing and Profiling Unity Games for Mobile Platforms. Angelo Theodorou Senior Software Engineer, MPG Gamelab 2014, 25 th -27 th June

Graphics Programming. Computer Graphics, VT 2016 Lecture 2, Chapter 2. Fredrik Nysjö Centre for Image analysis Uppsala University

NVIDIA Developer Toolkit. March 2005

Lecture 2. Shaders, GLSL and GPGPU

ATI RenderMonkey IDE Version 1.62

Today. Rendering - III. Outline. Texturing: The 10,000m View. Texture Coordinates. Specifying Texture Coordinates in GL

Module 13C: Using The 3D Graphics APIs OpenGL ES

A Trip Down The (2011) Rasterization Pipeline

Developer Tools. Robert Strzodka. caesar research center Bonn, Germany

NVIDIA FX Composer. Developer Presentation June 2004

Mobile graphics API Overview

NVIDIA Tools for Artists

SIGGRAPH Briefing August 2014

OGLES PVRVFrame. User Manual

Press Briefing SIGGRAPH 2015 Neil Trevett Khronos President NVIDIA Vice President Mobile Ecosystem. Copyright Khronos Group Page 1

Squeezing Performance out of your Game with ATI Developer Performance Tools and Optimization Techniques

Cg Toolkit. Cg 2.1 October 2008 Release Notes

What was removed? (1) OpenGL ES vs. OpenGL

OpenCL Press Conference

Copyright Khronos Group, Page 1

Pump Up Your Pipeline

Cg Toolkit. Cg 2.1 beta August 2008 Release Notes

Today s Agenda. DirectX 9 Features Sim Dietrich, nvidia - Multisample antialising Jason Mitchell, ATI - Shader models and coding tips

Dave Shreiner, ARM March 2009

X. GPU Programming. Jacobs University Visualization and Computer Graphics Lab : Advanced Graphics - Chapter X 1

developer.nvidia.com The Source for GPU Programming

Porting Roblox to Vulkan. Arseny

Shaders CSCI 4229/5229 Computer Graphics Fall 2017

ArcGIS Runtime: Maximizing Performance of Your Apps. Will Jarvis and Ralf Gottschalk

Grafica Computazionale: Lezione 30. Grafica Computazionale. Hiding complexity... ;) Introduction to OpenGL. lezione30 Introduction to OpenGL

What s New with GPGPU?

CS GPU and GPGPU Programming Lecture 2: Introduction; GPU Architecture 1. Markus Hadwiger, KAUST

Shaders CSCI 4239/5239 Advanced Computer Graphics Spring 2014

DEVELOPER DAY MONTRÉAL APRIL Copyright Khronos Group Page 1

NVSG NVIDIA Scene Graph

Broken Age's Approach to Scalability. Oliver Franzke Lead Programmer, Double Fine Productions

Copyright Khronos Group, Page Graphic Remedy. All Rights Reserved

GoForce 3D: Coming to a Pixel Near You

Open Standards for Today s Gaming Industry

GPGPU on Mobile Devices

Introduction to the Direct3D 11 Graphics Pipeline

WebGL (Web Graphics Library) is the new standard for 3D graphics on the Web, designed for rendering 2D graphics and interactive 3D graphics.

CSE 591: GPU Programming. Introduction. Entertainment Graphics: Virtual Realism for the Masses. Computer games need to have: Klaus Mueller

Copyright Khronos Group 2012 Page 1. OpenCL 1.2. August 2012

NVIDIA Authoring Tools for

Graphics Hardware. Graphics Processing Unit (GPU) is a Subsidiary hardware. With massively multi-threaded many-core. Dedicated to 2D and 3D graphics

Programming shaders & GPUs Christian Miller CS Fall 2011

Achieving High-performance Graphics on Mobile With the Vulkan API

Shader Series Primer: Fundamentals of the Programmable Pipeline in XNA Game Studio Express

Programming Graphics Hardware

Shader Programming CgFX, OpenGL 2.0. Michael Haller 2003

Transcription:

OpenGL ES 2.0 : Start Developing Now Dan Ginsburg Advanced Micro Devices, Inc.

Agenda OpenGL ES 2.0 Brief Overview Tools OpenGL ES 2.0 Emulator RenderMonkey w/ OES 2.0 Support OpenGL ES 2.0 3D Engine Case Study

What is OpenGL ES 2.0? OpenGL for Embedded Systems OpenGL ES 2.0 Fully shader-based Based on ES Shading Language Draft spec released at SIGGRAPH 05 Spec ratified and released at GDC 07

OpenGL ES 2.0 Widespread Industry Support OpenGL ES 2.0 support announced from many companies: AMD NVIDIA Imagination Technologies ARM...and more OpenGL ES 2.0 will become ubiquitous

ES 2.0 The Problem for Game Developers Developers need to develop their game engines in advance of new hardware No hardware available today OpenGL ES 2.0 may require handheld developers to change their engines significantly Shader-based API moves more burden to the application Enables more flexibility through programmability

ES 2.0 A Development Solution OpenGL ES 2.0 Emulator OpenGL ES 2.0 implementation for Win32 Allows developers to write their engines in advance of hardware OpenGL ES 2.0 RenderMonkey Develop OpenGL ES 2.0 shaders and effects

OpenGL ES 2.0 Emulator

OpenGL ES 2.0 Emulator Goals Provide an OpenGL ES 2.0 development environment on the PC Minimize porting effort once hardware is available Leverage features/performance of desktop hardware

OpenGL ES 2.0 Emulator What is it? OpenGL ES 2.0 libglesv2x.dll + lib EGL 1.3 libegl.dll + lib Khronos standard header files Example programs Utilizes desktop hardware for rendering Requires desktop OpenGL 2.0 hardware

OpenGL ES 2.0 Emulator Usage Overview Application Win32 Application Includes: GLES2/gl2.h EGL/egl.h libglesv2x.dll libegl.dll Links Against: libglesv2x.lib libegl.lib Emulator: Implements ES 2.0 API plus extensions Implements EGL 1.3 API

OpenGL ES 2.0 Emulator - Features OpenGL ES 2.0 Core API Full OpenGL ES 2.0 Implementation Optional Extensions: 10.10.10.2 Vertex/Texture Data FP16 Vertices and Textures 3D and Non-Power-2 Textures Compressed Texture Formats ETC1, ETC3, ETC5, ATI_TC Occlusion and Conditional Queries Depth Textures

OpenGL ES 2.0 Demo

OpenGL ES 2.0 Emulator Enables Developers More than just a prototyping tool Graphics code should move over easily from emulator to real hardware Mirrors top tier handheld developer approaches Prototype on the PC Move to handheld device as a final step

OpenGL ES 2.0 Emulator Contact devrel@amd.com for more information PowerVR also provides an emulator and SDK: http://www.powervrinsider.com

Render Monkey OpenGL ES 2.0 Support

What is RenderMonkey? Shader Development Environment Rapid Prototyping of Shader Effects Multiple Shading Languages OpenGL ES Shading Language OpenGL Shading Language DirectX HLSL DirectX Assembler

RenderMonkey Why use it? Full IDE for shader effect development Programmer and artist view for rapid iteration Easy integration into game pipeline Plug-in SDK for custom import/export Effects, models, textures, variables, etc. Support for many standard formats DDS, BMP, TGA, X, OBJ, 3DS, FX Encompasses all effect resources Render state, texture state, variables, render targets, textures, models, etc

RenderMonkey What s new? Support for OpenGL ES 2.0 ES Shading Language v1.00 ES syntax highlighting ES render/sampler states Large suite of ES examples User editable vertex attribute names

RenderMonkey What is Different with ES Shaders? Generic vertex attributes User varyings

RenderMonkey What is Different with ES Shaders? Most built-in uniforms removed e.g. gl_modelviewmatrix RenderMonkey provides equivalent user named uniforms Default precision qualifier required for FS Various limitations: Loop constructs Relative addressing Extension enabling with #extension: 3D Textures, derivatives

RenderMonkey What is Different with ES Effects? Reduced render state Alpha test must be done with discard No polygon fill mode No fixed-function state: fog, point size, etc. Reduced sampler state Less texture wrap modes No fixed-function LOD bias No texture border color

RenderMonkey - Demo

OpenGL ES 2.0 3D Engine Case Study

Sushi Demo Engine AMD s Demo Engine Support for: DX9 DX10 OpenGL OpenGL ES 2.0

Key Challenges Designing an engine to target multiple APIs with different feature sets Designing a shader-based engine Platform compatibility Large variance in handheld platform capabilities Limitations make portability a challenge

Abstracting the Graphics API Challenge: what level to abstract the 3D API? Support all features of all APIs? Support common set of features? How to handle different shading languages?

State of the APIs - 2005 10.10.10 vertex data FP16 vertex data Multisample RT s R/RG texture formats Common Features AA Lines/Points Edge Flags Polygon Fill Modes Texture borders Two-side polygons DX9 OGL In 2005, we abstracted the DX9 feature set. We used extensions to support missing features in OpenGL.

State of the APIs - 2007 OES2 DX9 OGL DX10 The choice is no longer so easy. Especially if you add game consoles to the mix

Abstracting the API How We Decided Driven by requirements: Demos must use the latest features of all APIs Exposing the lowest-common denominator not an option Running the same demo on each API not a requirement Let content drive the feature set rather than the API abstraction

Abstracting the API What We Did Our API abstraction looks a lot like DX10 Resources Views Geometry Shaders Stream Out All the latest and greatest features Each API implementation supports a subset of these features

API Abstraction Fallback Paths Demo Engine is based off a scripting system using Lua Lua script provides fallback rendering paths. Trade off: High end features vs. Content portability For Sushi, this was a fair tradeoff to make It might not be for you

Sushi - Effect System Encapsulate essential information about rendering techniques Essential part of shader-based engine Develop our own? Use someone else s? Microsoft.FX COLLADA FX CgFX At the time, no existing solution fully fit our requirements

Sushi Effect System Goals Multiple API / Shading Language Support HLSL, GLSL, ES SL Flexible support for advanced rendering techniques The effect system is the foundation that all the demos are built on

Sushi Effects Cross-API Effect System Expresses the following data: Shaders Render State Passes Techniques Variable Bindings Similar to Microsoft.FX, but multiple API support

Shader Authoring Many of our shaders authored in HLSL Needed a way to convert to: OpenGL Shading Language OpenGL ES Shading Lanauge Wrote a tool for this purpose: HLSL2GLSL

HLSL2GLSL Command-line tool and library Converts SM 3.0 HLSL shaders to: GLSL v1.10.59 shaders ES SL v1.00 shaders Open-source: http://sourceforge.net/projects/hlsl2glsl Very flexible BSD license

Sushi Platform Portability Handheld platforms have many constraints: Examples: No Standard Template Library No C++ Exceptions Manual Cleanup Stack Incomplete Standard Libraries Limited Memory Footprint No Floating Point Unit

Sushi - Portability Standard abstraction layers Math, I/O, Memory, Window, etc. Custom template classes Lists, vectors, maps, etc. Constrained use of C++ No exceptions No STL

Summary Tools OpenGL ES 2.0 Emulator RenderMonkey w/ OES 2.0 Support OpenGL ES 2.0 3D Engine Case Study Graphics API Abstraction Effects System Portability

Questions? dan.ginsburg@amd.com