Skip to content

powervr-graphics/Native_SDK

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

SDK 22.1(v5.9) release.

Native SDK:
* Changed Instance creation methodology to ensure that applications target a specific version of Vulkan instead of targeting the Vulkan loader version on the device.
* Allowed users to initialise UI Renderer with a custom font, given an image view.
* Allowed users to set the flags required for the debug call back messenger to log during the instance creation and destruction. Defaults to only errors and warnings.
* Allowed users to specify validation warnings to disable by passing a vector of IDs
* Updated CMake to 3.18
* Updated Gradle build tools to 4.1.2
* Added new Vulkan Raytracing Example: Hybrid transparency.
* Added new Vulkan Example: Subgroups.
* Added new GL ES and Vulkan Examples: Shadows.
* Added new Vulkan Raytracing Example: Denoising.
* Explicitly set the targeted instance version. Previous examples would set the instance version to the highest one supported on the device.
* Simplified the Vk device extension feature loading, especially in the RT examples.
* Set the Vulkan raytracing demos to Vulkan version 1.1.

PVRVFrame:
* Fixed ASTC glTexStorage emulation on Intel GPUs.
* Fixed a bug in glFramebufferTextureLayer that could cause an invalid operation error or the wrong texture to be attached.
* Worked around Intel link program error “Varying ‘gl_PerVertex;_IN’ has different block does not match across different shaders.” that could occur when using geometry shaders.

The documentation from this repository has been moved to https://powervr-graphics.github.io/

Refer to our release notes for more details about the changes: https://developer.imaginationtech.com/tools/release-notes/2022-r1/
9624ad3

Git stats

Files

Permalink
Failed to load latest commit information.

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