Achieving High Quality Mobile VR Games

Similar documents
Oculus Rift Getting Started Guide

Oculus Rift Getting Started Guide

AngkorVR. Advanced Practical Richard Schönpflug and Philipp Rettig

SteamVR Unity Plugin Quickstart Guide

BIMXplorer v1.3.1 installation instructions and user guide

VR-Plugin. for Autodesk Maya.

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

Transforming Industries with Enlighten

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

Moving Web 3d Content into GearVR

Assignment 5: Virtual Reality Design

Obduction User Manual - Menus, Settings, Interface

REPORT ON THE CURRENT STATE OF FOR DESIGN. XL: Experiments in Landscape and Urbanism

Oculus Rift Introduction Guide. Version

COMPASS NAVIGATOR PRO QUICK START GUIDE

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

CS 354R: Computer Game Technology

Easy Input For Gear VR Documentation. Table of Contents

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

pcon.planner PRO Plugin VR-Viewer

Immersive Visualization On the Cheap. Amy Trost Data Services Librarian Universities at Shady Grove/UMD Libraries December 6, 2019

Modo VR Technical Preview User Guide

Unity Certified Programmer

Best Practices for VR Applications

[VR Lens Distortion] [Sangkwon Peter Jeong / JoyFun Inc.,]

is currently only supported ed on NVIDIA graphics cards!! CODE DEVELOPMENT AB

Introduction to Game Design. Truong Tuan Anh CSE-HCMUT

Motion sickness issues in VR content

Beginning 3D Game Development with Unity:

Early art: events. Baroque art: portraits. Renaissance art: events. Being There: Capturing and Experiencing a Sense of Place

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

Falsework & Formwork Visualisation Software

Intro to Virtual Reality (Cont)

Team Breaking Bat Architecture Design Specification. Virtual Slugger

Spell Casting Motion Pack 8/23/2017

ArcGIS Pro: Tips & Tricks

Virtual Reality Development ADD ANOTHER DIMENSION TO YOUR BUSINESS

FLEXLINK DESIGN TOOL VR GUIDE. documentation

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

OCULUS VR, LLC. Oculus User Guide Runtime Version Rev. 1

Virtual Reality Mobile 360 Nanodegree Syllabus (nd106)

Virtual Universe Pro. Player Player 2018 for Virtual Universe Pro

Android User manual. Intel Education Lab Camera by Intellisense CONTENTS

Chapter 7- Lighting & Cameras

Trial code included!

Space Invadersesque 2D shooter

Virtual Reality Application Programming with QVR

UNITY TECHNOLOGY ROADMAP

Interior Design with Augmented Reality

ArcGIS Runtime: Analysis. Lucas Danzinger Mark Baird Mike Branscomb

Unreal. Version

VIRTUAL MUSEUM BETA 1 INTRODUCTION MINIMUM REQUIREMENTS WHAT DOES BETA 1 MEAN? CASTLEFORD TIGERS HERITAGE PROJECT

Motion Blur with Mental Ray

REMOVING NOISE. H16 Mantra User Guide

VR Easy Getting Started V1.3

Photo Salon. Event Photography. Renee Caxton

Regan Mandryk. Depth and Space Perception

Easy Input Helper Documentation

Mobile Virtual Reality what is that and how it works? Alexey Rybakov, Senior Engineer, Technical Evangelist at DataArt

English PRO-642. Advanced Features: On-Screen Display

ISSUE #6 / FALL 2017

RAZER RAIJU TOURNAMENT EDITION

Welcome. My name is Jason Jerald, Co-Founder & Principal Consultant at Next Gen Interactions I m here today to talk about the human side of VR

SPIDERMAN VR. Adam Elgressy and Dmitry Vlasenko

MRT: Mixed-Reality Tabletop

GearVR Starter Kit. 1. Preface

User s handbook Last updated in December 2017

/ Impact of Human Factors for Mixed Reality contents: / # How to improve QoS and QoE? #

Admin. Today: Designing for Virtual Reality VR and 3D interfaces Interaction design for VR Prototyping for VR

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

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

Xplr VR by Travelweek

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

Technical Guide. Updated June 20, Page 1 of 63

This guide updated November 29, 2017

Samsung Gear VR 4.0 Retail Experience. Setup & Installation Guide

Omni-Directional Catadioptric Acquisition System

Ball Color Switch. Game document and tutorial

Emergent s Gamebryo. Casey Brandt. Technical Account Manager Emergent Game Technologies. Game Tech 2009

Unity Game Development Essentials

Physical Hand Interaction for Controlling Multiple Virtual Objects in Virtual Reality

Bring Imagination to Life with Virtual Reality: Everything You Need to Know About VR for Events

The purpose of this document is to outline the structure and tools that come with FPS Control.

The Archery Motion pack requires the following: Motion Controller v2.23 or higher. Mixamo s free Pro Longbow Pack (using Y Bot)

Save System for Realistic FPS Prefab. Copyright Pixel Crushers. All rights reserved. Realistic FPS Prefab Azuline Studios.

RUIS for Unity Introduction. Quickstart

Kinect Interface for UC-win/Road: Application to Tele-operation of Small Robots

The Reality of AR and VR: Highlights from a New Survey. Bob O Donnell, President and Chief Analyst

Getting Real with the Library. Samuel Putnam, Sara Gonzalez Marston Science Library University of Florida

Principles of Computer Game Design and Implementation. Lecture 18

Virtual Mix Room. User Guide

CWIC Starter: Immersive Richard Mills - Technical Director, Sky VR Studios Founder, Imaginary Pictures

Texture Editor. Introduction

Unity & VR Best Practices

Heavy Station Kit base 2

In the end, the code and tips in this document could be used to create any type of camera.

Physical Presence in Virtual Worlds using PhysX

Game Tools MARY BETH KERY - ADVANCED USER INTERFACES SPRING 2017

Virtual Environments. Ruth Aylett

Wireframe of SketchUp Model. Modeling

Transcription:

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 Ice Cave Demo (Roberto) Porting Ice Cave Demo to Samsung Gear VR Improving VR quality & performance Dynamic soft shadows and reflections based on local cubemaps Stereo reflections VR Integration into Unity (Carl) Movement in Mobile VR (Patrick) 2 ARM2016

Demo Ice Cave 3 ARM2016

Porting Ice Cave Demo to Samsung Gear VR 4 ARM 2016

Porting Ice Cave for Samsung Gear VR Native Acquire device ID Plugin or Native? Enabling Gear VR developer mode Go to your device Settings Application Manager Gear VR Service Tap on "Manage storage" Tap on the "VR Service Version" six times Wait for scan process to complete and you should now see the Developer Mode toggle Place in Assets/ Plugins/Android/assets 5 ARM2016

Considering VR Specifics Removed existing UI based on virtual joysticks Added very simple UI through Gear VR touchpad Removed camera animation to avoid motion sickness Carefully set the camera speed Ice Cave was designed big so users don t feel claustrophobic Removed dirty lens effect as it doesn t translate well to VR Added camera collision and sliding as going through geometry leads to bad VR experience 6 ARM2016

Ice Cave VR Extras Added streaming to another device to show what the user is actually experiencing (camera position and orientation) Added an alternative UI by means of a mini Bluetooth controller 7 ARM2016

Quality and Performance for VR Optimized Rendering Techniques Based On Local Cubemaps 8 ARM 2016

The Concept of Local Cubemaps Local environment Local environment cubemap cubemap V P V C C P Bounding Box Local environment cubemap V C V V V If we use the view vector V defined in WCS to fetch the texel from the cubemap we will get the smiley face instead of the star. We need to use a new vector V = CP to fetch the correct texel. We need to find the intersection point P of the view vector V with the boundaries of the local environment. We introduce a proxy geometry to simplify the problem of finding the intersection point P. The simplest proxy geometry is the bounding box. Local Cubemap = Cubemap + Cubemap Position + Scene Bounding Box + Local Correction 9 ARM2016

Dynamic Soft Shadows Based on Local Cubemaps 10 ARM 2016

Dynamic Soft Shadows Based on Local Cubemaps Generation stage Y Render the transparency of the scene in the alpha channel Left X Top +Y Front -Z Bottom -Y Right +X Back +Z Z X Camera background alpha colour = 0 Opaque geometry is rendered with alpha = 1 Semi-transparent geometry is rendered with alpha different from 1 We have a map of the zones where light rays can potentially come from and reach the geometry. Fully transparent geometry is rendered with alpha 0 No light information is processed at this stage. 11 ARM2016

L Dynamic Soft Shadows Based on Local Cubemaps Runtime stage P Q cubemap C shadowed pixel p k Create a vertex to light source L vector in the vertex shader. Pass this vector to the fragment shader to obtain the vector from the pixel to the light position p i L. Find the intersection of the vector p i L with the bounding box. Build the vector CP from the cubemap position C to the intersection point P. Use the new vector CP to fetch the texture from the cubemap. float texshadow = texcube(_cubeshadows, CP).a; lit pixel p i Source code in the ARM Guide for Unity Developers at MaliDeveloper.arm.com Bounding Box 12 ARM2016

Dynamic Soft Shadows Based on Local Cubemaps Why soft? float texshadow = texcube(_cubeshadows, CP).a; L P Q cubemap C float4 newvec = float4`(cp, factor * length(p i P)) float texshadow = texcubelod(_cubeshadows, newvec ).a; shadowed pixel p k The further from the object the softer the shadows. lit pixel p i Source code in the ARM Guide for Unity Developers at MaliDeveloper.arm.com Bounding Box 13 ARM2016

Dynamic Soft Shadows Based on Local Cubemaps 14 ARM2016

Handling Shadows from Different Types of Geometries High Quality Shadows from Static Environment Shadows from Dynamic Objects Use Local Cubemap technique Use Shadow Mapping technique All Shadows Combine both types of shadows 15 ARM2016

Combined Shadows in Ice Cave VR Shadows from static Geometry using local cubemps Shadows from dynamic Geometry using shadow mapping 16 ARM2016

Reflections Based on Local Cubemaps 17 ARM 2016

Local Correction to Reflection Vector float3 R = reflect(d, N); float4 col = texcube(cubemap, R); D cubemap C R N R P Find intersection point P Find vector R = CP float4 col = texcube(cubemap, R ); GPU Gems. Chapter 19. Image-Based Lighting. Kevin Bjork, 2004. http://http.developer.nvidia.com/gpugems/gpugems_ch19.html Cubemap Environment Mapping. 2010. http://www.gamedev.net/topic/568829-box-projected-cubemap-environment-mapping/?&p=4637262 Reflective surface Image-based Lighting approaches and parallax-corrected cubemap. Sebastien Lagarde. SIGGRAPH 2012. http://seblagarde.wordpress.com/2012/09/29/image-based-lighting-approaches-and-parallax-corrected-cubemap/ Source code in the ARM Guide for Unity Developers at MaliDeveloper.arm.com Bounding Box 18 ARM2016

Combined Reflections in Ice Cave VR Reflections from Static Geometry Planar Reflections from Dynamic Geometry Reflections from Distant Environments Use Local Cubemap technique Use Mirrored Camera technique Use standard infinite cubemap All Reflections Combine all types of reflections 19 ARM2016

Combined Reflections in Ice Cave VR Reflections from the sky using infinite cubemap Reflections from static geometry using local cubemap Reflections from dynamic geometry using a mirrored camera 20 ARM2016

Stereo Reflections in Unity 21 ARM 2016

Why Stereo Reflections? Using the same texture for right/left eyes reflections in VR looks plain and breaks the sensation of full immersion. 22 ARM2016

Implementing Stereo Reflections in Unity Add two new cameras targeting left/right eye respectively and disable them as you will render them manually. Create a target texture the cameras will render to Attach the script to each camera, the SetUpCamera function places the camera in the right position for rendering reflections for each eye. void OnPreRender() { SetUpCamera (); // Invert winding GL.invertCulling = true; } void OnPostRender() { // Restore winding GL.invertCulling = false; } 23 ARM2016

Implementing Stereo Reflections in Unity Attach the script to the main camera public class RenderStereoReflections : MonoBehaviour { public GameObject reflectiveobj; public GameObject leftreflcamera; public GameObject rightreflcamera; int eyeindex = 0; } void OnPreRender(){ Optimize further by adding a condition about reflective object s visibility if (eyeindex == 0){ // Render Left camera leftreflcamera.getcomponent<camera>().render(); reflectiveobj.getcomponent<renderer>().material.settexture("_dynrefltex", leftreflcamera.getcomponent<camera>().targettexture ); } else{ // Render right camera rightreflcamera.getcomponent<camera>().render(); reflectiveobj.getcomponent<renderer>().material.settexture("_dynrefltex", rightreflcamera.getcomponent<camera>().targettexture ); } eyeindex = 1 - eyeindex; } 24 ARM2016

Check Left/Right Reflection Synchronization 25 ARM2016

Stereo Reflections in Ice Cave VR 26 ARM2016

Wrap Up Unity has made a great contribution to VR democratization In mobile VR the user is no longer limited to the size of the screen and is now fully embedded in a virtual world It is possible to run high quality VR and non-vr content on current mobile devices using optimized rendering techniques Stereo reflections in VR improve user experience https://community.arm.com/groups/arm-maligraphics/blog/2016/03/10/combined-reflectionsstereo-reflections-in-vr Check out The ARM Guide for Unity Developers for optimization tips, recommendations and very efficient rendering techniques to make the most out of Unity when developing VR mobile games 27 ARM2016

VR Integration Into Unity Carl Callewaert Americas Director & Global Leader of Evangelism Unity Technologies

Movement in Mobile VR Patrick O'Luanaigh CEO - ndreams

VR Games & Experiences

Hours Spent in VR Latest Focus Test 22 experienced gamers 20-30 minute sessions Inexperienced in VR 0hrs 7 0-2hrs 8 3-5hrs 2 5hrs+ 5 No. Participants

Previous Tests Internal Events Oculus

suffer discomfort 40-50% when walking around in VR*. *Varying depending on headset, framerate, room temperature etc.

50-60% suffer discomfort when walking around in VR.

37 ARM2016

An Easy Solution?

Traditional Made as accessible as possible Alternative Designed to be comfortable for all

Traditional 40 ARM2016

The Basics Realistic movement Don t touch the camera No perceived acceleration 3 5 4 6 JOG SPRINT 7 7 1.5 2 WALK 1 8 9 ON/OFF 0 M/S 10

No. Participants No. Participants Findings Natural High Speed 20 20 18 18 16 16 14 14 12 12 10 10 8 8 6 6 4 4 2 2 0 Moving 1.5 m/s Strafing 1.0 m/s Rotating 37.5 θ/s 0 Moving 2.4 m/s Strafing 2.4 m/s Rotating 250 θ/s Fine Uncomfortable Fine Uncomfortable

Rotation 18 Of 22 participants preferred a high rotation speed.

Strafing <1m/s strafe speed

Summary Tailor specifically for VR: Natural movement speed. High speed rotation. Consider adding an alternate rotation option. No perceived acceleration. Not a solution for everyone!

Alternative 46 ARM2016

Movement Rotation

100% Comfort across all participants* *As far as we can tell

Alternative Rotation Alternative controls encourage players to move their body to look around

Trigger Rotation

Snap Rotation

Snap Rotation

Snap Rotation

Alternative Movement

Teleport

56 ARM2016

Blink 57 ARM2016

58 ARM2016

Preferences Movement Teleport More precise Blink More immersive 0 2 4 6 8 10 12 No. Participants Trigger Rotation More immediate/accessible Further usability testing required Snap Offers more flexibility 0 2 4 6 8 10 12 14 16 No. Participants

Summary Remove movement and rotation altogether. Add alternatives! We re going with teleport or blink for moving, Trigger or snap look for rotation.

Google Cardboard Much of this is appropriate for even simple headset controls such as the Cardboard. Use natural rotation. Use gaze plus button to blink to another location.

? Your Projects Experiment with first person movement if appropriate for your title. Implement comfortable alternative controls as default that avoid natural movement and rotation. You may want to include optional traditional controls tailored to be as comfortable as possible in VR. Test everything! What works for your game may be different.

Thank you! The trademarks featured in this presentation are registered and/or unregistered trademarks of ARM Limited (or its subsidiaries) in the EU and/or elsewhere. All rights reserved. All other marks featured may be trademarks of their respective owners. Copyright 2016 ARM Limited

To Find Out More. ARM Booth #1624 on Expo Floor: Live demos of the techniques shown in this session In-depth Q&A with ARM engineers More tech talks at the ARM Lecture Theatre http://malideveloper.arm.com/gdc2016: Revisit this talk in PDF and video format post GDC Download the tools and resources 64 ARM 2016

More Talks From ARM at GDC 2016 Available post-show at the Mali Developer Center: malideveloper.arm.com/ Vulkan on Mobile with Unreal Engine 4 Case Study Weds. 9:30am, West Hall 3022 Making Light Work of Dynamic Large Worlds Weds. 2pm, West Hall 2000 Achieving High Quality Mobile VR Games Thurs. 10am, West Hall 3022 Optimize Your Mobile Games With Practical Case Studies Thurs. 11:30am, West Hall 2404 An End-to-End Approach to Physically Based Rendering Fri. 10am, West Hall 2020 65 ARM2016