Getting Started
Package Types
Scene Setup
Custom Collision, Layers, and Tags
Key Differences from Standard Unity3D development
Economy
Scripting
Components
Environment Settings Overrides
Render Pipeline Settings Overrides
Guidelines
Supported Features and Limitations
Support
Spatial supports multiple platforms which all have different capabilities. In order to get your environment performing well on all supported platforms, you will need to plan carefully where you spend your rendering and memory budgets.
<aside> ⚠️ Check out the Scene Vitals window for guidance in ensuring optimal performance of your scene across the platforms that Spatial supports.
</aside>
Anything under 500,000 Vertices is a good target to aim for to support all platforms.
This is the total vertex count for all meshes included in the scene.
It is recommended to keep textures under 2048x2048 as an upper bound. You may have larger textures, but the higher you go, the more memory your environment will take up.
Use compression whenever possible.
Texture compression is important because it affects to the environment size the most. And the environment size will affect to the loading time very much. By changing texture compression format, you can easily save up 50~80% of your environment size.
We recommend setting the compression format to DXT1 Crunched (100% Quality) for WebGL platform. For Android and iOS platforms, we recommend to manually setting the compression mode to ASTC8x8. If it’s 2048x2048, this compression setting change will save 4mb (5.3→1.3mb) per texture!
Rendering transparent textures is expensive, especially in VR, due to overdraw. Try to limit the use of these, or at least it is very important not to have the transparent texture fill the entire screen. It is best limited to small particles emitted by unity’s particle systems.
For example: do not stack transparent textures to create a “Fog” effect. Instead, use unity’s built-in fog settings.
We currently don’t limit how many post processing effects you may have in your environment, but as we develop the toolkit we may have to limit its use depending on the platform.
Your scene comes with a default “Global Volume” object. You may use this object to add some post processing effects. Just note that these will only be enabled on higher-end systems.
<aside> 💡 Some post processing effects that require HDR, such as Tonemapping and Bloom won't work properly on VR. We don't enable HDR rendering for VR because of pixel cost.
</aside>
In order to perform best on a wide range of devices, it is better to opt for baked lighting (also known as Light baking or Light mapping). This pre-calculates lighting and uses an efficient rendering method at run time to render high-quality lighting very cheaply. The downside of “Baked” lighting is that it is “static”. In other words, when objects animate around the scene, the lighting of the scene won’t change.
Mark things that don’t move during play as “Static”, this tells unity that the lighting for these objects in the scene can be fully baked.
Real-Time Lighting: On some devices which meet the system requirements, we will be supporting real time or semi-real-time lighting. This means that the avatar and other dynamic objects in the space will cast a shadow that will blend nicely with the environment.
For more info, visit Lighting
In order to fit inside the memory budget, your maximum limit is 8 2048 lightmap textures. This is an upper bound, and you should strive to have less than that in order to support the widest ranges of devices. The more light-weight your environment is, the faster it will load.
The Scene Vitals window appears in any open scene when building with the Spatial Toolkit. This window provides a high-level view of the properties of your scene that have the most impact on its performance. The maximum limits displayed are our recommendations for ensuring optimal performance on the web, iOS, Android, and VR.
<aside> ⚠️ While you can still publish your scene to Spatial while exceeding these limits, we cannot guarantee good performance if you do. Please try and stay within these limits as much as possible.
</aside>
← Previous
Supported Features and Limitations
Next →