Hi Elliott, This is a great breakdown and very generous in sharing your process and insights, you came a long way from the vending machine days!
Are you planning on releasing the UE4 project to the public? Or only builds? I'd love to play around with it in the editor if possible!
Unity Technologies has finally released v5.4 of the popular game engine. You can download it here. The company has also spent tons of time on improving Unity 5.3.x to make it better for all the projects currently in development.
Take a look at a quick overview of Unity 5.4:
- Graphics & rendering performance improvements:
- Better multithreaded rendering
- Fewer draw calls with GPU Instancing – available on Windows, OSX, Linux, PlayStation 4, and Xbox One
- Improved low level graphics features: texture arrays, compute shaders, and more
- For Artists:
- Thanks to sizing controls, a new trigger module, and better lighting with Light Probe Proxy Volumes (LPPV) particles are now more customizable.
- In-engine support for motion vector rendering
- VR Improvements: more built-in multiplatform VR support and better performance
- IL2CPP for Android is now an officially supported platform (previously it was labelled ‘experimental’)
- The editor now supports Mac Retina displays (Windows HiDPI support is in the pipeline) and we’ve added a zoomable game view function (OSX & Windows)
- Cloud Build setup is now available from the within the editor.
- Performance Reporting is now fully integrated in the editor, 1-click activation without plugins or code
- A major Analytics feature update with raw data export, Heatmaps, Live Stream, and Ads data in the dashboard
- In-App Purchasing now supports the Amazon Appstore
- Web Player and PS3 Build target options have been removed along with iOS 6 support (we now support iOS 7.x and above)
And as for the details:
GRAPHICS & RENDERING PERFORMANCE IMPROVEMENTS
Improved multithreaded rendering
Unity takes some steps to improve your frame rate:
Building on the work we did to take particles, sprites, flares, halos, lines and trails off the main thread in Unity 5.3, we’ve introduced parallel command list generation. Instead of building one graphics command list on the main CPU core scripts used by physics and scripts, work is reallocated to multiple CPU cores, removing potential bottlenecks and enabling complex scenes to run faster.
Fewer draw calls with GPU instancing
The company implements GPU instancing support to allow developers to render vast numbers of identical geometries that share the same materials with very few draw calls.
GPU instancing support is available on Windows (DX11/12 with Shader Model 4.0 and up), OSX, and Linux (OpenGL 4.1 and up) as well as on PlayStation 4 and Xbox One. More platforms are said to be supported in the the future.
Improved low level graphics features: texture arrays, compute shaders and more
2D Texture Arrays were created to help developers when they’re optimizing large scenes and implementing rendering systems. They work by allowing the GPU to treat 2D textures that share the same size and format as a single object.
We’ve also improved a series of low-level graphics features. Compute shaders can now be chained together via DispatchIndirect, compute buffer counters have been improved, and debug information can be used for compute shader debugging. You can perform fast texture copies with a new CopyTexture function, and support for uniform arrays as shader parameters has been added. On Metal, OpenGL, and D3D9 platforms we’ve implemented Alpha-to-coverage, and on iOS we now support multithreaded rendering for Metal graphics. Finally, image effects can be applied on a scene view camera with a new ImageEffectAllowedInSceneView attribute.
FOR ARTISTS: BETTER PARTICLE LIGHTING AND MOTION VECTORS ILLUSTRATED WITH IMPROVED CINEMATIC IMAGE EFFECTS
New particle controls
Unity 5.4 includes new sizing controls for particles, allowing developers to control their width and height independently and to control mesh particles’ full 3D form.
We’re also rolling out a new trigger module, which allows you to modify particle properties inside a list of colliders. In its simplest form, you can destroy particles when they touch the colliders, but, by using a custom scripting callback, it’s now also possible to modify all particle properties. You can see this in action in the viscous volume effect below.
Large particle systems can now be lit more realistically with Light Probe Proxy Volumes (“LPPV”). It’s a way of getting baked lighting information into large dynamic objects that can’t use baked lightmaps.
LPPV works by generating a 3D grid of interpolated light probes inside a bounding volume and allows you to specify the grid resolution. By doing so, you can add a spatial gradient to probe-lit objects. LPPV isn’t just useful for particles; you can also use it on large dynamic objects.
Cinematic Image Effects and Motion Vector Support
In 5.4, the company has added motion vector support. Motion vectors track frame-to-frame motion at pixel level, and can be utilized to great effect when creating post-processing effects such as motion blur and temporal anti-aliasing.
MORE MULTIPLATFORM VR SUPPORT AND BETTER PERFORMANCE
Unity 5.4 now has built-in and optimized rendering support for OpenVR (SteamVR/HTC Vive), Oculus Rift, Gear VR, and Playstation VR platforms. Through a single API developers can build for multiple platforms with device-specific tweaking kept to a minimum.
To enable this, we’ve refactored the VR subsystem to eliminate redundant code that duplicated functionalities across VR devices. On the performance side, we’ve added the Optimized Single-Pass Stereo Rendering feature (previously called Double Wide Rendering), so now both viewports are rendered in a single pass, to help sustain high frame rates.
If you’re looking to get started with VR, these handy tutorials and the associated free assets will help you get up to speed quickly.
Finally, as announced at Google IO, Unity will be natively supporting the new Daydream platform. If you can’t wait for the native integration, go to the Google developer portal and get the Google Daydream VR Dev Kit for Unity.
For the full details on Unity 5.4, check out the release notes.