gpu technology conference 2017 vr rendering...

47
© 2017 Autodesk Michael Nikelsky Sr. Principal Engineer, Autodesk GPU Technology Conference 2017 VR Rendering Improvements Featuring Autodesk VRED Ingo Esser Sr. Engineer, Developer Technology, NVIDIA

Upload: buithuy

Post on 23-Feb-2018

233 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

© 2017 Autodesk

Michael Nikelsky

Sr. Principal Engineer, Autodesk

GPU Technology Conference 2017

VR Rendering Improvements FeaturingAutodesk VRED

Ingo Esser

Sr. Engineer, Developer Technology, NVIDIA

Page 2: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

2

AGENDA

NVIDIA VRWorksat a glance

Autodesk VREDVR Rendering Improvements

Page 3: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

3

NVIDIA VRWORKSComprehensive SDK for VR Developers

GRAPHICS HEADSET AUDIOTOUCH & PHYSICS

PROFESSIONAL

VIDEO

Page 4: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

4

NVIDIA VRWORKSComprehensive SDK for VR Developers

GRAPHICS HEADSET AUDIOTOUCH & PHYSICS

PROFESSIONAL

VIDEO

Page 5: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

5

GRAPHICS PIPELINEVR Workloads

1512

1680

1512

124M Pix/sN vertices

60 Hz

457M Pix/s2N vertices

90 Hz

Preprocessing

Geometric

Pipeline

Rasterization

Fragment Shader

Postprocessing

~3.6x

3x

1080

1920

Page 6: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

6

NVIDIA VRWORKSComprehensive SDK for VR Developers

GRAPHICS HEADSET AUDIOTOUCH & PHYSICS

PROFESSIONAL

VIDEO

Page 7: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

7

SINGLE PASS STEREO

Render eyes separately

Doubles CPU and GPU load

Traditional Rendering

Page 8: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

8

SINGLE PASS STEREO

Single Pass Stereo uses Simultaneous Multi-Projection architecture

Draw geometry only once

Vertex/Geometry stage runs onceOutputs two positions for left/right

Only rasterization is performed per-view

Using SPS to improve rendering performance

Page 9: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

9

SINGLE PASS STEREO

In OpenGL via GL_NV_stereo_view_rendering

Create texture arrayfor rendering left and right eye simultaneously

No other changes needed, shaders perform SPS

OpenGL

Page 10: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

10

SINGLE PASS STEREO

Calculate projection space position

proj_pos = proj * view * model * inPosition;

Output both positions via different builtin variables, only x component may differ

gl_Position = proj_pos + vec4(offset, 0, 0, 0);

gl_SecondaryPositionNV = proj_pos – vec4(offset, 0, 0, 0);

Use declaration and value of gl_Layer to route output to layers 0 and 1 of tex array

layout(secondary_view_offset=1) out highp int gl_Layer;

gl_Layer = 0;

Vertex Shader

Page 11: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

11

Single Pass Stereo brings benefitsin geometry bound scenarios

Heavy fragment shaders will reduce scaling

GRAPHICS PIPELINESingle Pass Stereo Performance Results

Preprocessing

Geometric

Pipeline

Rasterization

Fragment Shader

Postprocessing

SPS

Page 12: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

12

NVIDIA VRWORKSComprehensive SDK for VR Developers

GRAPHICS HEADSET AUDIOTOUCH & PHYSICS

PROFESSIONAL

VIDEO

Page 13: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

13

HMD OPTICSCountering Lens Distortion

User’s ViewDisplayed Image Optics

Page 14: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

14

HMD RENDERINGOversampling near the borders

Displayed ImageRendered Image

Page 15: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

15

LENS MATCHED SHADINGFour Viewports

Original Image LMS Image

Page 16: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

16

In OpenGL via GL_NV_clip_space_w_scaling extension

Set up four viewports, rendering full resolution

Set scissors to each quadrant

glScissorArray(0, 4, scissors);

W scaling parameters

glViewportPositionWScaleNV(i, Wx, Wy);

Viewport 0

Scissor 0

LENS MATCHED SHADINGOpenGL

Page 17: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

17

LENS MATCHED SHADING

gl_ViewportMask[0] controls broadcastingof vertices and primitives

Inefficient – set mask in vertex shader

gl_ViewportMask[0] = 15;

More efficient – filter in pass through geometry shader

Determine quadrant(s) for each primitive

Set bit(s) in gl_ViewportMask[0]

Shaders

Viewport 0

Scissor 0

Page 18: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

18

HMD runtime can‘t consume w warped images yet, need to unscale before submit

𝑠𝑐𝑎𝑙𝑒 =1

1− 𝑤𝑥∗𝑃′𝑥 −𝑤𝑦∗𝑃

′𝑦

𝑃′ = 𝑠𝑐𝑎𝑙𝑒 ∗ 𝑃

𝑢𝑛𝑠𝑐𝑎𝑙𝑒 =1

1+ 𝑤𝑥∗𝑃𝑥 +𝑤𝑦∗𝑃𝑦

𝑃 = 𝑢𝑛𝑠𝑐𝑎𝑙𝑒 ∗ 𝑃′

LENS MATCHED SHADINGScaling and Unscaling

Quadrant 0

0,0

w/2, h/2

𝑃′

𝑢𝑛𝑠𝑐𝑎𝑙𝑒

𝑠𝑐𝑎𝑙𝑒

𝑃

Page 19: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

19

LENS MATCHED SHADINGExtreme example, Wx = 2.0 Wy = 2.0

Page 20: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

20

LENS MATCHED SHADINGExtreme example, Wx = 2.0 Wy = 2.0

Page 21: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

21

GRAPHICS PIPELINE

LMS can improve performance ofRaster / Fragment stage

Trade-off between quality and performance

Lens Matched Shading Results

Preprocessing

Geometric

Pipeline

Rasterization

Fragment Shader

Postprocessing

LMS

SPS

Page 22: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

22

NVIDIA VRWORKSComprehensive SDK for VR Developers

GRAPHICS HEADSET AUDIOTOUCH & PHYSICS

PROFESSIONAL

VIDEO

Page 23: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

23

HMD RENDERINGVR SLI functionality

VR SLI HMD rendering

Prepare scene

Upload left view data to GPU0

Upload right view data to GPU1

Render scene on both GPUs

Transfer texture

Submit to HMD

Separate data upload

GL allocations & uploads are broadcast

GL render calls are broadcast

Efficient texture copies

Page 24: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

24

VR SLI

Command & data broadcast

BufferSubData to specific GPU

CopyImageSubData & CopyBufferSubData

GPU-GPU Framebuffer Blit

Global barrier & directed sync functions

GPU Masks

Per-GPU sample locations

Per-GPU queries

Updates between NVX and NV extensions

Page 25: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

25

VR SLIBroadcast allocations & uploads

Geometry

Parameters

Textures

Left view data

Right view data

tex0 tex1

tex0 tex1

Page 26: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

26

VR SLIBroadcast allocations & uploads

for( auto i = 0; i < 2; ++i ){sceneData.viewMatrix = view[i];sceneData.viewProjMatrix = proj[i] * view[i];

glMulticastBufferSubDataNV (

1<<i,

sceneUbo,

0, sizeof(SceneData), &sceneData

);}

GPU Mask

Same UBO

Per-eye data

Different data

Page 27: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

27

VR SLI

Application sends draw commands only once

Commands are broadcast between GPUs

Broadcast render commands

Render

tex0 tex1

tex0 tex1

Page 28: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

28

VR SLIBroadcast render commands

tex0 tex1

tex0 tex1

R

L

glBindFramebuffer( ...,renderFBO);

glFramebufferTexture2D( ...,tex0,0 );

render(); render on both GPUs

tex0 on both GPUs

Page 29: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

29

VR SLI

Copy function allows direct copy between GPUs

Avoids CPU copy, transfer directly via PCIe

Texture transfer

glMulticastWaitSyncNV(0, GPUMASK_1 );

glMulticastCopyImageSubDataNV(1, 1<<0,tex0, ...,tex1, ...,width, height, 1);

glMulticastWaitSyncNV(1, GPUMASK_0 );

copy tex0 @ GPU 1to tex1 @ GPU0

GPU 1 wait for GPU 0(Target is ready)

GPU 0 wait for GPU 1(Copy is done)

tex0 tex1

tex0 tex1

R

L R

Page 30: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

30

GRAPHICS PIPELINE

VR SLI covers a wide variety of workloads

Perfect load balancing betweenleft/right eye and two GPUs

Copy overhead and view independentworkloads limit scaling

Some pre- and postprocessingcan be distributed

VR SLI Results

Preprocessing

Geometric

Pipeline

Rasterization

Fragment Shader

Postprocessing

LMS

SPS

VR SLI

Page 31: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

31

TRY IT OUT!

NVIDIA VRWorks SDK provides OpenGL, Direct3D & Vulkan samples

developer.nvidia.com/vrworks

Extensions

www.khronos.org/registry/OpenGL/extensions/NV/NV_stereo_view_rendering.txt

www.khronos.org/registry/OpenGL/extensions/NV/NV_clip_space_w_scaling.txt

www.khronos.org/registry/OpenGL/extensions/NV/NV_gpu_multicast.txt

Page 32: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

32

AGENDA

NVIDIA VRWorksat a glance

Autodesk VREDVR Rendering Improvements

Page 33: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

We may make statements regarding planned or future development efforts for our existing or new products and services. These statements are not intended to be a promise or guarantee of future availability of products, services or features but merely reflect our current plans and based on factors currently known to us. These planned and future development efforts may change without notice. Purchasing decisions should not be made based upon reliance on these statements.

These statements are being made as of May, 9th 2017 and we assume no obligation to update these forward-looking statements to reflect events that occur or circumstances that exist or change after the date on which they were made. If this presentation is reviewed after May, 9th 2017, these statements may no longer contain current or accurate information.

Safe harbor statement

Page 34: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

Autodesk VRED Professional

▪ Visualization and virtual prototyping tool

▪ Focus on Automotive

▪ High Quality OpenGL and raytracing rendering

▪ VR support

▪ Powerwalls, Cave

▪ Oculus Rift

▪ HTC Vive

Image courtesy of Porsche AG

Page 35: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

Requirements

▪ Engineering Datasets

▪ 30-70M triangles insidethe view frustum

▪ 3-5k meshes

▪ 10-20k scenegraph nodes

▪ 100-300 materials

▪ Realistic appearence

▪ Measured materials

▪ No data reduction possible

Image courtesy of Porsche AG

Page 36: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

Single Pass Stereo

▪ Render to layered texture

▪ Use latest drivers

▪ Don´t write to individual layers

▪ Adjust Frustum culling to account for both eyes

▪ Setup uniform buffers with matrices for both eyes

▪ Set layout(secondary_view_offset = 1) out int gl_Layer

▪ Use gl_Layer to access correct matrices for shading

▪ Write gl_SecondaryPositionNV in vertex or geometry shader

Page 37: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

Lens Matched Shading

▪ Not yet available in VRED

▪ Divide view into 4 quadrants

▪ Set lens coefficients for eachquadrant

▪ Setup scissor masks for eachviewport

▪ Render to all viewports

▪ Unproject the distortion

Page 38: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

Lens Matched Shading

▪ Need to avoid rendering outside the visible area

▪ glWindowRectanglesEXT

▪ Hidden Area Mesh

▪ Need to calculate whichviewports a triangle touches

▪ Use pass through geometryshader for best performance

▪ Requires different shader foreach geometry type

Page 39: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

Datasets used for testing

▪ Small Dataset

▪ ~5.5 Mtriangles, ~900 meshes, 2.5k nodes

▪ Medium Dataset

▪ ~34 Mtriangles, ~3k meshes, 19k nodes

▪ Large Dataset

▪ ~63 Mtriangles, ~5k meshes, 17k nodes

▪ Measurements done using

▪ 2 Quadro P6000

▪ 4x Multisampling + Pixelfilter

▪ HTC Vive

Page 40: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

Results

10,0 9,58,1 7,8

16,615,3 15,0 15,0

22,5

17,1

29,0

23,0

0,0

10,0

20,0

30,0

Baseline Single PassStereo

Lens MatchedShading

LMS + SPS

Fra

metim

eM

illis

econds

Small Dataset

Medium Dataset

Large Dataset

Page 41: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

Occlusion Culling

▪ Shader based occlusion culling

▪ https://github.com/nvpro-samples/gl_occlusion_culling

▪ Algorithm

▪ Render all geometries visible in the previous frame

▪ Disable Color and Depth writes

▪ Rasterize bounding boxes of all geometries

▪ Record visible bounding boxes

▪ Read back results

▪ Render remaining visible geometries

Page 42: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

Why the readback?

▪ Original algorithm relies on bindless buffers and textures

▪ Requires custom memory management

▪ Few buffers shared by many objects

▪ Difficult to handle out of memory scenarios

▪ CPU does not know what is visible

▪ Requires binding of all shaders and geometries twice

▪ Binding costs can eliminate performance gains

▪ Sorted rendering difficult

Page 43: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

Occlusion Culling results

10,0

7,05,5

16,617,9

14,5

22,5

17,1

13,3

0,0

10,0

20,0

30,0

Baseline Occlusion Culling LMS + SPS + OcclusionCulling

Fra

metim

eM

illis

econds

Small Dataset

Medium Dataset

Large Dataset

Page 44: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

VR SLI Rendering

▪ For details see GTC 2016 talk: „Integrating VR SLI into Autodesk VRED“

▪ Use one GPU per eye

▪ Bind rendersurface

▪ Setup Camera Buffer for both eyes

▪ Render the scene

▪ Copy rendersurface from GPU1 to GPU0

▪ Submit rendersurfaces to HMD

▪ New NV_gpu_multicast extension allows more flexibility

▪ Occlusion Culling

Page 45: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

VR SLI results

10,0

5,8 6,0 5,6

16,6

8,9

5,8 5,7

22,5

11,2

5,6 6,0

0,0

10,0

20,0

30,0

Baseline SLI SLI + Culling SLI + LMS +Culling

Fra

metim

eM

illis

econds

Small Dataset

Medium Dataset

Large Dataset

Page 46: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

Conclusion and final thoughts

▪ Using extensions can greatly improve performance

▪ Not every extension always works

▪ Test out different options

▪ SLI still the best option

▪ Asynchronous Reprojection/Timewarp helps a lot

Page 47: GPU Technology Conference 2017 VR Rendering …on-demand.gputechconf.com/gtc/2017/presentation/s... · VR Rendering Improvements Featuring Autodesk VRED ... Focus on Automotive

Autodesk and the Autodesk logo are registered trademarks or trademarks of Autodesk, Inc., and/or its subsidiaries and/or affiliates in the USA and/or other countries. All other brand names, product names, or trademarks belong to their respective holders.

Autodesk reserves the right to alter product and services offerings, and specifications and pricing at any time without notice, and is not responsible for typographical or graphical errors that may appear in this document.

© 2017 Autodesk. All rights reserved.