opengl es 2.0 : start developing nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/s4547i1.pdf ·...

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

Upload: others

Post on 11-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

OpenGL ES 2.0 : Start Developing Now

Dan GinsburgAdvanced Micro Devices, Inc.

Page 2: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

Agenda

OpenGL ES 2.0Brief Overview

ToolsOpenGL ES 2.0 EmulatorRenderMonkey w/ OES 2.0 Support

OpenGL ES 2.0 3D Engine Case Study

Page 3: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

What is OpenGL ES 2.0?

OpenGL for Embedded SystemsOpenGL ES 2.0

Fully shader-basedBased on ES Shading LanguageDraft spec released at SIGGRAPH 05Spec ratified and released at GDC 07

Page 4: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

OpenGL ES 2.0 – Widespread Industry Support

OpenGL ES 2.0 support announced from many companies:

AMDNVIDIAImagination TechnologiesARM...and more…

OpenGL ES 2.0 will become ubiquitous

Page 5: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

ES 2.0 – The Problem for Game Developers

Developers need to develop their game engines in advance of new hardwareNo hardware available todayOpenGL ES 2.0 may require handheld developers to change their engines significantly

Shader-based API moves more burden to the applicationEnables more flexibility through programmability

Page 6: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

ES 2.0 – A Development Solution

OpenGL ES 2.0 EmulatorOpenGL ES 2.0 implementation for Win32Allows developers to write their engines in advance of hardware

OpenGL ES 2.0 RenderMonkeyDevelop OpenGL ES 2.0 shaders and effects

Page 7: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

OpenGL ES 2.0 Emulator

Page 8: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

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

Page 9: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

OpenGL ES 2.0 Emulator –What is it?

OpenGL ES 2.0 – libGLESv2x.dll + libEGL 1.3 – libEGL.dll + libKhronos standard header filesExample programsUtilizes desktop hardware for rendering

Requires desktop OpenGL 2.0 hardware

Page 10: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

OpenGL ES 2.0 Emulator –Usage Overview

Win32 Application Includes:•GLES2/gl2.h•EGL/egl.h

Links Against:•libGLESv2x.lib•libEGL.lib

Emulator:•Implements ES 2.0 APIplus extensions•Implements EGL 1.3 API

libGLESv2x.dll libEGL.dll

Application

Page 11: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

OpenGL ES 2.0 Emulator -Features

OpenGL ES 2.0 Core APIFull OpenGL ES 2.0 Implementation

Optional Extensions:10.10.10.2 Vertex/Texture DataFP16 Vertices and Textures3D and Non-Power-2 TexturesCompressed Texture Formats

ETC1, ETC3, ETC5, ATI_TCOcclusion and Conditional QueriesDepth Textures

Page 12: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

OpenGL ES 2.0 – Demo

Page 13: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

OpenGL ES 2.0 Emulator –Enables Developers

More than just a prototyping toolGraphics code should move over easily from emulator to real hardware

Mirrors top tier handheld developer approaches

Prototype on the PCMove to handheld device as a final step

Page 14: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

OpenGL ES 2.0 Emulator

Contact [email protected] for more information

PowerVR also provides an emulator and SDK:

http://www.powervrinsider.com

Page 15: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

Render Monkey – OpenGL ES 2.0 Support

Page 16: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

What is RenderMonkey?

Shader Development EnvironmentRapid Prototyping of Shader Effects

Multiple Shading LanguagesOpenGL ES Shading LanguageOpenGL Shading LanguageDirectX HLSLDirectX Assembler

Page 17: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

RenderMonkey – Why use it?

Full IDE for shader effect developmentProgrammer and artist view for rapid iteration

Easy integration into game pipelinePlug-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 resourcesRender state, texture state, variables, render targets, textures, models, etc…

Page 18: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

RenderMonkey – What’s new?

Support for OpenGL ES 2.0ES Shading Language v1.00ES syntax highlightingES render/sampler statesLarge suite of ES examplesUser editable vertex attribute names

Page 19: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

RenderMonkey – What is Different with ES Shaders?Generic vertex attributesUser varyings

Page 20: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

RenderMonkey – What is Different with ES Shaders?Most built-in uniforms removed

e.g. gl_ModelViewMatrixRenderMonkey provides equivalent user named uniforms

Default precision qualifier required for FSVarious limitations:

Loop constructsRelative addressing

Extension enabling with #extension:3D Textures, derivatives

Page 21: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

RenderMonkey – What is Different with ES Effects?

Reduced render stateAlpha test must be done with discardNo polygon fill modeNo fixed-function state: fog, point size, etc.

Reduced sampler stateLess texture wrap modesNo fixed-function LOD biasNo texture border color

Page 22: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

RenderMonkey - Demo

Page 23: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

OpenGL ES 2.0 – 3D Engine Case Study

Page 24: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

Sushi Demo Engine

AMD’s Demo Engine Support for:

DX9DX10OpenGL OpenGL ES 2.0

Page 25: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

Key Challenges

Designing an engine to target multiple APIs with different feature setsDesigning a shader-based enginePlatform compatibility

Large variance in handheld platform capabilitiesLimitations make portability a challenge

Page 26: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

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?

Page 27: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

State of the APIs - 2005

OGLOGLDX9DX9

AA Lines/PointsEdge FlagsPolygon Fill ModesTexture bordersTwo-side polygons…

Common Features10.10.10 vertex dataFP16 vertex dataMultisample RT’sR/RG texture formats…

•In 2005, we abstracted the DX9 feature set.•We used extensions to support missing features in OpenGL.

Page 28: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

State of the APIs - 2007OES2OES2

OGLOGL

DX10DX10

DX9DX9

•The choice is no longer so easy.•Especially if you add game consoles to the mix…

Page 29: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

Abstracting the API – How We Decided

Driven by requirements:Demos must use the latest features of all APIsExposing the lowest-common denominator not an option

Running the same demo on each API not a requirementLet content drive the feature set rather than the API abstraction

Page 30: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

Abstracting the API – What We Did

Our API abstraction looks a lot like DX10ResourcesViewsGeometry ShadersStream OutAll the latest and greatest features…

Each API implementation supports a subset of these features

Page 31: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

API Abstraction – Fallback Paths

Demo Engine is based off a scripting system using LuaLua script provides fallback rendering paths.Trade off: High end features vs. Content portability

For Sushi, this was a fair tradeoff to makeIt might not be for you…

Page 32: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

Sushi - Effect System

Encapsulate essential information about rendering techniquesEssential part of shader-based engine

Develop our own?Use someone else’s?

Microsoft .FXCOLLADA FXCgFX

At the time, no existing solution fully fit our requirements

Page 33: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

Sushi – Effect System Goals

Multiple API / Shading Language SupportHLSL, GLSL, ES SL

Flexible support for advanced rendering techniques

The effect system is the foundation that all the demos are built on

Page 34: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

Sushi Effects – Cross-API Effect System

Expresses the following data:ShadersRender StatePassesTechniquesVariable Bindings

Similar to Microsoft .FX, but multiple API support

Page 35: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

Shader Authoring

Many of our shaders authored in HLSLNeeded a way to convert to:

OpenGL Shading LanguageOpenGL ES Shading Lanauge

Wrote a tool for this purpose:HLSL2GLSL

Page 36: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

HLSL2GLSL

Command-line tool and libraryConverts SM 3.0 HLSL shaders to:

GLSL v1.10.59 shadersES SL v1.00 shaders

Open-source:http://sourceforge.net/projects/hlsl2glslVery flexible BSD license

Page 37: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

Sushi – Platform Portability

Handheld platforms have many constraints:

Examples:No Standard Template LibraryNo C++ ExceptionsManual Cleanup StackIncomplete Standard LibrariesLimited Memory FootprintNo Floating Point Unit

Page 38: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

Sushi - Portability

Standard abstraction layersMath, I/O, Memory, Window, etc.

Custom template classesLists, vectors, maps, etc.

Constrained use of C++No exceptionsNo STL

Page 39: OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf · 2009-01-05 · RenderMonkey – Why use it?!Full IDE for shader effect development!Programmer

Summary

ToolsOpenGL ES 2.0 EmulatorRenderMonkey w/ OES 2.0 Support

OpenGL ES 2.0 3D Engine Case StudyGraphics API AbstractionEffects SystemPortability