VR Resolution Redefined

13 mars - Alex Vlachos
Today we are excited to introduce a new feature in SteamVR Beta that allows customers to get the best visual experience out of their GPU, lowers the cost of VR, and makes developer’s lives a little bit easier. We’re doing this by custom-tuning application resolution so that it is optimal for each customer’s GPU and VR headset.

How it works is simple. The SteamVR runtime measures the speed of your GPU and tells applications to render at an appropriate resolution based on the power of your GPU. There are many customers right now with GPUs that aren’t being fully utilized. These customers will now automatically have their VR application resolution up-res’ed – the end result being a clearer and better looking VR experience.

Customers who have GPUs that can’t quite render the native resolution of their headset will automatically see images rendered at a slightly lower resolution that is more appropriate for the speed of their GPU. More clarification about this at the bottom of the post.

The best part is that customers won’t have to do anything to get the correct resolution settings. The SteamVR runtime does all the hard work. Of course, if one prefers a different resolution, it’s easy to manually override this by editing the Video settings in SteamVR (previously known as supersample settings).

This resolution update applies to all SteamVR compatible headsets including the Vive, Vive Pro, Oculus Rift, all Windows MR headsets, etc. In addition, this resolution update is fully compatible with all reprojection techniques and will work with all future rendering improvements to SteamVR.

Lowering the Cost of VR

With higher resolution headsets being released, like the Vive Pro and Windows MR headsets, many customers worry about needing to upgrade their GPU. This is no longer the case. All GPUs will be set to render at an appropriate resolution for the attached headset based on the GPU in their machine. So if you already have a "VR Ready PC" or a "VR Ready GPU", that hardware will work fine even with the newest high resolution VR headset on the market.

This is exactly what most PC games have done for decades for different resolution monitors and TVs. We are now applying this same logic to the SteamVR runtime that will then set the resolution for all VR applications running through Steam on your system.

This means you can keep your current GPU if you don't want to upgrade both your GPU and headset at the same time. Of course, a more powerful GPU will provide a higher fidelity experience in-headset, but you can choose when to upgrade your GPU independent of when you upgrade your VR headset.

Making Developers' Lives Easier

Before today, developers would have to test every supported headset on every supported GPU and make difficult tradeoffs for how to render at the higher resolutions of next-gen headsets. While that sounds like a reasonable thing for developers to do, developers can’t accurately predict the future. And with over 2,000 VR applications on Steam today, it's unreasonable to ask developers to update all of their existing applications to support every new headset with a higher resolution or faster refresh rate as it hits the market. This feature does not require developers to update their applications.

This new auto-resolution system takes the headset out of the equation for developers. Developers can now test their application against the GPUs they support without worrying about what future headsets will require. The same GPU attached to different headsets will render at the exact same application resolution regardless of which headset is attached. And if a headset has a faster refresh rate than older headsets, the resolution will be scaled down based on the difference of refresh rates between headsets. Ultimately, we set the resolution based on how many "VR megapixels per second" we believe your GPU is safely capable of for the majority of applications available.

Currently in Beta

This feature is currently in beta and is available by opting into SteamVR Beta. To opt into SteamVR Beta, find SteamVR under Tools in your Steam Library. Right click to bring up Properties, then select 'beta' from the dropdown in the Betas tab. We look forward to hearing your feedback.


More Details
  • This feature takes the setting previously known as supersampling, and automatically adjusts it on startup based on the performance of your GPU with your headset.
  • This setting does not dynamically adjust per application or during application use.
  • If your GPU can't make native resolution on Vive Pro or Windows MR headset, it will scale down and bottom out at the equivalent megapixels per second as a first generation Vive or Rift.
  • If your GPU can't make native resolution on a first generation Vive or Rift, it will not automatically be set below native resolution (and it will perform the same as it did before this update).

Beta 13: AMD TrueAudio Next Support

6 février - lakulish

We have just released Steam Audio 2.0 beta 13, which brings support for AMD TrueAudio Next technology. TrueAudio Next lets developers accelerate certain spatial audio processing tasks by reserving a portion of the GPU. Combined with Steam Audio's ability to model a wide range of acoustic phenomena, this enables increased acoustic complexity and an increased sense of presence in games and VR applications. Click here to download the latest version of Steam Audio, or click here to grab the source code for the Unity and FMOD Studio plugins.

What is TrueAudio Next?
AMD TrueAudio Next (TAN) is a software library that implements high-performance convolution – a filtering technique – for audio data on supported GPUs. TrueAudio Next also provides a feature called Resource Reservation, which allows developers to dedicate a portion of the GPU's computational resources to be spent on time-sensitive tasks such as audio processing. Here is a brief explanation of both of these high-level features of TAN.

In the context of audio, convolution is a mathematical operation that transforms one audio signal into another. It is essentially a specific kind of filtering. A very wide range of audio filters can be implemented using convolution, including echoes, frequency equalization, HRTF-based 3D audio, reverb, and more. When using convolution, an audio filter is expressed in terms of its impulse response (IR), which can be manually specified, recorded (as is often the case when using convolution for reverb), or calculated by a simulation algorithm (as is the case with Steam® Audio).

Audio engines used for games and VR usually support convolution reverb: various combinations of audio data can be filtered using convolution, to add reverb, after the user has specified an IR in some way. This is usually real-time convolution, which means that audio is filtered as it is being played. IRs used for reverb are often quite long: representing the IR for an airplane hangar with a 5-second reverb at a 48 kHz sampling rate requires (5 * 48000) = 240,000 audio samples = around 935 KB. Real-time convolution is a very compute-intensive operation, and audio engines usually allow only 2-4 convolution reverb filters running simultaneously, to keep CPU usage within acceptable limits. Convolution reverb can model a wide range of acoustic phenomena, and leads to an increased sense of presence, which is especially important in VR. However, because it is a compute-intensive algorithm, it is often avoided in favor of less compute-intensive, less detailed reverb algorithms.

TAN uses the GPU compute capabilities of supported AMD GPUs to accelerate convolution, allowing developers to increase the acoustic complexity and detail in their games and VR applications using convolution reverb.

Resource Reservation
TAN also provides a feature called resource reservation, which allows developers to reserve a portion of the GPU exclusively for audio processing. GPUs are made up of several CUs; these are roughly the GPU equivalent of the multiple cores in a CPU. It is not possible to reserve groups of cores on a CPU for one process, but with AMD resource reservation, this becomes possible for the GPU's cores. A typical high-end GPU might have 36 CUs, for example. Usually, a game's renderer uses all available CUs.

With Resource Reservation, developers can reserve some small number, say 4, of the CUs for audio processing only. This dedicates 4 CUs for audio processing, while reducing the number of CUs available to the renderer by 4. Resource reservation does not allow more than 20 to 25% of the GPU CUs to be reserved.

Figure: Reserving Compute Units (CUs) with TrueAudio Next.

What TrueAudio Next Is NOT
TrueAudio Next currently does not perform ray tracing for sound. Ray tracing is one way of simulating acoustic phenomena and calculating an IR; TAN focuses on accelerating the task of filtering audio data using IR after the IR has been calculated (or manually specified).

In 2013, AMD introduced TrueAudio technology, which used dedicated DSP hardware available on certain AMD GPUs to accelerate some audio functions such as rendering 3D audio using Head-Related Transfer Functions (HRTFs), and convolution with static IRs. In contrast, TrueAudio Next uses standard, existing Radeon™ GPU resources to implement more general and highly scalable convolution algorithms, which can be used for a wider range of filters, including convolution reverb with time-varying IRs. As a software library built using OpenCL, TrueAudio Next can also be targeted to CPUs, but it is especially beneficial when it is used with GPU Resource Reservation.

How is TrueAudio Next useful to Steam® Audio?

Indirect Sound
Steam® Audio uses physics-based simulation to model two ways in which sound travels from a source to a listener. Direct sound is sound that travels in a straight line from the source to the listener, possibly passing through solid objects. Indirect sound is sound that is emitted from the source, bounces off solid objects repeatedly, and then reaches the listener.

Steam® Audio models indirect sound by calculating an IR using ray tracing. This IR is then used in a convolution reverb effect to add indirect sound effects to either individual sound sources (in the case of source-centric convolution reverb) or a submix of sound reaching the listener (in the case of listener-centric convolution reverb).

Simulating and rendering indirect sound is the most computationally intensive part of what Steam® Audio does, and TrueAudio Next helps manage this workload.

Source-centric convolution reverb can be directional in nature: somebody else's distant footsteps heard through an open doorway sound more directional than one's own footsteps in a large room, for example. Steam® Audio uses Ambisonics to represent the directional variation of indirect sound. The higher the Ambisonics order, the more spatial detail that can be rendered in the indirect sound. On the other hand, the higher the Ambisonics order, the more IRs that are needed in the convolution reverb effect. For example, 2nd order Ambisonics requires 9 convolutions per source. This too, increases the computational cost of indirect sound.

Note that Steam® Audio does not use TrueAudio Next for applying HRTF-based 3D audio rendering. The computational cost of HRTF processing is significantly lower than that of convolution reverb: thousands of sources can be rendered with HRTF-based 3D audio using a single CPU core.

Why does Steam® Audio support TrueAudio Next?
Steam® Audio's existing CPU-based convolution has sufficient performance for many applications, particularly those that rely heavily on listener-centric reverb. However, with TrueAudio Next, Steam® Audio can offer more flexibility to developers.

There are two main reasons why we chose to support TrueAudio Next in Steam® Audio:
  • If we can provide developers with more flexibility in choosing how their audio processing workloads are balanced on a user's PC, we want to do that. TrueAudio Next allows developers to choose how CPU and GPU resources work together to provide a compelling audio experience on the user's PC.
  • If we can allow developers to offer an optional higher level of audio detail with their existing content on PCs that are powerful enough, we want to do that. With Steam® Audio, developers just specify higher settings to be used if a TAN-capable GPU is installed on the user's PC. Developers do not have to re-author any content to work with TAN. Steam® Audio can be used to seamlessly select either CPU- or GPU-based convolution, depending on the user's hardware configuration.
Steam® Audio's support for TrueAudio Next does not in any way restrict Steam® Audio to specific hardware or platforms. We hope that our support for TrueAudio Next encourages hardware and platform vendors to provide more options for developers to balance their audio workloads against graphics, physics, and other workloads, which in turn will help them create better audio experiences for their users.

What are the benefits of TrueAudio Next?

Benefits of GPU convolution
TAN's OpenCL convolution algorithms move convolution from the CPU to the GPU, and help achieve significant audio processing speedups. This has the following advantages:
  • Steam® Audio's CPU-based convolution is highly efficient, and is sufficient for a wide variety of games and VR applications, especially if only using listener-centric reverb. However, TAN allows us to give developers the option of reaching an even higher level of auditory complexity: increasing the number of sources, or the Ambisonics order for indirect sound, or the IR length, etc.
  • By moving convolution from the CPU to the GPU, the fraction of time spent by the CPU on audio processing can be kept within the CPU budget chosen by the developer. This also frees up more CPU resources for use by other tasks such as physics simulation or AI.

Figure: GPU convolution performance vs CPU convolution performance, for 1s IRs, 1st order Ambisonics, 1024-sample frames, and a 48 kHz sampling rate. The performance advantage of GPU convolution increases with number of sources. CPU convolution is usable up to a moderate number of sources; GPU convolution is necessary for large numbers of sources.

Benefits of resource reservation
Resource reservation causes TAN's convolution algorithms to run in isolation from any rendering, physics, or other tasks that the GPU is being used for. This has two broad advantages:
  • Increasing the number of reserved CUs predictably results in improved performance, even under the heaviest workloads.
  • Because audio processing does not interfere with graphics, the audio processing does not result in sudden frame rate drops and stuttering.
  • Because graphics does not interfere with audio processing, rendering a complex scene cannot cause audio processing to slow down, which in turn helps avoid unacceptable clicks, pops, or other audio glitches.

Figure: Performance improvements with increasing numbers of reserved CUs, for 1s IRs, 1st order Ambisonics, 1024-sample frames, and a 48 kHz sampling rate. The plot shows the maximum number of sources that can be processed within a 6ms budget. Increasing the number of reserved CUs allows more sources to be processed within the same amount of time.

Figure: Impact on GPU rendering performance when reserving 4 CUs for TrueAudio Next processing. The plots show the average FPS observed on various GPU benchmarks when run at the same time as a TAN benchmark using Steam® Audio. Measurements obtained using a Radeon™ RX 480 GPU with 4 reserved CUs, 256 total convolution channels and 1.3s IRs. All values are shown as a percentage of a baseline that is obtained when the TAN benchmark is not running. For example, reserving 10% of the available CUs reduces the average FPS in the Timespy benchmark by about 10%.

Figure: Impact on TAN processing time when heavy graphics workloads are running concurrently. CU reservation limits the impact of heavy graphics workloads on time-sensitive audio processing tasks on the GPU. Measurements obtained using a Radeon™ RX 480 GPU with 4 reserved CUs, 256 total convolution channels, 1.3s IRs, 1024-sample audio frames, and a sampling rate of 48 kHz.

How do I enable TrueAudio Next in Steam® Audio?

System Requirements

Supported GPUs
Operating System
GPU Drivers
Radeon™ RX 470 Series
Radeon™ RX 480 Series
Radeon™ RX 570 Series
Radeon™ RX 580 Series
Radeon™ R9 Fury
Radeon™ R9 Fury X
Radeon™ Pro Duo
Radeon™ RX Vega 56
Radeon™ RX Vega 64
Windows 10, 64-bit
Current Radeon™ Adrenalin Edition drivers

Download location:

Using the Unity Plugin
To use TAN in a Unity project that uses the Steam® Audio Unity plugin, you must add a Steam® Audio Custom Settings component to the Steam® Audio Manager Settings object in every scene that you wish to use TAN in, and then set Convolution Option to TrueAudio Next. Refer to the documentation for more details on the other settings that are displayed when Convolution Option is set to TrueAudio Next.

Figure: Enabling TrueAudio Next in the Steam® Audio Unity plugin.

Steam® Audio allows the developer to select the number of CUs to be reserved and to independently configure the higher-detail settings to be used when TrueAudio Next is available. When TrueAudio Next is not available, CPU convolution with a default configuration can be used seamlessly. TrueAudio Next, along with resource reservation, can also be enabled or disabled on a scene-by-scene basis.

Using the FMOD Studio Plugin
To use TAN in an FMOD Studio project that is part of a Unity project that uses Steam® Audio FMOD Studio plugin, follow the instructions for enabling TAN in the Steam® Audio Unity plugin. No further action is required.

Using the Unreal Engine 4 Plugin
To use TAN in an Unreal Engine 4 project, you can simply configure the Steam® Audio plugin settings to use convolution type "AMD TrueAudio Next". This will allow you to configure the number of compute units available for audio processing. No further action is required.

TAN for Steam® Audio is currently available to users who build from source via this pull request on GitHub (requires membership in the EpicGames organization).

Figure: Enabling TrueAudio Next in the Steam® Audio Unreal Engine plugin.

Using the C API
To use TAN in an application that directly uses the Steam® Audio C API, you will need to perform two main steps:
  • Initialize an OpenCL compute device that supports TAN. To do this, call iplCreateComputeDevice, typically at application startup. In the deviceFilter parameter, set type to IPL_COMPUTEDEVICE_GPU, and requiresTrueAudioNext to IPL_TRUE. This will cause Steam® Audio to try initializing OpenCL to use a GPU that supports TAN. If no such device is found on the user's PC, an error code is returned. The application should test this error code and take appropriate action in case of failure, such as falling back to Steam® Audio's built-in CPU-based convolution. This compute device should be passed to all Steam® Audio API functions that take a computeDevice parameter.

  • Create an Environmental Renderer that uses TAN for convolution. When calling iplCreateEnvironmentalRenderer to create an environmental renderer, in the renderingSettings parameter, set convolutionType to IPL_CONVOLUTIONTYPE_TRUEAUDIONEXT. If the function returns a status code indicating success, then all subsequently created Convolution Effect objects will use TAN.
Note that when using TAN for convolution, iplGetMixedEnvironmentalAudio is much more efficient than calling iplGetWetAudioForConvolutionEffect for each Convolution Effect object separately.

SteamVR Home: Holiday Props

19 décembre 2017 - Lawrence

Happy Holidays! Our friends at Vive Creative Labs recently released a holiday update for their Driftwood environment. This update included, among other things, all the pieces you need to build a snowman.

Vive Creative Labs was kind enough to share this snowman kit with us and we are now making it available for all players in SteamVR Home, regardless of what environment you are in. Just look in your 'Things' menu to find all you need to make your own snowman as well as some festive holiday lights.

Have fun, and see you in SteamVR Home!

SteamVR Home: New Collectibles

11 décembre 2017 - Lawrence

Today we are making SteamVR Home Collectibles available for Fallout 4 VR, DOOM VFR, and Wrath of Loki: VR Adventure.

We're excited about the release of Fallout 4 VR, and we've worked with Bethesda Game Studios to do something special. As players play through Fallout 4 VR, they will unlock up to 10 Vault Boy figurines in SteamVR Home. There are a total of 20 unique possible figurines, and these special collectibles will be granted one at a time on a daily basis based on playtime in Fallout 4 VR.

Have fun, and see you in SteamVR Home!

SteamVR Home: Quick Inventory and More

22 novembre 2017 - Lawrence
We've updated SteamVR Home today with a new way to quickly equip tools, a new tutorial, and other quality of life updates and bug fixes.

Quick Inventory
Until now, it's taken several clicks through the in-game menu to find and equip different tools. With today's update there is now a shortcut: the quick inventory. Simply click and hold the grip button to see what tools you have unlocked, hover over your choice, and release the grip to equip that tool.

We think this will be a much more natural, more VR-specific way of interacting with the world in SteamVR Home. We're excited about this update and hope to add more of these kinds of intuitive interactions in the coming months.

Physics Prop Tutorial
This tutorial is the third installment of the SteamVR Home Environment tutorial series. Now that you've learned about Hammer and Basic Lighting and wrapped your head around Materials, it's time to dive into the details of Creating Physics Props for your SteamVR Home environment.

This new tutorial walks you step by step through:
  1. Constructing a prop
  2. Importing it to SteamVR Home Tools
  3. Adding physics
  4. Placing the prop in your SteamVR Home environment
  5. Adding surface properties
You can find the new tutorial here. We're looking forward to seeing what you create.

Quality of life improvements
With this update we've also made a number of improvements and fixes to SteamVR Home for all headsets. This includes fixing bugs related to the laser pointer and teleport, updating controller models automatically depending on your VR setup, and bug fixes for SteamVR Workshop Tools.

Also included are various quality of life improvements for the Oculus Rift (snap turning is now fixed for save games) and Windows Mixed Reality (updating tutorial panels and adding custom models).

Please see the patch notes for more info, and as always we'd love to hear what you think in the discussion boards.
SteamVR and Windows Mixed Reality
Upcoming Windows Mixed Reality Support on Steam