├── Documentation
├── Architecture Guides
│ ├── PowerVR Hardware.Architecture Overview for Developers.pdf
│ ├── PowerVR Performance Recommendations.The Golden Rules.pdf
│ ├── PowerVR.Performance Recommendations.pdf
│ └── PowerVR.Supported Extensions.OpenGL ES.EGL.pdf
├── SDKBrowser
│ ├── Contact.html
│ ├── Documentation.html
│ ├── Examples.html
│ ├── Framework.html
│ ├── GettingStarted.html
│ ├── Home.html
│ ├── Licence.html
│ ├── PowerVRTools.html
│ ├── ReleaseNotes.html
│ ├── WebGL.html
│ ├── images
│ │ ├── ExamplesPageGraphic.png
│ │ ├── PVRGeoPOD_300x182.png
│ │ ├── PVRHub_300x182.png
│ │ ├── PVRMonitor_300x182.png
│ │ ├── PVRScope_300x182.png
│ │ ├── PVRShaderEditor_300x182.png
│ │ ├── PVRShaman_300x182.png
│ │ ├── PVRTexTool_300x182.png
│ │ ├── PVRTrace_300x182.png
│ │ ├── PVRTune_300x182.png
│ │ ├── PVRVFrame_300x182.png
│ │ ├── PVRlogo.png
│ │ ├── PowerVRFrameworkComponents.png
│ │ ├── WelcomeGraphic.png
│ │ ├── img-footer-logo-grey.png
│ │ └── img-icon.png
│ └── style.css
└── Specifications
│ ├── PFX Language Format.Specification.pdf
│ ├── POD File Format.Specification.pdf
│ ├── PVR File Format.Specification.Legacy.pdf
│ └── PVR File Format.Specification.pdf
├── Examples
├── Advanced
│ └── Water
│ │ ├── FragShader.fsh
│ │ ├── Media
│ │ ├── Island Height Map3.2.png
│ │ ├── NewNormalMap.png
│ │ ├── ThickCloudsWaterBack2048.png
│ │ ├── ThickCloudsWaterDown2048.png
│ │ ├── ThickCloudsWaterFront2048.png
│ │ ├── ThickCloudsWaterLeft2048.png
│ │ ├── ThickCloudsWaterRight2048.png
│ │ ├── ThickCloudsWaterUp2048.png
│ │ ├── coins-specular.png
│ │ ├── coins.png
│ │ ├── crate.png
│ │ ├── flag.png
│ │ ├── galleon-sails.png
│ │ ├── galleon.png
│ │ ├── mountain1.png
│ │ ├── mountain2.png
│ │ ├── mountain3.png
│ │ ├── mountain4.png
│ │ ├── mountain5.png
│ │ ├── mountain6.png
│ │ ├── palmleaf.png
│ │ ├── sail.png
│ │ ├── sand.png
│ │ ├── scene.max
│ │ └── wood.png
│ │ ├── ModelFShader.fsh
│ │ ├── ModelVShader.vsh
│ │ ├── PlaneTexFShader.fsh
│ │ ├── PlaneTexVShader.vsh
│ │ ├── Scene.pod
│ │ ├── SkyboxFShader.fsh
│ │ ├── SkyboxVShader.vsh
│ │ ├── Tex2DFShader.fsh
│ │ ├── Tex2DVShader.vsh
│ │ ├── VertShader.vsh
│ │ ├── Water.png
│ │ ├── Water.txt
│ │ ├── WebGLWater.js
│ │ ├── coins-specular.pvr
│ │ ├── coins.pvr
│ │ ├── crate.pvr
│ │ ├── flag.pvr
│ │ ├── galleon-sails.pvr
│ │ ├── galleon.pvr
│ │ ├── index.html
│ │ ├── normalmap.pvr
│ │ ├── palmleaf.pvr
│ │ ├── sand.pvr
│ │ ├── skybox.pvr
│ │ └── wood.pvr
├── Beginner
│ ├── 01_HelloAPI
│ │ ├── HelloAPI.png
│ │ ├── HelloAPI.txt
│ │ ├── WebGLHelloAPI.js
│ │ └── index.html
│ ├── 02_IntroducingPVRShell
│ │ ├── IntroducingPVRShell.png
│ │ ├── IntroducingPVRShell.txt
│ │ ├── WebGLIntroducingPVRShell.js
│ │ └── index.html
│ ├── 03_Texturing
│ │ ├── Texturing.png
│ │ ├── Texturing.txt
│ │ ├── WebGLTexturing.js
│ │ └── index.html
│ ├── 04_BasicTnL
│ │ ├── BasicTnL.png
│ │ ├── BasicTnL.txt
│ │ ├── WebGLBasicTnL.js
│ │ └── index.html
│ ├── 05_IntroducingPVRTools
│ │ ├── FragShader.fsh
│ │ ├── Image.pvr
│ │ ├── IntroducingPVRTools.png
│ │ ├── IntroducingPVRTools.txt
│ │ ├── Media
│ │ │ └── image.png
│ │ ├── VertShader.vsh
│ │ ├── WebGLIntroducingPVRTools.js
│ │ └── index.html
│ ├── 06_IntroducingPrint3D
│ │ ├── FragShader.fsh
│ │ ├── IntroducingPrint3D.png
│ │ ├── IntroducingPrint3D.txt
│ │ ├── Text.txt
│ │ ├── VertShader.vsh
│ │ ├── WebGLIntroducingPrint3D.js
│ │ ├── arial_36.pvr
│ │ ├── index.html
│ │ ├── starjout_60.pvr
│ │ └── title_36.pvr
│ └── 07_IntroducingPOD
│ │ ├── FragShader.fsh
│ │ ├── IntroducingPOD.png
│ │ ├── IntroducingPOD.txt
│ │ ├── Media
│ │ ├── scene.max
│ │ ├── tex_arm.png
│ │ └── tex_base.png
│ │ ├── Scene.pod
│ │ ├── VertShader.vsh
│ │ ├── WebGLIntroducingPOD.js
│ │ ├── index.html
│ │ ├── tex_arm.pvr
│ │ └── tex_base.pvr
└── Intermediate
│ └── RenderToTexture
│ ├── FragShader.fsh
│ ├── Media
│ ├── MaskAndBox.max
│ └── YellowWood.png
│ ├── RenderToTexture.png
│ ├── RenderToTexture.pod
│ ├── RenderToTexture.txt
│ ├── VertShader.vsh
│ ├── WebGLRenderToTexture.js
│ ├── YellowWood.pvr
│ └── index.html
├── LICENSE_POWERVR_SDK.txt
├── README.md
├── SDKBrowser.html
├── Shell
├── PVRShell.js
└── style.css
└── Tools
├── Media
├── PVRPrint3DFont.pvr
└── PVRPrint3DLogo.pvr
├── PVRAnimation.js
├── PVRFileStream.js
├── PVRMaths.js
├── PVRMesh.js
├── PVRModel.js
├── PVRPODLoader.js
├── PVRPrint3D.js
├── PVRShader.js
└── PVRTexture.js
/Documentation/Architecture Guides/PowerVR Hardware.Architecture Overview for Developers.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/powervr-graphics/WebGL_SDK/bb78e5345e22194c23863eec6f66e667df213f56/Documentation/Architecture Guides/PowerVR Hardware.Architecture Overview for Developers.pdf
--------------------------------------------------------------------------------
/Documentation/Architecture Guides/PowerVR Performance Recommendations.The Golden Rules.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/powervr-graphics/WebGL_SDK/bb78e5345e22194c23863eec6f66e667df213f56/Documentation/Architecture Guides/PowerVR Performance Recommendations.The Golden Rules.pdf
--------------------------------------------------------------------------------
/Documentation/Architecture Guides/PowerVR.Performance Recommendations.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/powervr-graphics/WebGL_SDK/bb78e5345e22194c23863eec6f66e667df213f56/Documentation/Architecture Guides/PowerVR.Performance Recommendations.pdf
--------------------------------------------------------------------------------
/Documentation/Architecture Guides/PowerVR.Supported Extensions.OpenGL ES.EGL.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/powervr-graphics/WebGL_SDK/bb78e5345e22194c23863eec6f66e667df213f56/Documentation/Architecture Guides/PowerVR.Supported Extensions.OpenGL ES.EGL.pdf
--------------------------------------------------------------------------------
/Documentation/SDKBrowser/Contact.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
52 |
Contact Details
53 |
Forum
54 |
For further support, please visit our forum.
55 |
Support and Ticketing System
56 |
Alternatively, file a ticket in our support system.
57 |
PowerVR Insider
58 |
To learn more about our PowerVR Graphics SDK and Insider programme, please visit our community webpages.
59 |
General Enquiries
60 |
For general enquiries, please visit our corporate website.
61 |
62 |
Further Contact Info
63 | Imagination Technologies Ltd.
64 | Home Park Estate
65 | Kings Langley
66 | Hertfordshire, WD4 8LZ
67 | United Kingdom
68 |
Tel: +44 (0)1923 260511
69 |
Fax: +44 (0)1923 277463
70 |
71 |
52 |
Documentation
53 |
This page provides a list of documents relevant to the SDK, including architecture guides, specifications and whitepapers. These documents are also accessible from the Documentation folder.
54 |
55 |
Architecture Guides | Specifications | Whitepapers
56 |
57 |
58 |
Architecture Guides
59 |
65 |
66 |
67 |
68 |
Specifications
69 |
75 |
76 |
77 |
78 |
Whitepapers
79 |
90 |
91 |
92 |
52 |
Framework
53 |
Contents: Overview | Building | Creating an Application | Guidelines and Recommendations
54 |
55 |
56 |
Overview
57 |
The PowerVR Framework is a complete framework source code, re-written from scratch and targeted for all major platforms, such as Windows, Linux, and OS X, as well as Android and iOS mobile platforms. The key strength of the PowerVR Framework is that it is platform-agnostic, meaning that with the same code, it is possible to compile for different platforms without changing source code.
58 |
The majority of the code is written in C++ and tested across different compilers (namely Visual Studio 2010, GNU Compiler Collection and Clang) using modern styling and in general provides a complete framework for application development. There is also the supporting per-platform code (Objective-C code for iOS and OS X, some Java code for Android, etc.), and project files.
59 |
The Framework consists of separate libraries that are divided by functionality, as shown in the figure below. These modules are provided to be compiled as static libraries, but you can choose to use them differently, if needed.
60 |

61 |
PVRCore
62 |
63 |
This is the supporting code of the library to leverage for your own use. PVRCore is also used by the rest of the Framework and because of that, all examples using any other part of the Framework should link with PVRCore.
64 |
PVRAssets
65 |
66 |
This is the Framework’s asset code. It includes classes and helpers for scene representation, asset loading code, etc. PVRAssets supports the loading of POD files, PVR and PFX materials format, as well as limited support for a number of texture formats.
67 |
PVRShell
68 |
69 |
This is the native system abstraction (event loops, surfaces, windows, etc.) which greatly simplifies cross-platform compatibility. Essentially, PVRShell provides you with useful scaffolding for cross-platform development.
70 |
PVRApi
71 |
72 |
This is the actual Graphics API abstraction. PVRApi is a very powerful framework that allows cross-API development. In combination with PVRShell, this provides remarkable support to write code intended to run across different platforms, utilizing different APIs.
73 |
PVRPlatformGlue
74 |
75 |
This helper project provides necessary abstraction between the underlying system (PVRShell) and graphics API (PVRApi).
76 |
PVRUIRenderer
77 |
78 |
This text and image 3D printing code can also be used as a text or sprite renderer code. It is built on top of PVRApi, making it inherently API-agnostic and contains code for using different parts of fonts to display text.
79 |
PVRCamera
80 |
81 |
This is the code for interfacing with the camera of mobile platforms.
82 |
83 |
84 |
85 |
Building
86 |
All PowerVR examples for all platforms will build the PowerVR Framework libraries they require. If you use them, or base your own code on them, you should not need to have to build the Framework separately. The PowerVR SDK usually also contains pre-built versions of the libraries in the folder [SDK]/Framework/Bin/[Platform], where [SDK] is the SDK root and [Platform] is the name of your platform of interest - this is where you would normally link.
87 |
All modules can be built separately, by navigating to [SDK]/Framework/[ModuleName]/Build/[Platform], where [ModuleName] is the name of the specific module of the PowerVR Framework. You can then run a build command as normal for that platform, although this is not required, as building the examples automatically builds the Framework.
88 |
89 |
90 |
91 |
Creating an Application
92 |
To create a typical application, please follow these steps:
93 |
94 | - Firstly, either build the Framework components previously mentioned (by moving to the corresponding /Builds/[Platform] or add their build scripts and projects to your own
95 | - Create a project or build script (Visual Studio, Makefile, etc.) for your platform. We suggest taking one of the scripts from the following location as base:
96 | Examples/[Intermediate/Advanced]/[API]/Builds/[Platform], where [Intermediate/Advanced] is the folder for either the intermediate or advanced example applications supplied with the SDK. In more detail:
97 |
98 | - Add include directories:
99 |
100 | - /Framework
101 | - /Builds/Include
102 |
103 | - Add library directories:
104 |
105 | - Framework/Bin/[Platform]
106 | - (Optional) /Builds/[Platform]/Lib
107 |
108 | - Link against static libraries:
109 |
110 | - (Optional) PVRUIRenderer
111 | - PVR[API]
112 | - PVRPlatformGlue
113 | - PVRShell
114 | - PVRAssets
115 | - PVRCore
116 |
117 |
118 | - Create your application files. For a single CPP file, your includes will usually be:
119 |
120 | - PVRShell/PVRShell.h
121 | - PVRApi/PVRApi.h
122 | - PVRApi/AssetManager.h (if you plan to use the AssetManager for loading)
123 | - PVRUIRenderer/PVRUIRenderer.h (if you plan to use the UIRenderer)
124 |
125 | - Write the skeleton of your application (see description of PVRShell)
126 |
127 |
128 |
129 |
130 |
Guidelines and Recommendations
131 |
Below are a set of guidelines and recommendations you might want to consider when using PowerVR Framework:
132 |
133 | - If you need to use the native API (for example OpenGL ES), we recommend using the header PVRApi/[API]/[API]Bindings.h. This is a specially crafted binding for your specific API. For example, for OpenGL ES, OpenGLESBindings.h it will provide you with a set of function pointers conveniently placed in the gl::namespace. These functions follow the OpenGL ES specification, and can be called normally e.g. gl::MapBuffer(…). These function pointers get populated at runtime, allowing a unified entry point to the native API. Similarly, a set of function pointers for extensions are present in the glext namespace. The function pointers get populated at initialisation time, but their use can be queried per-context, at runtime.
134 | - Add an AssetManager member to your class and use it for loading Models, Textures, Shaders and other files that may be duplicated. The AssetManager will cache files and make sure you do not double-load files. Initialize the AssetManager with your application class ((initialise(*this)), and use it to one-step load Textures, Models, Shaders and other objects that will have to be read from disc.
135 | - The pvr::assets::Model class contains all the information you need for drawing, including cameras, lights, and potentially effects. Follow one of the PowerVR SDK examples (e.g. IntroducingPOD and IntroducingPFX) to understand its basic use, including getting out of a Model the information about the data layouts of its Meshes, etc.
136 | - Many utility functions and methods are built-in, so that you can easily cover most common use cases. For example:
137 |
138 | - getLayoutIntoPipeline function allows you to quickly match a Mesh to a specific custom shader by providing what your shader's "required semantics" are and at which binding points (attributes) to assign these. This function will add the entire vertex definition to the pipeline descriptor.
139 | - This same functionality allows you to simply copy the whole data of the Mesh into a VBO, bind it and draw.
140 |
141 |
142 |
143 |
144 |
51 |

52 |
The PowerVR SDK includes source code, example applications, tutorials and documentation. For further details regarding your SDK installation, please visit the Getting Started page.
53 |
The Examples page features a range of methods from initialising the API through to complex 3D graphics techniques. Many of these take advantage of our Framework which includes a range of modules available as source libraries.
54 |
We've also supplied a range of documents which can be accessed from the Documentation page. These documents include the relevant list of architecture guides, specifications, user manuals and whitepapers.
55 |
Additional information is provided in this browser regarding the PowerVR Tools, which are suite of utilities for rapid graphics application development (see PowerVR Tools page). A Release Notes page is also present, detailing what's changed in this release of the PowerVR Tools and SDK.
56 |
Developers can join the PowerVR Insider programme and interact with our online Community at www.powervrinsider.com. Also visit our Contact page for further details on how to get in touch with us.
57 |
58 |
59 |
52 |
End User License Agreement (EULA)
53 |
PowerVR SDK
54 |
The PowerVR SDK consists of the Framework and example source code as well as documentation. The PowerVR SDK is covered by the highly-permissive MIT licence. The license allows you to make full, unrestrictive use of the PowerVR SDK. Please click here to view the "PowerVR SDK Software End User License Agreement".
55 |
PowerVR Tools
56 |
The PowerVR Tools is our suite of utilities that includes Profiling Compilers, PVRGeoPOD, PVRHub, PVRMonitor, PVRScope, PVRShaderEditor, PVRShaman, PVRTexTool, PVRTrace, PVRTune and PVRVFrame. The PowerVR Tools is covered by a free licence, which allows you to use our PowerVR Tools subject to the terms of the "PowerVR Tools Software End User License Agreement". Please click here to view the agreement.
57 |
FAQ
58 |
Frequently asked questions about the PowerVR SDK Software EULA and PowerVR Tools Software EULA can be found here.
59 |
60 |
52 |
PowerVR Tools
53 |
Our suite of utilities is designed to enable rapid graphics application development. It targets a range of areas including asset exporting and optimization, PC emulation, prototyping environments, online and offline performance analysis tools and many more.
54 |
Each utility supports Windows, OS X and Linux. The minimum requirements are as follows (older versions might still work but limited support will be provided):
55 |
56 | - Windows 7
57 | - OS X – An Intel based machine with 10.8 (Mountain Lion)
58 | - Linux – Ubuntu 12.04
59 |
60 |
Some utilities may have additional requirements, such as minimum version of OpenGL. For more information, please refer to the webpage of the utility you are interested in.
61 |
62 |
Asset Deployment Utilities | Development Utilities | Performance Analysis Utilities
63 |
64 |
Asset Deployment Utilities
65 |
66 | -
67 |
68 | PVRTexTool
69 | This is a texture compression tool that supports all OpenGL, OpenGL ES and DirectX formats as well as PowerVR compression formats (PVRTC).
70 | Find out more about PVRTexTool
71 |
72 | -
73 |
74 | PVRGeoPOD
75 | An exporter tool that facilitates exporting 3D scenes and their associated geometry data to the PowerVR Object Data (POD) optimized format.
76 | Find out more about PVRGeoPOD
77 |
78 |
79 |
80 |
81 |
82 |
Development Utilities
83 |
84 | -
85 |
86 | PVRShaman
87 | This is a shader composer that uses PowerVR Object Data (POD) files and the PowerVR Effects (PFX) format to enable visual prototyping and profiling of shaders for OpenGL ES 2.0 and 3.0.
88 | Find out more about PVRShaman
89 |
90 | -
91 |
92 | PVRVFrame
93 | A collection of libraries that emulate OpenGL ES 1.x, 2.0, 3.0 and 3.1 as well as PowerVR extensions on development machines that do not natively support these Khronos APIs.
94 | Find out more about PVRVFrame
95 |
96 | -
97 |
98 | PVRShaderEditor
99 | An editing tool to rapidly develop and optimize shaders for PowerVR graphics cores. PVRShaderEditor integrates our off-line GLSL ES compilers to enable as-you-type performance estimates.
100 | Find out more about PVRShaderEditor
101 |
102 |
103 |
104 |
105 |
140 |
141 |