VR with Metal 2 Session 603
|
|
- Ursula Cook
- 5 years ago
- Views:
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 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 informationExploring 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 informationTobii 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 informationOculus 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 informationVR 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 informationOculus 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 informationSteamVR 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 informationpcon.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 informationVirtual 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 informationVR-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 informationHMD 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 informationTobii 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 informationThe 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 informationWebVR: 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 informationTechnical 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 informationThis 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 informationVirtual 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 informationSPIDERMAN 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 informationPower 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 informationReVRSR: 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 informationMUVR: 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 informationDiving 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 informationAssignment 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 informationTable 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 informationFLEXLINK 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 informationVR/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 informationMRT: 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 informationMotion 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 informationTobii 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 informationGame 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 informationEnabling 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 informationArcGIS 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 informationShader "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 informationConsole 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 informationLOOKING 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 informationSupporting 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 informationModo 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 informationVirtual 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 information6 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 informationPERCEPTUAL 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 informationExploring 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 informationStudents: 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 informationInvestigating 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 informationUse 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 informationUnreal. 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 informationTeam 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 informationUnderstanding 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 informationADVANCED 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 informationHaplug: 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 informationQuickSpecs. 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 informationTOUCH & 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 informationApple 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 informationAchieving 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 informationOCULUS 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 informationQuick 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 informationHTC 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 informationIngredients 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 informationWALTZ 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 informationUnpredictable 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 informationHARDWARE 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 informationSpartan 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 informationNVIDIA 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 informationHARDWARE 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 informationTHE 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 informationMoving 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 informationMoving 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 informationUsing 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 informationRestricted 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 informationBuilding 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 informationSound 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 informationUNITY 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 informationAn 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 informationSHOOT 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 informationUsing 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 informationHOW 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 informationConstruction 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 informationExtending 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 informationMiguel 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 informationUnreal. 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 informationImage 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 informationHigh 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 informationBIMXplorer 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 informationVirtual 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 informationBuilding 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 informationTrack 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 informationImmersive 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 informationCS277 - 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 informationTransforming 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 informationSUNY 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 informationMNTN 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 information23270: 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 informationGame 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 informationDownloaded 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 informationConsole 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 informationUnity 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 informationA 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 informationVirtual 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 informationIntroduction.
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 informationConsiderations 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 informationDeeper 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