Getting Started with VR Basics - Unreal Engine 4

Introduction

So I'm starting to look into how VR works within the Unreal Engine 4 spaces and came across this live training video from Unreal's Youtube channel. I've written down some points I found useful for basic VR as well as other components that the video talked about that I would like to keep in mind moving forward when working with VR. 

Terminology:

Unreal Engine 4:

Visual Scripting - Blue Prints
Unreal Motion Graphics - UMG
Realtime Cinematics - Sequencer
Particle Editor - Casscade
Renderers - Deferred vs Forward
Anti-Aliasing - MSAA, TAA, FXAA

VR Specific:

Head-Mounted Display - HMD
Motion Controllers - Oculus Touch, Vive Controllers, etc.
Tracking System - Oculus Sensors, Vive Lighthouses, etc.
Tracking Types - Positional and Rotational
Oscular Vestibular Mismatch - VR Sickness
Software Development Kit - SDK

Best Practices:

Avoid Screen Space
- (e.g. SSR,SSAO, Lens Flare, etc)

Don't rely on reprojection technology and aim for a high framerate.
- That is some devices have built-in features that detect if there are frame rate drops and assist in fixing those issues.
- You should always aim for a high frame rate regardless of the technology backing up the frame rate.

Consider lowering the resolution to increase the frame rate.
- The fewer pixels are drawn, the faster things will generally be.

Player head movement should be in control of the camera at all times.
- Causes discomfort, and potentially more sickness.
- In resident evil 7, they do this by blacking out the screen but continue to play audio, then return the screen after the movement ceases.

Avoid acceleration as it can create motion sickness.

Do not override the player's field of view as it can cause discomfort when rotating.
- Field of view never changes in real life so it shouldn't change in VR.


VR Optimization:

Unreal engine has a Real-time GPU profiler, which will give information on what the GPU is doing and how much time it takes for it too.


Common Pitfalls

Too many draw calls. 
- A draw call is an instruction to tell GPU to render something on the screen.
- Each object is its own draw call.
- Each material is its own draw call.
- 5000 draw calls is a lot of draw calls.
- Can use stat scene rendering to see how many draws calls you have.

Dynamic Shadows
-
Avoid shadows
- Bake as much light as you can
- Fake or capsule shadows.

Keep many instructions in materials
- Keep materials simple


Going forward

Going forward, I'll be hopping around the project No One's Home in VR unity and also learning Unreal Engine 4's VR system via tutorials and youtube so that I can improve my knowledge of VR on different platforms.