Skip to content

C++ cross-platform 3D graphics SDK. Includes demos & helper code (resource loading etc.) to speed up development of Vulkan, OpenGL ES 2.0 & 3.x applications

License

Notifications You must be signed in to change notification settings

rcn-ee/Native_SDK

 
 

Repository files navigation

Welcome Banner

The PowerVR SDK

The PowerVR SDK is an open source codebase to help with the development of graphics applications for PowerVR and other platforms. It consists of two main parts: the Framework and a set of examples.

The Framework is a collection of libraries that aim to make development of OpenGL ES and Vulkan real-time applications much easier by removing boilerplate code and enhancing productivity. It can be used to easily create the lowest-level parts of a graphics engine - the main loop, platform abstraction, and graphical utilities. There are even a couple of examples showing how it is possible to build a pseudo-engine on top of the Vulkan Framework using our PVRPfx library.

The Framework is intended to reduce the amount of boilerplate code in an application. This allows a developer to focus on the key graphics API calls for drawing to screen rather than standard application setup.

The examples themselves are mostly code samples intended to:

  • Show the basics of OpenGL ES and Vulkan, with the HelloAPI and IntroducingPVRShell examples.
  • Demonstrate optimal implementations for techniques relevant for PowerVR, such as our DeferredShading with Pixel Local Storage/transient attachments, or our Gaussian Blur using a Sliding Average compute shader for reducing bandwidth.
  • Demonstrate how to use important extensions that may improve performance, PowerVR specific or otherwise, such as IMGFramebufferDownsample and IMGTextureFilterCubic.

The examples are built on top of the Framework and optimised so that only the relevant code is left. The examples range from setting up a simple application using the Framework to implementing more advanced graphics techniques, such as physically-based rendering. Examples are available using Vulkan, OpenGL ES, and OpenCL.

Developers can interact with our online Community at developer.imaginationtech.com.

Graphics Drivers

The PowerVR SDK does not provide OpenGL ES or Vulkan API system libraries. Please ask the platform provider for these libraries if they are not present. PVRVFrame is provided for platforms without native support for OpenGL ES but where OpenGL is supported.

Building

The PowerVR SDK uses CMake for building for any platform, and additionally uses Gradle when building for Android. To build the SDK navigate to the root of the SDK or alternatively to the root folder for any example, create a cmake binary directory, and run CMake from this created folder. For Android, navigate to the build-android folder of the item to build, and run the platform specific Gradle wrapper script provided (gradlew.bat/gradlew.sh).

For detailed instructions for building the SDK, see here.

Ray Tracing

Some of our examples; HelloRayTracing, HybridHardShadows, HybridReflections, HybridRefractions, HybridSoftShadows, HybridTransparency, RayTracedHardShadows and RayTracingDenoising implement ray tracing techniques. Currently they are only compatible with RT ready desktops and laptops running Windows 10 or Linux. They also require hardware/drivers supporting a minimum Vulkan version of 1.2.162.1.

PVRVFrame

PVRVFrame is included as part of the PowerVR SDK and provides a set of desktop emulation libraries for OpenGL ES wrapping desktop OpenGL allowing deployment of OpenGL ES applications on desktop Windows, macOS, and Linux which can help to speed up development times and improve productivity. *Note: As PVRVFrame provides an OpenGL ES wrapper for desktop OpenGL performance and capabilities depend on the 3D acceleration present in the system. *Note: The PVRVFrame libraries are not intended to be a completely accurate replication of the behaviour of PowerVR hardware.

  • The PVRVFrame libraries can be found pre-installed in the [path-to-sdk]/libs folder.
  • If the SDK was installed using the PowerVR SDK installer, the PVRVFrame emulation libraries may already be present in the PATH environment variable if this was requested during installation.
  • Otherwise, the PVRVFrame libraries can be manually added to the PATH or can be copied to a DLL-accessible directory prior to running the SDK applications - This may be anywhere in the path, next to the executable, system default folders etc.

*Note: To install PVRVFrame system-wide on Windows and run both 32 and 64-bit builds using the PVRVFrame libraries, copy the 64-bit version to %windir%\System32 and the 32-bit version to %windir%\SysWOW64 so that they are automatically selected by the corresponding applications. Otherwise, it may be necessary to manually modify the path based on which architecture needs to be run. For instance, if the 32-bit libraries are in the PATH, 64-bit applications cannot be run and vice versa.

The PVRVFrame library filenames are:

  • libEGL.dll (EGL)
  • libGLES_CM.dll (OpenGL ES 1.x)
  • libGLESv2.dll (OpenGL ES 2.0 and 3.x)

Dependencies

The PowerVR SDK has a number of third-party dependencies, each of which may have their own license:

  • glm : OpenGL Mathematics
  • pugixml : Light-weight, simple and fast XML parser for C++ with XPath support
  • concurrentqueue : A fast multi-producer, multi-consumer lock-free concurrent queue for C++11
  • glslang : Shader front end and validator
  • tinygltf : Header only C++11 tiny glTF 2.0 library
  • vma : Vulkan Memory Allocator
  • vulkan : Sources for the formal documentation of the Vulkan API

Documentation

The documentation from this repository has been moved to a different repository.

Release notes

For the latest version of the Release Notes detailing what has changed in this release, please visit Release Notes.

About

C++ cross-platform 3D graphics SDK. Includes demos & helper code (resource loading etc.) to speed up development of Vulkan, OpenGL ES 2.0 & 3.x applications

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 71.8%
  • C 26.1%
  • Objective-C 0.8%
  • CMake 0.7%
  • Objective-C++ 0.3%
  • Python 0.2%
  • Other 0.1%