OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf ·...
Transcript of OpenGL ES 2.0 : Start Developing Nowtwvideo01.ubm-us.net/o1/vault/gdc07/slides/S4547i1.pdf ·...
![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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/1.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/3.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/4.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/5.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/6.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/7.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/8.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/14.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/15.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/18.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/19.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/20.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/21.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/22.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/23.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/24.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/25.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/26.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/27.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/28.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/29.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/30.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/31.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/32.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/33.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/34.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/35.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/36.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/37.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/38.jpg)
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](https://reader033.fdocuments.in/reader033/viewer/2022042812/5fa8e05a0efbc81c2d67eb08/html5/thumbnails/39.jpg)
Summary
ToolsOpenGL ES 2.0 EmulatorRenderMonkey w/ OES 2.0 Support
OpenGL ES 2.0 3D Engine Case StudyGraphics API AbstractionEffects SystemPortability