PowerVR Insider SDK Documentation
PowerVR Performance Recommendations
PowerVR SGX Series5/5XT and Series6 are families of GPU cores from Imagination Technologies designed specifically for shader-based APIs like OpenGL ES 2.0. Due to its scalable architecture, the SGX family spans a huge performance range. This document contains recommendations and advice for developers who wish to use version 2.0 of the OpenGL ES API on PowerVR SGX enabled devices.
PVR File Format Specification
The file format specification for Version 3 of the PVR File Format used by PVRTexLib and PVRTexTool.
PVRTC & Texture Compression
Texture compression is an important tool in the arsenal of developers that, due to its many
advantages over uncompressed formats, should be used whenever it is feasible to do so. This
document contains a brief explanation of why texture compression should be used as well as an
introduction to PowerVR’s texture compression, PVRTC.
PFX Language Specification
Similar to the flexibility and reusability the .FX format brings to HLSL, the PFX format is designed to not only contain multiple GLSL/GLSL-ES shaders, but also to describe the relationship between shaders and the resources they rely on to create a specific visual effect. PFX files are in a human readable format so that they can easily be manipulated with text editors, such as PVRUniSCoEditor. The Tools in the PowerVR SDK provide functions for loading shader effects from PFX files, and all of the source code for this is included in the SDK. This document describes the syntax of the PFX language used to create PFX files so developers can fully understand how to benefit from the format.
OpenRL SDK Documentation
The purpose of this document is to explain the basic concepts of OpenRL™ (Open Ray Tracing Library) and its architecture, and continues on to a detailed description of the platform interface, followed by the application interface, and the shader programming language. Where appropriate, simple examples are provided.
OpenRL Header Files and Documentation
SGX Architecture Guide for Developers
The purpose of this document is to provide graphics programmers with an overview of the PowerVR SGX Series5 and Series5XT graphics hardware architectures, while also highlighting why some performance recommendations make such a significant difference to graphics rendering on PowerVR platforms. Furthermore, the information in this document outlines the purpose of each hardware module for which PVRTune provides performance counters.
PVR Texture Compression (PVRTC)
PVRTC is the name given to the PowerVR compression technology. It is frequently used on PowerVR platforms for its unique ability to compress a given image to 2 bits-per-pixel or 4 bits-per-pixel to significantly reduce texture memory bandwidth, while still retaining a high level of detail and four colour channels (ARGB) in the compressed image. This document discusses the considerations that were taken when designing the compressor, an explanation of why the chosen technique was the best suited approach and a low level explanation of the algorithms that the technique utilises.
Navigation Rendering Techniques
Visualization of navigation data is a complex task: the graphics should be appealing, informative, running at a high framerate and utilizing low power consumption at the same time. This whitepaper deals with the efficient rendering of navigation maps on the tile-based deferred rendering architecture of the PowerVR® MBX/SGX chipset families.
3D Navigation Rendering Techniques
This document introduces techniques related to the visualization of 3D datasets. It provides additional information on the topics of optimization, extending those found in the "PowerVR 3D Application Development Recommendations" document.
Post Processing Effects Development Recommendations
Post-processing is the modification and manipulation of captured or generated image data during the last stage of a graphics pipeline, resulting in the final output picture. This document describes a general approach to post processing and provides an example of a real-time effect that can be implemented for mobile platforms utilising PowerVR SGX hardware.
Shader Based Water Effects
Generating efficient and detailed water effects can add a great deal of realism to programs that utilise real-time graphics. The purpose of this document is to highlight techniques that can be used in software running on PowerVR SGX platforms to render high quality water effects at a relatively low computational cost.
Edge Detection Training Course
Edge detection is a process used in computer graphics to determine the borders between different objects or areas in an image. This paper details a simple technique used to detect edges on a mobile platform as well as discussing some alternative approaches. The purpose of detecting edges in this case is simply as a visual effect rather than gaining an understanding of the image’s contents.
UI Example Whitepaper
Rendering graphical user interfaces may seem like a trivial exercise, however without careful consideration a simple interface may be unresponsive and sluggish due to poor graphics performance. The purpose of this document is to highlight and demonstrate techniques that can
be used to improve user interface performance for software running on PowerVR SGX platforms.
Indeed, any generic 2D sprite-based applications can benefit from the recommendations given
in this document including games, applications and interfaces.
Parallax Bumpmapping Whitepaper
The parallax effect is exhibited when areas of a surface appear to move relative to one another as the position of the viewer changes. This is visible on any non-flat surface, a stone wall, or a speaker stack for example. It is easy to simulate parallax within a scene using geometry as the mathematics used to display a three dimensional world in a computer, generate parallax as a by-product of the display process. This is, however, computationally expensive to add to every rough or lined surface due to the additional geometry required. The method described here provides a means to approximate the parallax effect using height data and the view position to adjust the UV coordinates of an object; all without the addition of further polygons. In addition, optimizations will be discussed for a parallax bump mapping shader specifically optimized for PowerVR SGX platforms.
POD File Format Specification
The file format specification for 2.0.1 used by PVRPOD and PVRShaman.
PVRShaderEditor User Manual
PVRShaderEditor is a shader editor and graphical front-end for the PVRUniSCo shader compiler. It currently offers syntax highlighting for GLSL, GLSL ES, HLSL shaders, VGP vertex programs, Microsoft Effects (.fx) and PowerVR FX (.pfx) files. The Editor is a standalone version of the shader editing functionality that can be found in PVRShaman.
PVRScope User Manual
PVRScope is a library designed to allow a developer to embed the power of PVRTune in their own tools and applications. As well as allowing developers to access the performance counters of PowerVR hardware just like PVRPerfServer, it also allows custom marks and counters to be sent from the application across a network to PVRTune, further helping with the process of optimisation and debugging.
PVRGeoPOD User Manual
POD is the PowerVR Object Data format. It is a lightweight deployment format with a small memory footprint that is designed to be optimal for PowerVR GPUs (options are available in the exporters to order data optimally for PowerVR). The PowerVR SDK Tools contain resource loading code that can easily be integrated into an application to load and use POD files.
PVRGeoPOD is a file-exporter plug-in for 3D Studio MAX, Maya and Blender that allows 3D assets to
be exported to the POD format with detailed user control of the data to be included in the output and its form.
PVRShaman User Manual
PVRShaman is a development environment that allows shaders for OpenGL ES 2.0, OpenGL, DirectX9 and DirectX10, to be created and edited, with the results displayed in a 3D scene. Effect files can be used to link shader code to objects in this scene. An effect file is a complete definition of a material,
or a set of materials and contains references to textures and shaders. These files can be edited and compiled on the fly, with the visual results applied to the scene within the application.
PVRShaman works with 3D scenes in PowerVR Object Data format (POD files). These files can be generated with the PVRGeoPOD geometry exporters in the PowerVR SDK from models created with Autodesk’s 3dsMax, Maya or Blender or using the Collada2POD utility. PVRShaman can also open COLLADA files (DAE).
PVRShaman also functions as a viewer for POD files, including those that don’t contain shaders.
PVRTexTool Reference Manual
PVRTexTool works with various image and texture formats to provide the features of PVRTexLib in executable format. Functionality includes pre-processing, surface management and texture encoding. The GUI tool also provides font rendering and texturing previews. Texture encoding support includes the acclaimed PVRTC and PVRTC2, as well as formats such as ETC and a multitude of uncompressed formats. The tools work with the PVR file type; a flexible and lightweight texture container format. PVRTexTool includes a standalone GUI application, a command line tool and lightweight PVR file plug-ins for Autodesk 3ds Max and Maya, and Adobe Photoshop.
PVRTrace User Manual
PVRTrace is a utility that captures the graphics API calls made by an OpenGL ES application and displays this information so it can be analysed. It consists of several components: a library that sits between the application and the OpenGL ES libraries records data; a GUI application that analyses
PVRTrace recording libraries are distributed as part of the SDK packages (or are separately available from the PVRTrace webpage: http://www.imgtec.com/powervr/insider/pvrtrace.asp
The PVRTrace analysis tool can be used with recordings taken from any platform.
PVRTune User Manual
PVRTune, together with SGXPerfServer, is used to graphically view two types of data from the SGX hardware and drivers:
1. Hardware and software counters, rendered as graphs in PVRTune.
2. Timing data from the tile accelerator (TA) and 3D processing cores in SGX, rendered as
blocks of activity.
This information allows developers to understand where their application is hitting bottlenecks during rendering, and if so, exactly which part of the GPU’s processing is causing the bottleneck.
It is worth noting that this application displays performance counters for all GPU activity during the sample period rather than on a per application basis. For this reason, other processes utilizing the GPU will affect the performance data that is retrieved (for example, GPU accelerated window composition).
PVRVFrame User Manual
PVRVFrame is an emulation layer for desktop platforms that provides an OpenGL ES environment mimicking that available on PowerVR-enabled devices. It works by redirecting OpenGL ES API calls to the underlying OpenGL desktop implementation present on the system. PVRVFrame is aimed at developers writing OpenGL ES 1.x and OpenGL ES 2.0 applications for POWERVR-enabled embedded devices and is designed to mitigate the need for development hardware or a target platform.
PVRVFrame is not per-pixel accurate, nor a performance simulator. The performance obtained when running OpenGL ES applications with PVRVFrame is not indicative of the performance obtained when running on real consumer hardware.
PVRVFrame is available for OpenGL ES 1.x, Common profile and OpenGL ES 2.0.
Filewrap is a tool used to convert a resource file of an application into a source/header file that can be integrated into that application. This allows executable and resources to be combined in to a single file for distribution or obfuscation purposes. It can also be used to create a memory file system for instances where no file system is present.