VR with Metal 2 Session 603

Size: px
Start display at page:

Download "VR with Metal 2 Session 603"

Transcription

1 Graphics and Games #WWDC17 VR with Metal 2 Session 603 Rav Dhiraj, GPU Software 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

2 VR Support in macos Developing VR Apps External GPU support

3 What is Virtual Reality? Immersive 360 3D experience Direct object manipulation Interactive environment Motion tracking

4 Enabled with Metal 2

5 Enabled with Metal 2 Direct to display capability for VR Headsets

6 Enabled with Metal 2 Direct to display capability for VR Headsets Targeted features for VR

7 Enabled with Metal 2 Direct to display capability for VR Headsets Targeted features for VR Foundational support for External GPUs

8 Platform Support NEW HTC Vive Head Mounted Display Valve SteamVR runtime Valve OpenVR Framework

9 VR Compositor Image warping for HMD optics

10 VR Compositor Image warping for HMD optics

11 Building a VR App

12 Building a VR App Two options

13 Building a VR App Two options Game engine with VR support Hides VR compositor complexity Familiar toolchain

14 Building a VR App Two options Game engine with VR support Hides VR compositor complexity Familiar toolchain Build your own native VR app Full control of rendering and synchronization

15

16

17

18 Overall, the porting of Space Pirate Trainer to macos with Unity went very smooth. We had it running on macos under a couple of hours Dirk Van Welden, I-Illusions

19 Native SteamVR App Custom app built using the OpenVR Framework Binaries and documentation available on GitHub macos sample code available soon Application OpenVR Framework SteamVR Runtime HMD and Controllers

20 VR App Building 101 Overview of VR development macos platform specifics Anatomy of a VR frame VR best practices

21 VR App Building 101 Overview of VR development macos platform specifics Anatomy of a VR frame VR best practices

22 Traditional Workload Non-VR VBL VBL VBL GPU

23 Traditional Workload Non-VR 60 fps target VBL VBL VBL GPU

24 Traditional Workload Non-VR 60 fps target 16.7 ms available frame time VBL VBL VBL GPU 16.7 ms

25 Traditional Workload Non-VR 60 fps target 16.7 ms available frame time Entire frame time available for GPU work VBL VBL VBL GPU Frame 0 Frame ms

26 VR Workload Frame time differences VBL VBL VBL GPU

27 VR Workload Frame time differences 90 fps target Reduces frame time to 11.1 ms VBL VBL VBL VBL GPU 11.1 ms

28 VR Workload Frame time differences 90 fps target Reduces frame time to 11.1 ms Additional GPU work by VR compositor VBL VBL VBL VBL GPU App 0 0 App 1 1 App ms

29 VR Workload Frame time differences 90 fps target Reduces frame time to 11.1 ms Additional GPU work by VR compositor VBL VBL VBL VBL GPU App 0 0 App 1 1 App ms 1 ms

30 VR Workload Frame time differences 90 fps target Reduces frame time to 11.1 ms Additional GPU work by VR compositor ~10ms frame time budget for your app VBL VBL VBL VBL GPU App 0 0 App 1 1 App ms 10 ms 1 ms

31 VR Workload More work every frame

32 VR Workload More work every frame Rendering the scene twice Left and right eye

33 VR Workload More work every frame Rendering the scene twice Left and right eye Rendering at higher resolution HTC Vive headset: 2160x1200 Commonly supersample at 1.2 to 1.4x when rendering

34 VR App Building 101 Overview of VR development macos platform specifics Anatomy of a VR frame VR best practices

35 Direct to Display NEW Low latency path that bypasses the Window Server VR Compositor presents directly to the HMD

36 Direct to Display NEW Low latency path that bypasses the Window Server VR Compositor presents directly to the HMD VR headsets not exposed as regular displays

37 Present to Display macos App macos Window Server Metal Display

38 Present to Headset macos with Metal 2 App VR App macos Window Server VR Compositor (eg. SteamVR) Metal 2 Metal 2 Display HMD

39 Selecting a Metal Device

40 Selecting a Metal Device SteamVR selects the device attached to the VR Headset

41 Selecting a Metal Device SteamVR selects the device attached to the VR Headset Apps should select the same Metal device

42 Selecting a Metal Device SteamVR selects the device attached to the VR Headset Apps should select the same Metal device id<mtldevice> vrdevice = nil; vrsystem->getoutputdevice((uint64_t*)&vrdevice, vr::texturetype_iosurface);

43 Managing Surfaces App VR Compositor App L L R R VR Compositor L R

44 Managing Surfaces App VR Compositor App Render L L R R VR Compositor L R

45 Managing Surfaces App VR Compositor App Render L L R R Submit VR Compositor L R

46 Managing Surfaces App VR Compositor App Render L L R R Submit VR Compositor Warp L R

47 Managing Surfaces App VR Compositor App Render L L R R Submit VR Compositor Warp L R Present

48 Managing Surfaces App VR Compositor IOSurfaces App Render L L R R Submit VR Compositor Warp L R Present

49 // Creating Metal Textures MTLTextureDescriptor *texturedesc = [MTLTextureDescriptor new]; texturedesc.width = vrwidth; texturedesc.height = vrheight; texturedesc.pixelformat = MTLPixelFormatRGBA8Unorm_sRGB; texturedesc.storagemode = MTLStorageModeManaged; texturedesc.usage = MTLTextureUsageRenderTarget MTLTextureUsageShaderRead; id <MTLTexture> right_tex = [device newtexturewithdescriptor:texturedesc iosurface:rightiosurface plane:0]; id <MTLTexture> left_tex = [device newtexturewithdescriptor:texturedesc iosurface:leftiosurface plane:0];

50 // Creating Metal Textures MTLTextureDescriptor *texturedesc = [MTLTextureDescriptor new]; texturedesc.width = vrwidth; texturedesc.height = vrheight; texturedesc.pixelformat = MTLPixelFormatRGBA8Unorm_sRGB; texturedesc.storagemode = MTLStorageModeManaged; texturedesc.usage = MTLTextureUsageRenderTarget MTLTextureUsageShaderRead; id <MTLTexture> right_tex = [device newtexturewithdescriptor:texturedesc iosurface:rightiosurface plane:0]; id <MTLTexture> left_tex = [device newtexturewithdescriptor:texturedesc iosurface:leftiosurface plane:0];

51 // Creating Metal Textures MTLTextureDescriptor *texturedesc = [MTLTextureDescriptor new]; texturedesc.width = vrwidth; texturedesc.height = vrheight; texturedesc.pixelformat = MTLPixelFormatRGBA8Unorm_sRGB; texturedesc.storagemode = MTLStorageModeManaged; texturedesc.usage = MTLTextureUsageRenderTarget MTLTextureUsageShaderRead; id <MTLTexture> right_tex = [device newtexturewithdescriptor:texturedesc iosurface:rightiosurface plane:0]; id <MTLTexture> left_tex = [device newtexturewithdescriptor:texturedesc iosurface:leftiosurface plane:0];

52 // Creating Metal Textures MTLTextureDescriptor *texturedesc = [MTLTextureDescriptor new]; texturedesc.width = vrwidth; texturedesc.height = vrheight; texturedesc.pixelformat = MTLPixelFormatRGBA8Unorm_sRGB; texturedesc.storagemode = MTLStorageModeManaged; texturedesc.usage = MTLTextureUsageRenderTarget MTLTextureUsageShaderRead; id <MTLTexture> right_tex = [device newtexturewithdescriptor:texturedesc iosurface:rightiosurface plane:0]; id <MTLTexture> left_tex = [device newtexturewithdescriptor:texturedesc iosurface:leftiosurface plane:0];

53 VR App Building 101 Overview of VR development macos platform specifics Anatomy of a VR frame VR best practices

54 VR Compositor Synchronization VR compositor and App work in lock step Results of App rendering submitted to VR compositor GPU is a shared resource Submission order matters

55 VR Compositor Synchronization Start of frame VBL VBL App VR Compositor CPU Metal GPU 11.1 ms

56 VR Compositor Synchronization Start of frame WaitGetPoses() VBL VBL App VR Compositor CPU Metal GPU 11.1 ms

57 VR Compositor Synchronization Start of frame WaitGetPoses() VBL VBL App Encode VR Compositor CPU Metal GPU 11.1 ms

58 VR Compositor Synchronization Submit to VR compositor VBL VBL App Encode VR Compositor CPU Metal GPU 11.1 ms

59 VR Compositor Synchronization Submit to VR compositor VBL VBL App Encode Commit VR Compositor CPU Metal GPU App Render 11.1 ms

60 VR Compositor Synchronization Submit to VR compositor VBL VBL App Encode Commit Submit x2 VR Compositor Encode CPU Metal GPU App Render 11.1 ms

61 VR Compositor Synchronization Guaranteeing submission order VBL VBL App Encode/ VR Compositor Encode CPU Metal GPU App Render 11.1 ms

62 VR Compositor Synchronization Guaranteeing submission order VBL VBL App Encode/ Scheduled VR Compositor Encode CPU Metal GPU App Render 11.1 ms

63 VR Compositor Synchronization Guaranteeing submission order VBL VBL App Encode/ Scheduled PostPresentHandoff() VR Compositor Encode CPU Metal GPU App Render 11.1 ms

64 VR Compositor Synchronization Guaranteeing submission order VBL VBL App Encode/ Scheduled PostPresentHandoff() VR Compositor Encode Commit CPU Metal GPU App Render 11.1 ms

65 VR Compositor Synchronization Guaranteeing submission order VBL VBL App Encode/ Scheduled PostPresentHandoff() VR Compositor Encode Commit CPU Metal GPU App Render Warp 11.1 ms

66 vr.vrcompositor()->waitgetposes(vrtrackeddeviceposes, vr::k_unmaxtrackeddevicecount, nullptr, 0); id<mtlcommandbuffer> commandbuffer = [scenecommandqueue commandbuffer]; // render left and right eye images into eyetextures [self _drawscenewithcommandbuffer:commandbuffer]; [commandbuffer commit]; vr.vrcompositor()->submit(vr::eye_left, &eyetextures[0], &vreyebounds[0]); vr.vrcompositor()->submit(vr::eye_right, &eyetextures[1], &vreyebounds[1]); // wait until the GPU work is scheduled [commandbuffer waituntilscheduled]; // signal to the compositor that it can submit work to the GPU vr.vrcompositor()->postpresenthandoff();

67 vr.vrcompositor()->waitgetposes(vrtrackeddeviceposes, vr::k_unmaxtrackeddevicecount, nullptr, 0); id<mtlcommandbuffer> commandbuffer = [scenecommandqueue commandbuffer]; // render left and right eye images into eyetextures [self _drawscenewithcommandbuffer:commandbuffer]; [commandbuffer commit]; vr.vrcompositor()->submit(vr::eye_left, &eyetextures[0], &vreyebounds[0]); vr.vrcompositor()->submit(vr::eye_right, &eyetextures[1], &vreyebounds[1]); // wait until the GPU work is scheduled [commandbuffer waituntilscheduled]; // signal to the compositor that it can submit work to the GPU vr.vrcompositor()->postpresenthandoff();

68 vr.vrcompositor()->waitgetposes(vrtrackeddeviceposes, vr::k_unmaxtrackeddevicecount, nullptr, 0); id<mtlcommandbuffer> commandbuffer = [scenecommandqueue commandbuffer]; // render left and right eye images into eyetextures [self _drawscenewithcommandbuffer:commandbuffer]; [commandbuffer commit]; vr.vrcompositor()->submit(vr::eye_left, &eyetextures[0], &vreyebounds[0]); vr.vrcompositor()->submit(vr::eye_right, &eyetextures[1], &vreyebounds[1]); // wait until the GPU work is scheduled [commandbuffer waituntilscheduled]; // signal to the compositor that it can submit work to the GPU vr.vrcompositor()->postpresenthandoff();

69 vr.vrcompositor()->waitgetposes(vrtrackeddeviceposes, vr::k_unmaxtrackeddevicecount, nullptr, 0); id<mtlcommandbuffer> commandbuffer = [scenecommandqueue commandbuffer]; // render left and right eye images into eyetextures [self _drawscenewithcommandbuffer:commandbuffer]; [commandbuffer commit]; vr.vrcompositor()->submit(vr::eye_left, &eyetextures[0], &vreyebounds[0]); vr.vrcompositor()->submit(vr::eye_right, &eyetextures[1], &vreyebounds[1]); // wait until the GPU work is scheduled [commandbuffer waituntilscheduled]; // signal to the compositor that it can submit work to the GPU vr.vrcompositor()->postpresenthandoff();

70 vr.vrcompositor()->waitgetposes(vrtrackeddeviceposes, vr::k_unmaxtrackeddevicecount, nullptr, 0); id<mtlcommandbuffer> commandbuffer = [scenecommandqueue commandbuffer]; // render left and right eye images into eyetextures [self _drawscenewithcommandbuffer:commandbuffer]; [commandbuffer commit]; vr.vrcompositor()->submit(vr::eye_left, &eyetextures[0], &vreyebounds[0]); vr.vrcompositor()->submit(vr::eye_right, &eyetextures[1], &vreyebounds[1]); // wait until the GPU work is scheduled [commandbuffer waituntilscheduled]; // signal to the compositor that it can submit work to the GPU vr.vrcompositor()->postpresenthandoff();

71 vr.vrcompositor()->waitgetposes(vrtrackeddeviceposes, vr::k_unmaxtrackeddevicecount, nullptr, 0); id<mtlcommandbuffer> commandbuffer = [scenecommandqueue commandbuffer]; // render left and right eye images into eyetextures [self _drawscenewithcommandbuffer:commandbuffer]; [commandbuffer commit]; vr.vrcompositor()->submit(vr::eye_left, &eyetextures[0], &vreyebounds[0]); vr.vrcompositor()->submit(vr::eye_right, &eyetextures[1], &vreyebounds[1]); // wait until the GPU work is scheduled [commandbuffer waituntilscheduled]; // signal to the compositor that it can submit work to the GPU vr.vrcompositor()->postpresenthandoff();

72 vr.vrcompositor()->waitgetposes(vrtrackeddeviceposes, vr::k_unmaxtrackeddevicecount, nullptr, 0); id<mtlcommandbuffer> commandbuffer = [scenecommandqueue commandbuffer]; // render left and right eye images into eyetextures [self _drawscenewithcommandbuffer:commandbuffer]; [commandbuffer commit]; vr.vrcompositor()->submit(vr::eye_left, &eyetextures[0], &vreyebounds[0]); vr.vrcompositor()->submit(vr::eye_right, &eyetextures[1], &vreyebounds[1]); // wait until the GPU work is scheduled [commandbuffer waituntilscheduled]; // signal to the compositor that it can submit work to the GPU vr.vrcompositor()->postpresenthandoff();

73 VR Compositor Synchronization Frame cadence WGP() VBL WGP() VBL App Encode Encode VR Compositor Encode CPU Metal GPU App Render Warp 11.1 ms

74 VR Compositor Synchronization Frame cadence WGP() VBL WGP() VBL App Encode Encode VR Compositor Encode CPU Metal GPU App Render Warp 11.1 ms 11.1 ms

75 VR App Building 101 Overview of VR development macos platform specifics Anatomy of a VR frame VR best practices

76 Start Early VBL VBL CPU App Vc GPU Idle App Vc No Running Start

77 Start Early CPU work at frame start can introduce GPU bubbles VBL VBL CPU App Vc GPU Idle App Vc No Running Start

78 Start Early CPU work at frame start can introduce GPU bubbles SteamVR provides a mechanism to start early VBL VBL VBL VBL CPU App Vc App0 Vc App1 Vc GPU Idle App Vc App0 Vc App1 No Running Start With Running Start

79 Start Early CPU work at frame start can introduce GPU bubbles SteamVR provides a mechanism to start early Encode your frame after WaitGetPoses returns VBL VBL WGP VBL WGP VBL CPU App Vc App0 Vc App1 Vc GPU Idle App Vc App0 Vc App1 No Running Start With Running Start

80 Split Your Command Buffers VBL VBL CPU App Vc GPU Idle App Vc Single CB

81 Split Your Command Buffers Avoid submitting monolithic command buffers VBL VBL CPU App Vc GPU Idle App Vc Single CB

82 Split Your Command Buffers Avoid submitting monolithic command buffers Split and submit as you go to maximize GPU utilization VBL VBL VBL VBL CPU App Vc Vc GPU Idle App Vc Vc Single CB Split CB

83 Coalesce Left and Right Eye Draws

84 Coalesce Left and Right Eye Draws NEW Use the Metal 2 Viewport Array feature Per-primitive viewport selection in the vertex shader

85 Coalesce Left and Right Eye Draws NEW Use the Metal 2 Viewport Array feature Per-primitive viewport selection in the vertex shader Render to left and right eye with a single draw call

86 // Each viewport will cover half the texture size MTLViewport vrviewports[2]; vrviewports[0].originx = 0; vrviewports[0].originy = 0; vrviewports[0].width = width; vrviewports[0].height = height; vrviewports[0].znear = 0.0; vrviewports[0].zfar = 1.0; Height vrviewports[1].originx = width; vrviewports[1].originy = 0; vrviewports[1].width = width; vrviewports[1].height = height; vrviewports[1].znear = 0.0; vrviewports[1].zfar = 1.0; 2 x Width

87 // Each viewport will cover half the texture size MTLViewport vrviewports[2]; vrviewports[0].originx = 0; vrviewports[0].originy = 0; vrviewports[0].width = width; vrviewports[0].height = height; vrviewports[0].znear = 0.0; vrviewports[0].zfar = 1.0; Height (0, 0) vrviewports[1].originx = width; vrviewports[1].originy = 0; vrviewports[1].width = width; vrviewports[1].height = height; vrviewports[1].znear = 0.0; vrviewports[1].zfar = 1.0; (width, height) 2 x Width

88 // Each viewport will cover half the texture size MTLViewport vrviewports[2]; vrviewports[0].originx = 0; vrviewports[0].originy = 0; vrviewports[0].width = width; vrviewports[0].height = height; vrviewports[0].znear = 0.0; vrviewports[0].zfar = 1.0; Height (width, 0) vrviewports[1].originx = width; vrviewports[1].originy = 0; vrviewports[1].width = width; vrviewports[1].height = height; vrviewports[1].znear = 0.0; vrviewports[1].zfar = 1.0; 2 x Width (width, height)

89 // Set the viewports on your render command encoder for that render pass [renderencoder setviewports:vrviewports count:2]; // The instance_id will be used as the "eye" index [renderencoder drawindexedprimitives:primitivetype indexcount:count indextype:type indexbuffer:buffer indexbufferoffset:offset instancecount:2];

90 // Set the viewports on your render command encoder for that render pass [renderencoder setviewports:vrviewports count:2]; // The instance_id will be used as the "eye" index [renderencoder drawindexedprimitives:primitivetype indexcount:count indextype:type indexbuffer:buffer indexbufferoffset:offset instancecount:2];

91 // Set the viewports on your render command encoder for that render pass [renderencoder setviewports:vrviewports count:2]; // The instance_id will be used as the "eye" index [renderencoder drawindexedprimitives:primitivetype indexcount:count indextype:type indexbuffer:buffer indexbufferoffset:offset instancecount:2];

92 typedef struct { float4 position [[ position ]]; ushort viewport [[ viewport_array_index ]]; } ColorInOut; // Vertex Shader treats instance_id as an eye index vertex ColorInOut VS(Vertex in [[ stage_in ]], constant AAPLUniforms& uniforms [[ buffer(kbufferindexuniforms) ]], ushort iid [[ instance_id ]]) { ColorInOut out; out.position = uniforms.modelviewprojectionmatrix[iid] * float4(in.position, 1.0); out.viewport = iid; return out; }

93 typedef struct { float4 position [[ position ]]; ushort viewport [[ viewport_array_index ]]; } ColorInOut; // Vertex Shader treats instance_id as an eye index vertex ColorInOut VS(Vertex in [[ stage_in ]], constant AAPLUniforms& uniforms [[ buffer(kbufferindexuniforms) ]], ushort iid [[ instance_id ]]) { ColorInOut out; out.position = uniforms.modelviewprojectionmatrix[iid] * float4(in.position, 1.0); out.viewport = iid; return out; }

94 typedef struct { float4 position [[ position ]]; ushort viewport [[ viewport_array_index ]]; } ColorInOut; // Vertex Shader treats instance_id as an eye index vertex ColorInOut VS(Vertex in [[ stage_in ]], constant AAPLUniforms& uniforms [[ buffer(kbufferindexuniforms) ]], ushort iid [[ instance_id ]]) { ColorInOut out; out.position = uniforms.modelviewprojectionmatrix[iid] * float4(in.position, 1.0); out.viewport = iid; return out; }

95 typedef struct { float4 position [[ position ]]; ushort viewport [[ viewport_array_index ]]; } ColorInOut; // Vertex Shader treats instance_id as an eye index vertex ColorInOut VS(Vertex in [[ stage_in ]], constant AAPLUniforms& uniforms [[ buffer(kbufferindexuniforms) ]], ushort iid [[ instance_id ]]) { ColorInOut out; out.position = uniforms.modelviewprojectionmatrix[iid] * float4(in.position, 1.0); out.viewport = iid; return out; }

96 typedef struct { float4 position [[ position ]]; ushort viewport [[ viewport_array_index ]]; } ColorInOut; // Vertex Shader treats instance_id as an eye index vertex ColorInOut VS(Vertex in [[ stage_in ]], constant AAPLUniforms& uniforms [[ buffer(kbufferindexuniforms) ]], ushort iid [[ instance_id ]]) { ColorInOut out; out.position = uniforms.modelviewprojectionmatrix[iid] * float4(in.position, 1.0); out.viewport = iid; return out; }

97 Render Fewer Pixels

98 Render Fewer Pixels 15% of rendered pixels not displayed

99 Render Fewer Pixels 15% of rendered pixels not displayed Use SteamVR stencil mask to clip these pixels

100 VR App Building 101 Overview of VR development macos platform specifics Anatomy of a VR frame VR best practices

101 Nat Brown, Valve Software VR on macos

102 VR Motivation VR is a long-term investment for Valve room scale + input = magical Valve licenses VR tech non-exclusively

103 SteamVR Architecture VR application OpenVR APIs vrclient shared memory state and shared textures + high-frequency poses and input events vrmonitor vrserver vrcompositor vrdashboard device drivers Metal HMD and Controllers

104 SteamVR Architecture VR application OpenVR APIs vrclient shared memory state and shared textures + high-frequency poses and input events vrmonitor vrserver vrcompositor vrdashboard device drivers Metal HMD and Controllers

105 SteamVR Architecture VR application OpenVR APIs vrclient shared memory state and shared textures + high-frequency poses and input events vrmonitor vrserver vrcompositor vrdashboard device drivers Metal HMD and Controllers

106 SteamVR Architecture VR application OpenVR APIs vrclient shared memory state and shared textures + high-frequency poses and input events vrmonitor vrserver vrcompositor vrdashboard device drivers Metal HMD and Controllers

107 SteamVR Architecture VR application OpenVR APIs vrclient shared memory state and shared textures + high-frequency poses and input events vrmonitor vrserver vrcompositor vrdashboard device drivers Metal HMD and Controllers

108 SteamVR Architecture VR application OpenVR APIs vrclient shared memory state and shared textures + high-frequency poses and input events vrmonitor vrserver vrcompositor vrdashboard device drivers Metal HMD and Controllers

109 SteamVR on macos Closer engagement with Apple started Summer 2016 Bringing the compositor to Metal only took a few weeks Adopted the Metal 2 Direct to Display APIs

110 SteamVR on macos 90Hz ms VBL VBL VBL VBL WaitGetPoses() returns Running Start CPU Simulation / Prep 5 Simulation / Prep 6 Simulation / Prep 7 Submit 4 Submit 5 Submit 6 Submit 7 GPU Render 4 Render 5 Render 6 Render vrcompositor 5 6 Panel photons photons photons photons Rendering Prediction to Photons returned by WaitGetPoses() Simulation Prediction to Photons ~36 ms returned by GetDeviceToAbsoluteTrackingPose()

111 Where to get SteamVR Install Steam and create a free account Under Library / Tools, install SteamVR Opt into the SteamVR Beta Right-Click SteamVR, choose Properties Choose beta - SteamVR Beta Update Download OpenVR headers & framework

112 Using OpenVR in Your App Include OpenVR.framework inside your app bundle Conveys version to the SteamVR runtime Add OpenVR.Framework to Embedded Binaries under General settings Xcode will automatically set the Runtime Search Path appropriately for your bundle

113 Feedback and Support

114 Nat Brown, Valve Software

115 External GPU Support

116 Background External chassis with a desktop class GPU Connected to host via Thunderbolt

117 Goals Enable VR development

118 Goals Enable VR development Performance improvement in other GPU bound cases

119 External Graphics Developer Kit Sonnet 350W external GPU Chassis AMD Radeon RX 580 GPU Optimized for Thunderbolt 3 capable Macs Available for purchase today

120 // Identifying the External GPU id<mtldevice> externalgpu = nil; NSArray<id<MTLDevice>> * availabledevices = MTLCopyAllDevices(); for (id <MTLDevice> device in availabledevices) { if (device.removable) { externalgpu = device; return; } }

121 // Identifying the External GPU id<mtldevice> externalgpu = nil; NSArray<id<MTLDevice>> * availabledevices = MTLCopyAllDevices(); for (id <MTLDevice> device in availabledevices) { if (device.removable) { externalgpu = device; return; } }

122 // Identifying the External GPU id<mtldevice> externalgpu = nil; NSArray<id<MTLDevice>> * availabledevices = MTLCopyAllDevices(); for (id <MTLDevice> device in availabledevices) { if (device.removable) { externalgpu = device; return; } }

123 Thunderbolt 3 Bandwidth Relative Bandwidth Thunderbolt 2 1x 2x

124 Thunderbolt 3 Bandwidth Twice the bandwidth capability of Thunderbolt 2 Relative Bandwidth Thunderbolt 2 Thunderbolt 3 1x 2x

125 Thunderbolt 3 Bandwidth Twice the bandwidth capability of Thunderbolt 2 25% the bandwidth of PCIe x16 Relative Bandwidth Thunderbolt 2 Thunderbolt 3 PCIe x16 1x 2x 3x 4x 5x 6x 7x 8x

126 GPU Power vs. Bandwidth MacBook Pro System RAM Intel Chipset

127 GPU Power vs. Bandwidth MacBook Pro Internal GPU VRAM System RAM Intel Chipset

128 GPU Power vs. Bandwidth MacBook Pro Internal GPU VRAM System RAM Intel Chipset Thunderbolt 3 External GPU VRAM

129 GPU Power vs. Bandwidth Treat the GPU and link as a pair Optimal combination will depend on workload MacBook Pro Internal GPU VRAM System RAM Intel Chipset Thunderbolt 3 External GPU VRAM

130 Complex Display Topology

131 Complex Display Topology Displays connected to different GPUs

132 Complex Display Topology Displays connected to different GPUs Performance impact to render on one GPU and display on another

133 Complex Display Topology Displays connected to different GPUs Performance impact to render on one GPU and display on another Where your content is displayed matters

134 Golden Rule for GPU Selection Render on the same GPU your app displays on MacBook Pro Internal GPU VRAM Display System RAM Intel Chipset TBT3 External GPU VRAM Display

135 GPU Selection Decision Tree

136 GPU Selection Decision Tree Presenting to Display

137 GPU Selection Decision Tree Presenting to Display Yes Select GPU attached to Display

138 GPU Selection Decision Tree No (eg. Compute) Presenting to Display Yes Prefer low power Select GPU attached to Display

139 GPU Selection Decision Tree No (eg. Compute) Presenting to Display Yes Yes Prefer low power Select GPU attached to Display Select LowPower GPU

140 GPU Selection Decision Tree No (eg. Compute) Presenting to Display Yes Yes Prefer low power No Select GPU attached to Display Select LowPower GPU Select external GPU

141 GPU Selection Decision Tree No (eg. Compute) Presenting to Display Yes Yes Prefer low power No Select GPU attached to Display Select LowPower GPU Select external GPU

142 Metal Device from Display Use existing CoreGraphics API // Get the CGDirectDisplayID for the display your app window is on NSNumber* num = view.window.screen.devicedescription[@"nsscreennumber"]; CGDirectDisplayID viewdisplayid = [num unsignedintegervalue]; // query CG for the metal device id<mtldevice> newpreferreddevice = CGDirectDisplayCopyCurrentMetalDevice(viewDisplayID);

143 Metal Device from Display Use existing CoreGraphics API // Get the CGDirectDisplayID for the display your app window is on NSNumber* num = view.window.screen.devicedescription[@"nsscreennumber"]; CGDirectDisplayID viewdisplayid = [num unsignedintegervalue]; // query CG for the metal device id<mtldevice> newpreferreddevice = CGDirectDisplayCopyCurrentMetalDevice(viewDisplayID);

144 Metal Device from Display Use existing CoreGraphics API // Get the CGDirectDisplayID for the display your app window is on NSNumber* num = view.window.screen.devicedescription[@"nsscreennumber"]; CGDirectDisplayID viewdisplayid = [num unsignedintegervalue]; // query CG for the metal device id<mtldevice> newpreferreddevice = CGDirectDisplayCopyCurrentMetalDevice(viewDisplayID);

145 GPU Migration

146 GPU Migration Display migration may require GPU migration

147 GPU Migration Display migration may require GPU migration Register for NSWindowDidChangeScreenNotification Triggered when windows move across displays [[NSNotificationCenter defaultcenter] addobserver:self name:nswindowdidchangescreennotification object:nil];

148 // Get the Metal device for the GPU driving the display your app is now on NSNumber* num = view.window.screen.devicedescription[@"nsscreennumber"]; CGDirectDisplayID viewdisplayid = [num unsignedintegervalue]; id<mtldevice> newpreferreddevice = CGDirectDisplayCopyCurrentMetalDevice(viewDisplayID); // Early out if this display is being driven by the same GPU if (currentdevice == newpreferreddevice) return; // switch view to new device view.device = newpreferreddevice; // handle App migration to the new GPU // Call draw on this new device [MetalKitRenderer draw:view];

149 // Get the Metal device for the GPU driving the display your app is now on NSNumber* num = view.window.screen.devicedescription[@"nsscreennumber"]; CGDirectDisplayID viewdisplayid = [num unsignedintegervalue]; id<mtldevice> newpreferreddevice = CGDirectDisplayCopyCurrentMetalDevice(viewDisplayID); // Early out if this display is being driven by the same GPU if (currentdevice == newpreferreddevice) return; // switch view to new device view.device = newpreferreddevice; // handle App migration to the new GPU // Call draw on this new device [MetalKitRenderer draw:view];

150 // Get the Metal device for the GPU driving the display your app is now on NSNumber* num = view.window.screen.devicedescription[@"nsscreennumber"]; CGDirectDisplayID viewdisplayid = [num unsignedintegervalue]; id<mtldevice> newpreferreddevice = CGDirectDisplayCopyCurrentMetalDevice(viewDisplayID); // Early out if this display is being driven by the same GPU if (currentdevice == newpreferreddevice) return; // switch view to new device view.device = newpreferreddevice; // handle App migration to the new GPU // Call draw on this new device [MetalKitRenderer draw:view];

151 // Get the Metal device for the GPU driving the display your app is now on NSNumber* num = view.window.screen.devicedescription[@"nsscreennumber"]; CGDirectDisplayID viewdisplayid = [num unsignedintegervalue]; id<mtldevice> newpreferreddevice = CGDirectDisplayCopyCurrentMetalDevice(viewDisplayID); // Early out if this display is being driven by the same GPU if (currentdevice == newpreferreddevice) return; // switch view to new device view.device = newpreferreddevice; // handle App migration to the new GPU // Call draw on this new device [MetalKitRenderer draw:view];

152 Attach and Removal Notifications New with Metal 2 NEW MTLDeviceWasAddedNotification MTLDeviceWasRemovedNotification MTLDeviceRemovalRequestedNotification

153 NSArray< id<mtldevice> >* devices = nil; id<nsobject> metaldeviceobserver = nil; devices = MTLCopyAllDevicesWithObserver(&metalDeviceObserver, ^(id<mtldevice> device, MTLNotificationName name) { [self handlegpuhotplug:device notifier:name]; }); NEW

154 NSArray< id<mtldevice> >* devices = nil; id<nsobject> metaldeviceobserver = nil; devices = MTLCopyAllDevicesWithObserver(&metalDeviceObserver, ^(id<mtldevice> device, MTLNotificationName name) { [self handlegpuhotplug:device notifier:name]; }); NEW

155 NSArray< id<mtldevice> >* devices = nil; id<nsobject> metaldeviceobserver = nil; devices = MTLCopyAllDevicesWithObserver(&metalDeviceObserver, ^(id<mtldevice> device, MTLNotificationName name) { [self handlegpuhotplug:device notifier:name]; }); NEW

156 - (void)handlegpuhotplug:(id<mtldevice>)device notifier:(mtlnotificationname)notifier NEW { } if (notifier == MTLDeviceWasAddedNotification) // Device plugged in else if (notifier == MTLDeviceRemovalRequestedNotification) // Device Removal Requested. Cleanup and switch to preferred device else if (notifier == MTLDeviceWasRemovedNotification) // additional handling of surprise removal

157 - (void)handlegpuhotplug:(id<mtldevice>)device notifier:(mtlnotificationname)notifier NEW { } if (notifier == MTLDeviceWasAddedNotification) // Device plugged in else if (notifier == MTLDeviceRemovalRequestedNotification) // Device Removal Requested. Cleanup and switch to preferred device else if (notifier == MTLDeviceWasRemovedNotification) // additional handling of surprise removal

158 - (void)handlegpuhotplug:(id<mtldevice>)device notifier:(mtlnotificationname)notifier NEW { } if (notifier == MTLDeviceWasAddedNotification) // Device plugged in else if (notifier == MTLDeviceRemovalRequestedNotification) // Device Removal Requested. Cleanup and switch to preferred device else if (notifier == MTLDeviceWasRemovedNotification) // additional handling of surprise removal

159 Unexpected GPU Removal

160 Unexpected GPU Removal Metal API will return errors on GPU removal Survive until a GPU migration notification Regenerate data in GPU local memory

161 Best Practices

162 Best Practices Retain devices after migration

163 Best Practices Retain devices after migration Manage GPU migration for each window

164 Best Practices Retain devices after migration Manage GPU migration for each window Avoid transferring data between GPUs

165 VR Best Practices

166 VR Best Practices Attach the VR headset to the external GPU

167 VR Best Practices Attach the VR headset to the external GPU Present to a display driven by the external GPU

168 VR Best Practices Attach the VR headset to the external GPU Present to a display driven by the external GPU Cache resources on the external GPU

169 Summary VR development enabled with Metal 2 Support for HTC Vive and SteamVR VR enabled game engines or build a native VR app External GPU support

170 Related Sessions Introducing Metal 2 Executive Ballroom Tuesday 1:50PM Metal 2 Optimization and Debugging Executive Ballroom Thursday 3:15PM Using Metal 2 for Compute Grand Ballroom A Thursday 4:10PM

171 Metal Labs Metal 2 Lab Technology Lab A Tues 3:10PM 6:00PM VR with Metal 2 Lab Technology Lab A Wed 3:10PM 6:00PM Metal 2 Lab Technology Lab F Fri 9:00AM 12:00PM

172

Oculus Rift Getting Started Guide

Oculus Rift Getting Started Guide Oculus Rift Getting Started Guide Version 1.23 2 Introduction Oculus Rift Copyrights and Trademarks 2017 Oculus VR, LLC. All Rights Reserved. OCULUS VR, OCULUS, and RIFT are trademarks of Oculus VR, LLC.

More information

Exploring Virtual Reality (VR) with ArcGIS. Euan Cameron Simon Haegler Mark Baird

Exploring Virtual Reality (VR) with ArcGIS. Euan Cameron Simon Haegler Mark Baird Exploring Virtual Reality (VR) with ArcGIS Euan Cameron Simon Haegler Mark Baird Agenda Introduction & Terminology Application & Market Potential Mobile VR with ArcGIS 360VR Desktop VR with CityEngine

More information

Tobii Pro VR Analytics Product Description

Tobii Pro VR Analytics Product Description Tobii Pro VR Analytics Product Description 1 Introduction 1.1 Overview This document describes the features and functionality of Tobii Pro VR Analytics. It is an analysis software tool that integrates

More information

Oculus Rift Introduction Guide. Version

Oculus Rift Introduction Guide. Version Oculus Rift Introduction Guide Version 0.8.0.0 2 Introduction Oculus Rift Copyrights and Trademarks 2017 Oculus VR, LLC. All Rights Reserved. OCULUS VR, OCULUS, and RIFT are trademarks of Oculus VR, LLC.

More information

VR Capture & Analysis Guide. FCAT VR Frame Capture Analysis Tools for VR

VR Capture & Analysis Guide. FCAT VR Frame Capture Analysis Tools for VR VR Capture & Analysis Guide FCAT VR Frame Capture Analysis Tools for VR 1 TABLE OF CONTENTS Table of Contents... 2 FCAT VR... 4 Measuring the Quality of your VR Experience... 4 FCAT VR Capture...4 FCAT

More information

Oculus Rift Getting Started Guide

Oculus Rift Getting Started Guide Oculus Rift Getting Started Guide Version 1.7.0 2 Introduction Oculus Rift Copyrights and Trademarks 2017 Oculus VR, LLC. All Rights Reserved. OCULUS VR, OCULUS, and RIFT are trademarks of Oculus VR, LLC.

More information

SteamVR Unity Plugin Quickstart Guide

SteamVR Unity Plugin Quickstart Guide The SteamVR Unity plugin comes in three different versions depending on which version of Unity is used to download it. 1) v4 - For use with Unity version 4.x (tested going back to 4.6.8f1) 2) v5 - For

More information

pcon.planner PRO Plugin VR-Viewer

pcon.planner PRO Plugin VR-Viewer pcon.planner PRO Plugin VR-Viewer Manual Dokument Version 1.2 Author DRT Date 04/2018 2018 EasternGraphics GmbH 1/10 pcon.planner PRO Plugin VR-Viewer Manual Content 1 Things to Know... 3 2 Technical Tips...

More information

Virtual Reality Mobile 360 Nanodegree Syllabus (nd106)

Virtual Reality Mobile 360 Nanodegree Syllabus (nd106) Virtual Reality Mobile 360 Nanodegree Syllabus (nd106) Join the Creative Revolution Before You Start Thank you for your interest in the Virtual Reality Nanodegree program! In order to succeed in this program,

More information

VR-Plugin. for Autodesk Maya.

VR-Plugin. for Autodesk Maya. VR-Plugin for Autodesk Maya 1 1 1. Licensing process Licensing... 3 2 2. Quick start Quick start... 4 3 3. Rendering Rendering... 10 4 4. Optimize performance Optimize performance... 11 5 5. Troubleshooting

More information

HMD based VR Service Framework. July Web3D Consortium Kwan-Hee Yoo Chungbuk National University

HMD based VR Service Framework. July Web3D Consortium Kwan-Hee Yoo Chungbuk National University HMD based VR Service Framework July 31 2017 Web3D Consortium Kwan-Hee Yoo Chungbuk National University khyoo@chungbuk.ac.kr What is Virtual Reality? Making an electronic world seem real and interactive

More information

Tobii Pro VR Analytics Product Description

Tobii Pro VR Analytics Product Description Tobii Pro VR Analytics Product Description 1 Introduction 1.1 Overview This document describes the features and functionality of Tobii Pro VR Analytics. It is an analysis software tool that integrates

More information

The value of VR for professionals. Sébastien Cb MiddleVR.com

The value of VR for professionals. Sébastien Cb  MiddleVR.com The value of VR for professionals Sébastien Cb Kuntz CEO @SebKuntz @MiddleVR MiddleVR.com Virtual reality for professionals Team of VR experts Founded in 2012 VR Content creation professional services

More information

WebVR: Building for the Immersive Web. Tony Parisi Head of VR/AR, Unity Technologies

WebVR: Building for the Immersive Web. Tony Parisi Head of VR/AR, Unity Technologies WebVR: Building for the Immersive Web Tony Parisi Head of VR/AR, Unity Technologies About me Co-creator, VRML, X3D, gltf Head of VR/AR, Unity tonyp@unity3d.com Advisory http://www.uploadvr.com http://www.highfidelity.io

More information

Technical Guide. Updated June 20, Page 1 of 63

Technical Guide. Updated June 20, Page 1 of 63 Technical Guide Updated June 20, 2018 Page 1 of 63 How to use VRMark... 4 Choose a performance level... 5 Choose an evaluation mode... 6 Choose a platform... 7 Target frame rate... 8 Judge with your own

More information

This guide updated November 29, 2017

This guide updated November 29, 2017 Page 1 of 57 This guide updated November 29, 2017 How to use VRMark... 4 Choose a performance level... 5 Choose an evaluation mode... 6 Choose a platform... 7 Target frame rate... 8 Judge with your own

More information

Virtual Universe Pro. Player Player 2018 for Virtual Universe Pro

Virtual Universe Pro. Player Player 2018 for Virtual Universe Pro Virtual Universe Pro Player 2018 1 Main concept The 2018 player for Virtual Universe Pro allows you to generate and use interactive views for screens or virtual reality headsets. The 2018 player is "hybrid",

More information

SPIDERMAN VR. Adam Elgressy and Dmitry Vlasenko

SPIDERMAN VR. Adam Elgressy and Dmitry Vlasenko SPIDERMAN VR Adam Elgressy and Dmitry Vlasenko Supervisors: Boaz Sternfeld and Yaron Honen Submission Date: 09/01/2019 Contents Who We Are:... 2 Abstract:... 2 Previous Work:... 3 Tangent Systems & Development

More information

Power of Realtime 3D-Rendering. Raja Koduri

Power of Realtime 3D-Rendering. Raja Koduri Power of Realtime 3D-Rendering Raja Koduri 1 We ate our GPU cake - vuoi la botte piena e la moglie ubriaca And had more too! 16+ years of (sugar) high! In every GPU generation More performance and performance-per-watt

More information

ReVRSR: Remote Virtual Reality for Service Robots

ReVRSR: Remote Virtual Reality for Service Robots ReVRSR: Remote Virtual Reality for Service Robots Amel Hassan, Ahmed Ehab Gado, Faizan Muhammad March 17, 2018 Abstract This project aims to bring a service robot s perspective to a human user. We believe

More information

MUVR: Supporting Multi-User Mobile Virtual Reality with Resource Constrained Edge Cloud

MUVR: Supporting Multi-User Mobile Virtual Reality with Resource Constrained Edge Cloud 2018 Third ACM/IEEE Symposium on Edge Computing MUVR: Supporting Multi-User Mobile Virtual Reality with Resource Constrained Edge Cloud Yong Li Department of Electrical Engineering and Computer Science

More information

Diving into VR World with Oculus. Homin Lee Software Engineer at Oculus

Diving into VR World with Oculus. Homin Lee Software Engineer at Oculus Diving into VR World with Oculus Homin Lee Software Engineer at Oculus Topics Who is Oculus Oculus Rift DK2 Positional Tracking SDK Latency Roadmap 1. Who is Oculus 1. Oculus is Palmer Luckey & John Carmack

More information

Assignment 5: Virtual Reality Design

Assignment 5: Virtual Reality Design Assignment 5: Virtual Reality Design Version 1.0 Visual Imaging in the Electronic Age Assigned: Thursday, Nov. 9, 2017 Due: Friday, December 1 November 9, 2017 Abstract Virtual reality has rapidly emerged

More information

Table of Contents HOL ADV

Table of Contents HOL ADV Table of Contents Lab Overview - - Horizon 7.1: Graphics Acceleartion for 3D Workloads and vgpu... 2 Lab Guidance... 3 Module 1-3D Options in Horizon 7 (15 minutes - Basic)... 5 Introduction... 6 3D Desktop

More information

FLEXLINK DESIGN TOOL VR GUIDE. documentation

FLEXLINK DESIGN TOOL VR GUIDE. documentation FLEXLINK DESIGN TOOL VR GUIDE User documentation Contents CONTENTS... 1 REQUIREMENTS... 3 SETUP... 4 SUPPORTED FILE TYPES... 5 CONTROLS... 6 EXPERIENCE 3D VIEW... 9 EXPERIENCE VIRTUAL REALITY... 10 Requirements

More information

VR/AR with ArcGIS. Pascal Mueller, Rex Hansen, Eric Wittner & Adrien Meriaux

VR/AR with ArcGIS. Pascal Mueller, Rex Hansen, Eric Wittner & Adrien Meriaux VR/AR with ArcGIS Pascal Mueller, Rex Hansen, Eric Wittner & Adrien Meriaux Agenda Introduction & Terminology Pascal Mobile VR with ArcGIS 360VR Eric Premium VR with CityEngine & Game Engines Pascal Dedicated

More information

MRT: Mixed-Reality Tabletop

MRT: Mixed-Reality Tabletop MRT: Mixed-Reality Tabletop Students: Dan Bekins, Jonathan Deutsch, Matthew Garrett, Scott Yost PIs: Daniel Aliaga, Dongyan Xu August 2004 Goals Create a common locus for virtual interaction without having

More information

Motion sickness issues in VR content

Motion sickness issues in VR content Motion sickness issues in VR content Beom-Ryeol LEE, Wookho SON CG/Vision Technology Research Group Electronics Telecommunications Research Institutes Compliance with IEEE Standards Policies and Procedures

More information

Tobii Pro VR Integration based on HTC Vive Development Kit Description

Tobii Pro VR Integration based on HTC Vive Development Kit Description Tobii Pro VR Integration based on HTC Vive Development Kit Description 1 Introduction This document describes the features and functionality of the Tobii Pro VR Integration, a retrofitted version of the

More information

Game Technologies for Apple Watch

Game Technologies for Apple Watch Graphics and Games #WWDC16 Game Technologies for Apple Watch Session 612 Christy Warren Game Technologies Engineer Fatima Broom Game Technologies Engineer Tyler Casella Game Technologies Engineer 2016

More information

Enabling Mobile Virtual Reality ARM 助力移动 VR 产业腾飞

Enabling Mobile Virtual Reality ARM 助力移动 VR 产业腾飞 Enabling Mobile Virtual Reality ARM 助力移动 VR 产业腾飞 Nathan Li Ecosystem Manager Mobile Compute Business Line Shenzhen, China May 20, 2016 3 Photograph: Mark Zuckerberg Facebook https://www.facebook.com/photo.php?fbid=10102665120179591&set=pcb.10102665126861201&type=3&theater

More information

ArcGIS Runtime: Analysis. Lucas Danzinger Mark Baird Mike Branscomb

ArcGIS Runtime: Analysis. Lucas Danzinger Mark Baird Mike Branscomb ArcGIS Runtime: Analysis Lucas Danzinger Mark Baird Mike Branscomb ArcGIS Runtime session tracks at DevSummit 2018 ArcGIS Runtime SDKs share a common core, architecture and design Functional sessions promote

More information

Shader "Custom/ShaderTest" { Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Albedo (RGB)", 2D) = "white" { _Glossiness ("Smoothness", Ran

Shader Custom/ShaderTest { Properties { _Color (Color, Color) = (1,1,1,1) _MainTex (Albedo (RGB), 2D) = white { _Glossiness (Smoothness, Ran Building a 360 video player for VR With the release of Unity 5.6 all of this became much easier, Unity now has a very competent media player baked in with extensions that allow you to import a 360 video

More information

Console Architecture 1

Console Architecture 1 Console Architecture 1 Overview What is a console? Console components Differences between consoles and PCs Benefits of console development The development environment Console game design PS3 in detail

More information

LOOKING AHEAD: UE4 VR Roadmap. Nick Whiting Technical Director VR / AR

LOOKING AHEAD: UE4 VR Roadmap. Nick Whiting Technical Director VR / AR LOOKING AHEAD: UE4 VR Roadmap Nick Whiting Technical Director VR / AR HEADLINE AND IMAGE LAYOUT RECENT DEVELOPMENTS RECENT DEVELOPMENTS At Epic, we drive our engine development by creating content. We

More information

Supporting x86-64 Address Translation for 100s of GPU Lanes. Jason Power, Mark D. Hill, David A. Wood

Supporting x86-64 Address Translation for 100s of GPU Lanes. Jason Power, Mark D. Hill, David A. Wood Supporting x86-64 Address Translation for 100s of GPU s Jason Power, Mark D. Hill, David A. Wood Summary Challenges: CPU&GPUs physically integrated, but logically separate; This reduces theoretical bandwidth,

More information

Modo VR Technical Preview User Guide

Modo VR Technical Preview User Guide Modo VR Technical Preview User Guide Copyright 2018 The Foundry Visionmongers Ltd Introduction 2 Specifications, Installation, and Setup 2 Machine Specifications 2 Installing 3 Modo VR 3 SteamVR 3 Oculus

More information

Virtual Reality Application Programming with QVR

Virtual Reality Application Programming with QVR Virtual Reality Application Programming with QVR Computer Graphics and Multimedia Systems Group University of Siegen July 26, 2017 M. Lambers Virtual Reality Application Programming with QVR 1 Overview

More information

6 System architecture

6 System architecture 6 System architecture is an application for interactively controlling the animation of VRML avatars. It uses the pen interaction technique described in Chapter 3 - Interaction technique. It is used in

More information

PERCEPTUAL INSIGHTS INTO FOVEATED VIRTUAL REALITY. Anjul Patney Senior Research Scientist

PERCEPTUAL INSIGHTS INTO FOVEATED VIRTUAL REALITY. Anjul Patney Senior Research Scientist PERCEPTUAL INSIGHTS INTO FOVEATED VIRTUAL REALITY Anjul Patney Senior Research Scientist INTRODUCTION Virtual reality is an exciting challenging workload for computer graphics Most VR pixels are peripheral

More information

Exploring Geoscience with AR/VR Technologies

Exploring Geoscience with AR/VR Technologies Exploring Geoscience with AR/VR Technologies Tim Scheitlin Computational & Information Systems Laboratory (CISL), National Center for Atmospheric Research (NCAR), Boulder, Colorado, USA Using ECMWF's Forecasts

More information

Students: Bar Uliel, Moran Nisan,Sapir Mordoch Supervisors: Yaron Honen,Boaz Sternfeld

Students: Bar Uliel, Moran Nisan,Sapir Mordoch Supervisors: Yaron Honen,Boaz Sternfeld Students: Bar Uliel, Moran Nisan,Sapir Mordoch Supervisors: Yaron Honen,Boaz Sternfeld Table of contents Background Development Environment and system Application Overview Challenges Background We developed

More information

Investigating the Post Processing of LS-DYNA in a Fully Immersive Workflow Environment

Investigating the Post Processing of LS-DYNA in a Fully Immersive Workflow Environment Investigating the Post Processing of LS-DYNA in a Fully Immersive Workflow Environment Ed Helwig 1, Facundo Del Pin 2 1 Livermore Software Technology Corporation, Livermore CA 2 Livermore Software Technology

More information

Use Virtual Wellington at events, trade shows, exhibitions, to train agents, as an educational tool and in your recruitment process.

Use Virtual Wellington at events, trade shows, exhibitions, to train agents, as an educational tool and in your recruitment process. Virtual Wellington Guidelines About Virtual Wellington is a world first gamified VR city experience that allows people to immerse themselves in Wellington without getting on a plane. Available for free

More information

Unreal. Version 1.7.0

Unreal. Version 1.7.0 Unreal Version 1.7.0 2 Introduction Unreal Copyrights and Trademarks 2017 Oculus VR, LLC. All Rights Reserved. OCULUS VR, OCULUS, and RIFT are trademarks of Oculus VR, LLC. (C) Oculus VR, LLC. All rights

More information

Team 4. Kari Cieslak, Jakob Wulf-Eck, Austin Irvine, Alex Crane, Dylan Vondracek. Project SoundAround

Team 4. Kari Cieslak, Jakob Wulf-Eck, Austin Irvine, Alex Crane, Dylan Vondracek. Project SoundAround Team 4 Kari Cieslak, Jakob Wulf-Eck, Austin Irvine, Alex Crane, Dylan Vondracek Project SoundAround Contents 1. Contents, Figures 2. Synopsis, Description 3. Milestones 4. Budget/Materials 5. Work Plan,

More information

Understanding OpenGL

Understanding OpenGL This document provides an overview of the OpenGL implementation in Boris Red. About OpenGL OpenGL is a cross-platform standard for 3D acceleration. GL stands for graphics library. Open refers to the ongoing,

More information

ADVANCED WHACK A MOLE VR

ADVANCED WHACK A MOLE VR ADVANCED WHACK A MOLE VR Tal Pilo, Or Gitli and Mirit Alush TABLE OF CONTENTS Introduction 2 Development Environment 3 Application overview 4-8 Development Process - 9 1 Introduction We developed a VR

More information

Haplug: A Haptic Plug for Dynamic VR Interactions

Haplug: A Haptic Plug for Dynamic VR Interactions Haplug: A Haptic Plug for Dynamic VR Interactions Nobuhisa Hanamitsu *, Ali Israr Disney Research, USA nobuhisa.hanamitsu@disneyresearch.com Abstract. We demonstrate applications of a new actuator, the

More information

QuickSpecs. VIVE Pro VR System with Advantage+ Service Pack. Overview

QuickSpecs. VIVE Pro VR System with Advantage+ Service Pack. Overview Overview Introduction VIVE Pro is shaping the future of how companies engage with their consumers, train their employees and develop products. VIVE Pro is built to scale with your business requirements

More information

TOUCH & FEEL VIRTUAL REALITY. DEVELOPMENT KIT - VERSION NOVEMBER 2017

TOUCH & FEEL VIRTUAL REALITY. DEVELOPMENT KIT - VERSION NOVEMBER 2017 TOUCH & FEEL VIRTUAL REALITY DEVELOPMENT KIT - VERSION 1.1 - NOVEMBER 2017 www.neurodigital.es Minimum System Specs Operating System Windows 8.1 or newer Processor AMD Phenom II or Intel Core i3 processor

More information

Apple ARKit Overview. 1. Purpose. 2. Apple ARKit. 2.1 Overview. 2.2 Functions

Apple ARKit Overview. 1. Purpose. 2. Apple ARKit. 2.1 Overview. 2.2 Functions Apple ARKit Overview 1. Purpose In the 2017 Apple Worldwide Developers Conference, Apple announced a tool called ARKit, which provides advanced augmented reality capabilities on ios. Augmented reality

More information

Achieving High Quality Mobile VR Games

Achieving High Quality Mobile VR Games Achieving High Quality Mobile VR Games Roberto Lopez Mendez, Senior Software Engineer Carl Callewaert - Americas Director & Global Leader of Evangelism, Unity Patrick O'Luanaigh CEO, ndreams GDC 2016 Agenda

More information

OCULUS VR, LLC. Oculus Developer Guide SDK Version 0.4

OCULUS VR, LLC. Oculus Developer Guide SDK Version 0.4 OCULUS VR, LLC Oculus Developer Guide SDK Version 0.4 Date: October 24, 2014 2014 Oculus VR, LLC. All rights reserved. Oculus VR, LLC Irvine CA Except as otherwise permitted by Oculus VR, LLC ( Oculus

More information

Quick Guide for. Version 1.0 Hardware setup Forsina Virtual Reality System

Quick Guide for. Version 1.0 Hardware setup Forsina Virtual Reality System Quick Guide for Version 1.0 Hardware setup Forsina Virtual Reality System Forsina system requirements Recommendation VR hardware specification 1- VR laptops XMG U727 Notebook (high performance VR laptops)

More information

HTC VIVE Installation Guide

HTC VIVE Installation Guide HTC VIVE Installation Guide Thank you for renting from Hartford Technology Rental. Get ready for an amazing experience. To help you setup the VIVE, we highly recommend you follow the steps below. Please

More information

Ingredients of Great Games

Ingredients of Great Games Graphics and Games #WWDC14 Ingredients of Great Games Session 602 Geoff Stahl Director, Games and Graphics Software 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without

More information

WALTZ OF THE WIZARD:

WALTZ OF THE WIZARD: WALTZ OF THE WIZARD: comparing the room-scale VR platforms Steam and Oculus Home PUBLICATION: X94R3U8-002 Ghostline Data Insights www.ghostline.xyz MAY 1ST 2017 9 STEAM RATING 4.6 / 5 OCULUS HOME RATING

More information

Unpredictable movement performance of Virtual Reality headsets

Unpredictable movement performance of Virtual Reality headsets Unpredictable movement performance of Virtual Reality headsets 2 1. Introduction Virtual Reality headsets use a combination of sensors to track the orientation of the headset, in order to move the displayed

More information

HARDWARE SETUP GUIDE. 1 P age

HARDWARE SETUP GUIDE. 1 P age HARDWARE SETUP GUIDE 1 P age INTRODUCTION Welcome to Fundamental Surgery TM the home of innovative Virtual Reality surgical simulations with haptic feedback delivered on low-cost hardware. You will shortly

More information

Spartan Tetris. Sources. Concept. Design. Plan. Jeff Heckey ECE /12/13.

Spartan Tetris. Sources. Concept. Design. Plan. Jeff Heckey ECE /12/13. Jeff Heckey ECE 253 12/12/13 Spartan Tetris Sources https://github.com/jheckey/spartan_tetris Concept Implement Tetris on a Spartan 1600E Starter Kit. This involves developing a new VGA Pcore for integrating

More information

NVIDIA SLI AND STUTTER AVOIDANCE:

NVIDIA SLI AND STUTTER AVOIDANCE: NVIDIA SLI AND STUTTER AVOIDANCE: A Recipe for Smooth Gaming and Perfect Scaling with Multiple GPUs NVIDIA SLI AND STUTTER AVOIDANCE: Iain Cantlay (Developer Technology Engineer) Lars Nordskog (Developer

More information

HARDWARE SETUP GUIDE. 1 P age

HARDWARE SETUP GUIDE. 1 P age HARDWARE SETUP GUIDE 1 P age INTRODUCTION Welcome to Fundamental Surgery TM the home of innovative Virtual Reality surgical simulations with haptic feedback delivered on low-cost hardware. You will shortly

More information

THE PINNACLE OF VIRTUAL REALITY CONTROLLERS

THE PINNACLE OF VIRTUAL REALITY CONTROLLERS THE PINNACLE OF VIRTUAL REALITY CONTROLLERS PRODUCT INFORMATION The Manus VR Glove is a high-end data glove that brings intuitive interaction to virtual reality. Its unique design and cutting edge technology

More information

Moving Web 3d Content into GearVR

Moving Web 3d Content into GearVR Moving Web 3d Content into GearVR Mitch Williams Samsung / 3d-online GearVR Software Engineer August 1, 2017, Web 3D BOF SIGGRAPH 2017, Los Angeles Samsung GearVR s/w development goals Build GearVRf (framework)

More information

Moving from SmartKey to Sentinel HASP. Migration Guide

Moving from SmartKey to Sentinel HASP. Migration Guide Moving from SmartKey to Sentinel HASP Migration Guide Migration Guide: Moving from SmartKey to Sentinel HASP 2 Copyrights and Trademarks Copyright 2010 SafeNet, Inc. All rights reserved. Cross-Locking,

More information

Using the Rift. Rift Navigation. Take a tour of the features of the Rift. Here are the basics of getting around in Rift.

Using the Rift. Rift Navigation. Take a tour of the features of the Rift. Here are the basics of getting around in Rift. Using the Rift Take a tour of the features of the Rift. Rift Navigation Here are the basics of getting around in Rift. Whenever you put on your Rift headset, you're entering VR (virtual reality). How to

More information

Restricted Siemens AG 2017 Realize innovation.

Restricted Siemens AG 2017 Realize innovation. Virtual Reality Kilian Knoll, Siemens PLM Realize innovation. Agenda AR-VR Background Market Environment Use Cases Teamcenter Visualization Capabilities Data Privacy a reminder Demo Page 2 AR-VR - Background

More information

Building Java Apps with ArcGIS Runtime SDK

Building Java Apps with ArcGIS Runtime SDK Building Java Apps with ArcGIS Runtime SDK Vijay Gandhi, Elise Acheson, Eric Bader Demo Source code: https://github.com/esri/arcgis-runtime-samples-java/tree/master/devsummit-2014 Video Recording: http://video.esri.com

More information

Sound rendering in Interactive Multimodal Systems. Federico Avanzini

Sound rendering in Interactive Multimodal Systems. Federico Avanzini Sound rendering in Interactive Multimodal Systems Federico Avanzini Background Outline Ecological Acoustics Multimodal perception Auditory visual rendering of egocentric distance Binaural sound Auditory

More information

UNITY TECHNOLOGY ROADMAP

UNITY TECHNOLOGY ROADMAP UNITY TECHNOLOGY ROADMAP COPYRIGHT 2015 @ UNITY TECHNOLOGIES Good Afternoon and welcome to the Unity Technology Roadmap Discussion. Objectives Decide if upcoming releases are right for your project Understand

More information

An Open Robot Simulator Environment

An Open Robot Simulator Environment An Open Robot Simulator Environment Toshiyuki Ishimura, Takeshi Kato, Kentaro Oda, and Takeshi Ohashi Dept. of Artificial Intelligence, Kyushu Institute of Technology isshi@mickey.ai.kyutech.ac.jp Abstract.

More information

SHOOT ROOM INFORMATION

SHOOT ROOM INFORMATION SHOOT ROOM INFORMATION Access to the DMA Shootroom requires safety and skills training and payment of equipment access and use fee ($30 per quarter). How to receive training: 1. Email eda@arts.ucla.edu

More information

Using Hybrid Reality to Explore Scientific Exploration Scenarios

Using Hybrid Reality to Explore Scientific Exploration Scenarios Using Hybrid Reality to Explore Scientific Exploration Scenarios EVA Technology Workshop 2017 Kelsey Young Exploration Scientist NASA Hybrid Reality Lab - Background Combines real-time photo-realistic

More information

HOW THE WIZARDS WALTZ:

HOW THE WIZARDS WALTZ: HOW THE WIZARDS WALTZ: STATS FROM OVER 300,000 WALTZ OF THE WIZARD SESSIONS PUBLICATION: X94R3U8-001 Ghostline Data Insights www.ghostline.xyz February 28th 2017 APPROVAL RATING 99% REVIEWS 600+ ADDED

More information

Construction of visualization system for scientific experiments

Construction of visualization system for scientific experiments Construction of visualization system for scientific experiments A. V. Bogdanov a, A. I. Ivashchenko b, E. A. Milova c, K. V. Smirnov d Saint Petersburg State University, 7/9 University Emb., Saint Petersburg,

More information

Extending X3D for Augmented Reality

Extending X3D for Augmented Reality Extending X3D for Augmented Reality Seventh AR Standards Group Meeting Anita Havele Executive Director, Web3D Consortium www.web3d.org anita.havele@web3d.org Nov 8, 2012 Overview X3D AR WG Update ISO SC24/SC29

More information

Miguel Rodriguez Analogix Semiconductor. High-Performance VR Applications Drive High- Resolution Displays with MIPI DSI SM

Miguel Rodriguez Analogix Semiconductor. High-Performance VR Applications Drive High- Resolution Displays with MIPI DSI SM Miguel Rodriguez Analogix Semiconductor High-Performance VR Applications Drive High- Resolution Displays with MIPI DSI SM Today s Agenda VR Head Mounted Device (HMD) Use Cases and Trends Cardboard, high-performance

More information

Unreal. Version

Unreal. Version Unreal Version 1.13.0 2 Introduction Unreal Copyrights and Trademarks 2017 Oculus VR, LLC. All Rights Reserved. OCULUS VR, OCULUS, and RIFT are trademarks of Oculus VR, LLC. (C) Oculus VR, LLC. All rights

More information

Image Processing Architectures (and their future requirements)

Image Processing Architectures (and their future requirements) Lecture 16: Image Processing Architectures (and their future requirements) Visual Computing Systems Smart phone processing resources Example SoC: Qualcomm Snapdragon Image credit: Qualcomm Apple A7 (iphone

More information

High Performance Computing for Engineers

High Performance Computing for Engineers High Performance Computing for Engineers David Thomas dt10@ic.ac.uk / https://github.com/m8pple Room 903 http://cas.ee.ic.ac.uk/people/dt10/teaching/2014/hpce HPCE / dt10/ 2015 / 0.1 High Performance Computing

More information

BIMXplorer v1.3.1 installation instructions and user guide

BIMXplorer v1.3.1 installation instructions and user guide BIMXplorer v1.3.1 installation instructions and user guide BIMXplorer is a plugin to Autodesk Revit (2016 and 2017) as well as a standalone viewer application that can import IFC-files or load previously

More information

Virtual Reality I. Visual Imaging in the Electronic Age. Donald P. Greenberg November 9, 2017 Lecture #21

Virtual Reality I. Visual Imaging in the Electronic Age. Donald P. Greenberg November 9, 2017 Lecture #21 Virtual Reality I Visual Imaging in the Electronic Age Donald P. Greenberg November 9, 2017 Lecture #21 1968: Ivan Sutherland 1990s: HMDs, Henry Fuchs 2013: Google Glass History of Virtual Reality 2016:

More information

Building a bimanual gesture based 3D user interface for Blender

Building a bimanual gesture based 3D user interface for Blender Modeling by Hand Building a bimanual gesture based 3D user interface for Blender Tatu Harviainen Helsinki University of Technology Telecommunications Software and Multimedia Laboratory Content 1. Background

More information

Track and Vertex Reconstruction on GPUs for the Mu3e Experiment

Track and Vertex Reconstruction on GPUs for the Mu3e Experiment Track and Vertex Reconstruction on GPUs for the Mu3e Experiment Dorothea vom Bruch for the Mu3e Collaboration GPU Computing in High Energy Physics, Pisa September 11th, 2014 Physikalisches Institut Heidelberg

More information

Immersive Visualization and Collaboration with LS-PrePost-VR and LS-PrePost-Remote

Immersive Visualization and Collaboration with LS-PrePost-VR and LS-PrePost-Remote 8 th International LS-DYNA Users Conference Visualization Immersive Visualization and Collaboration with LS-PrePost-VR and LS-PrePost-Remote Todd J. Furlong Principal Engineer - Graphics and Visualization

More information

CS277 - Experimental Haptics Lecture 2. Haptic Rendering

CS277 - Experimental Haptics Lecture 2. Haptic Rendering CS277 - Experimental Haptics Lecture 2 Haptic Rendering Outline Announcements Human haptic perception Anatomy of a visual-haptic simulation Virtual wall and potential field rendering A note on timing...

More information

Transforming Industries with Enlighten

Transforming Industries with Enlighten Transforming Industries with Enlighten Alex Shang Senior Business Development Manager ARM Tech Forum 2016 Korea June 28, 2016 2 ARM: The Architecture for the Digital World ARM is about transforming markets

More information

SUNY Immersive Augmented Reality Classroom. IITG Grant Dr. Ibrahim Yucel Dr. Michael J. Reale

SUNY Immersive Augmented Reality Classroom. IITG Grant Dr. Ibrahim Yucel Dr. Michael J. Reale SUNY Immersive Augmented Reality Classroom IITG Grant 2017-2018 Dr. Ibrahim Yucel Dr. Michael J. Reale Who are we Dr. Ibrahim Yucel Interactive Media and Game Design Dr. Mohammed Abdallah Engineering Technology

More information

MNTN USER MANUAL. January 2017

MNTN USER MANUAL. January 2017 1 MNTN USER MANUAL January 2017 2 3 OVERVIEW MNTN is a spatial sound engine that operates as a stand alone application, parallel to your Digital Audio Workstation (DAW). MNTN also serves as global panning

More information

23270: AUGMENTED REALITY FOR NAVIGATION AND INFORMATIONAL ADAS. Sergii Bykov Technical Lead Machine Learning 12 Oct 2017

23270: AUGMENTED REALITY FOR NAVIGATION AND INFORMATIONAL ADAS. Sergii Bykov Technical Lead Machine Learning 12 Oct 2017 23270: AUGMENTED REALITY FOR NAVIGATION AND INFORMATIONAL ADAS Sergii Bykov Technical Lead Machine Learning 12 Oct 2017 Product Vision Company Introduction Apostera GmbH with headquarter in Munich, was

More information

Game Architecture. 4/8/16: Multiprocessor Game Loops

Game Architecture. 4/8/16: Multiprocessor Game Loops Game Architecture 4/8/16: Multiprocessor Game Loops Monolithic Dead simple to set up, but it can get messy Flow-of-control can be complex Top-level may have too much knowledge of underlying systems (gross

More information

Downloaded from: justpaste.it/19o29

Downloaded from: justpaste.it/19o29 Downloaded from: justpaste.it/19o29 Initialize engine version: 5.3.6p8 (c04dd374db98) GfxDevice: creating device client; threaded=1 Direct3D: Version: Direct3D 9.0c [nvd3dumx.dll 22.21.13.8253] Renderer:

More information

Console Games Are Just Like Mobile Games* (* well, not really. But they are more alike than you

Console Games Are Just Like Mobile Games* (* well, not really. But they are more alike than you Console Games Are Just Like Mobile Games* (* well, not really. But they are more alike than you think ) Hi, I m Brian Currently a Software Architect at Zynga, and CTO of CastleVille Legends (for ios/android)

More information

Unity 3.x. Game Development Essentials. Game development with C# and Javascript PUBLISHING

Unity 3.x. Game Development Essentials. Game development with C# and Javascript PUBLISHING Unity 3.x Game Development Essentials Game development with C# and Javascript Build fully functional, professional 3D games with realistic environments, sound, dynamic effects, and more! Will Goldstone

More information

A Guide to Virtual Reality for Social Good in the Classroom

A Guide to Virtual Reality for Social Good in the Classroom A Guide to Virtual Reality for Social Good in the Classroom Welcome to the future, or the beginning of a future where many things are possible. Virtual Reality (VR) is a new tool that is being researched

More information

Virtual Reality. A Unique Selling Strategy for International Markets

Virtual Reality. A Unique Selling Strategy for International Markets Virtual Reality A Unique Selling Strategy for International Markets V.R. vs. A.R. Virtual Reality: Origins Computer generated or visually captured physical environments experienced remotely, without being

More information

Introduction.

Introduction. VR Introduction The last few years have seen lots of changes in terms of technology used at events, as things become more focussed towards interactivity and creating memorable experiences that leave people

More information

Considerations for Standardization of VR Display. Suk-Ju Kang, Sogang University

Considerations for Standardization of VR Display. Suk-Ju Kang, Sogang University Considerations for Standardization of VR Display Suk-Ju Kang, Sogang University Compliance with IEEE Standards Policies and Procedures Subclause 5.2.1 of the IEEE-SA Standards Board Bylaws states, "While

More information

Deeper into GameplayKit with DemoBots

Deeper into GameplayKit with DemoBots Graphics and Games #WWDC15 Deeper into GameplayKit with DemoBots Session 609 Dave Addey Sample Code Engineer Dave Schaefgen Sample Code Engineer Michael DeWitt Sample Code Engineer 2015 Apple Inc. All

More information