practical vr for scivis - on-demand.gputechconf.com...unreal plugin unreal engine uses editor to...
TRANSCRIPT
Kees van Kooten, 8 May 2017
PRACTICAL VR FOR SCIVIS
2
OUR MOTIVATION
Incentivize high-quality rendering…
…with a story
Achieve real-time framerates, immersive visualization
Interaction: easy to use, easy to setup
Increase use of GPUs for graphics, client and serverside
3
CONSUMER VR
Cheaper and more practical than CAVE, Powerwall
Requires high rendering framerates
New ways of interaction
Depth perception massively increased
4
SCIVIS TODAY
Lots of different Scivis applications (ParaView, VisIt, VMD, …)
…lots of custom rendering technology (OptiX, IndeX, … )
…on variable platform constraints (local, distributed, powerwall, cave)
Custom solutions undesirable
Where does VR fit?
OptiX
5
SEPARATION OF CONCERNS
Paraview geometry extraction/processing useful and familiar:
Geometry in ParaView
High-quality, real-time rendering solutions already exist:
Rendering in UnrealEngine
SC’16
6
SEPARATION OF CONCERNSFrom ParaView to Unreal
8
On the same local machine, an application built with the Unreal Engine is running, automatically receiving all geometry from the ParaView instance shown before.
9
PARAVIEW – UNREAL BRIDGELeveraging Tools developed for Entertainment
90 Hz ~30-70 Hz
Render Thread
Game Thread
External Vis Thread
Geometry Transfer Buffer
10
PARAVIEW PLUGIN
Triggered by scene change
Copies data into geometry transfer buffers (vertex/index/texture/transforms)
Dual buffering: Paraview writes while Unreal consumes
11
UNREAL PLUGIN
Creates External Vis thread that runs independently from 90Hz render thread
Copies GTB data into unused graphics resources (vertex/index buffers, etc)
Passes graphics resources to render thread
Receives freed-up resources from render thread
12
UNREAL PLUGIN
Unreal Engine uses Editor to create scenes
Actors: entities in the world that may hold geometry
Plugin adds External Vis Actor type
Place External Vis Actor in the scene where you want geometry to appear
Start the Unreal scene, start ParaView, any geometry will be transferred
How is it used?
13
Workflow showing how to use Unreal Editor to add External Vis Actor to a scene to automatically receive geometry.
14
ACTOR TO ACTOR MAPPING
Per Paraview Actor, a new Unreal Actor instance can be spawned
Allows for grouping and independent manipulation in Unreal
To come: select spawn position
ParaView Actor 0
ParaView Actor 1
ParaView Actor 2
Unreal Actor 0
Unreal Actor 1
15
MAINTAINING 90HZ RENDERINGAllocate and assign a buffer
External Vis Thread
Buffer 0Allocated
Buffer 1Allocated
Buffer 2Free
Buffer 3Allocated
Buffer 4Allocated
Render Thread
Actor 0
Section 0
Section 1
Section 2Actor 1
Actor 2
16
MAINTAINING 90HZ RENDERINGFree unused buffers after some frames
External Vis Thread
Buffer 0Free
Buffer 1Allocated
Buffer 2Free
Buffer 3Allocated
Buffer 4Allocated
Render Thread
Actor 0
Section 0
Section 1
Section 2Actor 1
Actor 2
17
PERFORMANCE
Unreal static rendering: 10-15 million polygons at 90Hz
Unreal dynamic rendering: up to 5 million polygons at 90Hz
Unreal geometry updates: up to 2 million polygons (without affecting rendering)
ParaView updates 1 million polygons at 30Hz (producer bottleneck)
18
FUTURE DIRECTION
Optimizations of geometry transfer and static geometry rendering
Transfer of colors and textures
Interaction from Unreal scene back into Paraview
Supporting transparency, lightmapping
Format in which the technology will be available still undecided