An Experimental VR Review Pipeline

Aug 11, 2015



A version of the VR review toolset discussed here was first released in beta form in the 6.2.2 release in May. Jaunt VR will be presenting at the Shotgun booth (#317) this week at SIGGRAPH on Wednesday August 12th, 10:30-11am to showcase how they’re using Shotgun and RV (including these VR tools) to accelerate in-house VR review.


The CG VFX and feature animation industries are decades old now, and many workflows and pipelines are well-understood and have associated best practices. New forms of entertainment are emerging all the time, and new workflows and pipelines need to be created on the fly to serve new kinds of media production as is the case today with VR and 360 degree content creation. Tools like Shotgun and RV need to be flexible and adaptable enough to facilitate this creativity.

RV's Flexible Pipeline

RV is a media player with a hardware-accelerated image-processing graph at its core. This flexible graph is mostly used to provide artists and studios with complete control of the color pipeline, with its constantly changing demands.

The image processing operations supported by the graph are not limited to color transforms. Custom nodes can be written (in GLSL) for the RV graph to support many different kinds of IP operations including filters and multi-input compositing. In particular, custom nodes can implement geometric transformations like projections.

RV's Standard Framework

The flexible IP graph at RV's core is surrounded and supported by a set of standard tools, for example:

• High-performance I/O and caching infrastructure. Many file formats are supported and media in almost any format can be streamed and/or cached for high-speed playback.

• Stereoscopic toolset. Multi-view imagery is a first-class citizen in RV's system, so the input format does not dictate the processing or output format.

• Review tools. Media in any format can be compared in several ways including tiled views (with any number of tiles) and "split-screen" views (with any numbers of layers and interactive wiping).

This video illustrates how some custom GLSL nodes can enhance and simplify VR review.

An Experimental VR Review Pipeline

An emerging standard for VR working/mastering media is a "Packed" stereo format (each frame contains left and right eyes), where each eye is a complete 360-degree spherical view (this kind of projection is variously known as "spherical", "lat-long", or "equi-rectangular").

Although this format is useful as a format for VR mastering and delivery, it is difficult to review directly in production (especially on the artist’s desktop or with standard theater set-ups), because of the "distortion" of the spherical projection.

In the video we demonstrate how RV can be extended with custom GLSL nodes to implement a review pipeline for media in this format. Thanks to Jaunt for supplying the media used in the example! In the video you see:

1. A custom GLSL node can be used to "unpack" the incoming media into "real" stereo. At this point any of RV standard stereo tools and display formats can be used with the media.

2. Another custom GLSL node takes the unpacked stereo (still in “spherical” form) and conceptually maps it on to a virtual sphere for viewing. Parameters on the GLSL node are modified by user interaction driving Python interface code to set the view direction, field of view, etc. This shader was developed by The Mill and kindly contributed back to the RV community, so thanks very much to The Mill!

3. With the addition of these two custom nodes, RV's standard frame work allows you to use all the standard review workflows with this new media type, including building sessions and playlists of multiple takes or edited sequences of shots and comparing versions in layouts of any size or stacks with split-screens and interactive "wipes". RV's standard IO and caching infrastructure is also handy since VR media tends to be high-resolution and high-frame-rate.

A note on The Mill's LatLong shader: we’d love to see much more of this kind of sharing and would be happy to do what we can to facilitate that by managing some kind of public repository. If any of you think you'd be interested in contributing to such a community, please ping us and we'll start that discussion!