We want every space to offer a smooth and immersive user experience, but in order to achieve this, we need to establish a set of guidelines for content creators.
The specs below should be used as a template when creating new spaces. This will allow the space to operate on all devices without performance loss.
- Triangles (overall) - 50,000 or fewer
- Texture Memory (overall) - Maximum of 256 MB
Textures (size per texture) - 512 x 512px recommended
- All Textures and Images must be 1:1 or 2:1 and "Power of 2" sized
- ex: 64x64, 128x128, 256x256, 512x512, 1024x1024
- 3D Model Size - Under 10 MB each. Recommended 5MB or less per model.
- Materials - See glTF2.0 Materials Documentation. Basic shader with baked-lighting and baked-textures is preferred. PBR Textures work with Vatom in-world lighting systems but work best on higher-end devices and spaces.
- Meshes - Minimal geometry. glTF auto-converts quads and n-gons to triangles.
Device-Specific Performance Limits
The following are the limits for the entire space and all objects within it. While high-powered devices can load very complicated spaces, the majority of users worldwide still enter Vatom Spaces on mobile devices.
Using the Mobile Filter you can create different assets for Desktop, Mobile, and iPhone experiences.
|Quality||Low-tier||Mid-Tier||High-Tier||Apple iPhone||Apple M1 MacBook||Chromebook|
* Apple iPhones are known to have critical issues if space texture memory exceeds 250MB.
Testing and Debugging
Watch and test performance as you move around your space using the Debug Menu. Press shift + ~ to open the debug menu.
White testing: Move around, look in different directions, and zoom in and out to experience the space from all angles and with the type of movements and actions expected from your guests.
Things to watch and test for:
FPS - Frames Per Second is the immediate indicator of Performance. 30fps or higher is the standard for Vatom Spaces. Anything under 20fps can disturb the experience and cause "lag" in movements and communication. FPS is tied to Graphics Quality in profile settings, and the hardware of the device being used.
Frame Timing - This is a very useful tool for determining the sum total of impact that these various criteria above are having on space performance. Important to note also that it's important to test while moving as well, as more physics/collision calls are more likely to occur while moving
WebGL Draw Calls: A maximum of ~300 "calls" should be made when looking in any direction. Draw calls are only calculated for the current viewing angle, so look around your scene to test different view angles.
- 1 mesh in a glb = draw call
- 1 material in a glb = draw call
- 1 alpha channel in a glb = draw call
If your space is loading slowly or your frame rate is low, the following are known to cause performance issues:
1. Oversized and unoptimized images and graphics: All images must be "power-of-two" sized to reduce the need for real-time processing. Use the File > Check for Issues to find and fix non Power-of-two graphics added to your scene. This check will not find or fix textures within 3D models.
- 256 x 256px
- 512 x 512px (recommended for all textures)
- 1024 x 512px
- 1024 x 1024px
- 2048 x 1024px
- 2048 x 2048px (limited use)
- Any images and graphics larger than 2000px should be reduced in size before uploading.
2. In-World iFrames: The "Web Frame" plugin is known to slow down performance, and is not recommended for spaces with large gatherings expected. Use "pop-up" iFrames like the Open In Panel interaction.
3. Oversized Models: Many objects labeled "low-poly" on Sketchfab and other 3d asset libraries are still far too complex for use in Vatom Spaces. Please see the recommendations above for triangle count and file size, and try to find objects that are under 1,000 vertices.
4. MP4 Video Files: While MP4 videos can be added to Spaces, we recommend using Mux Video to convert longer and larger video assets to HLS format. Using large MP4 videos can cause performance drops, as each device needs to download the video in full. Using HLS streams the video, and streams it at a data-rate that works best on the user's specific device.
5. Media Player Proximity: By default, Media Source players are set to 'Everywhere'. If you have more than one or two media screens in your space, set a Proximity radius so that the screen only loads when guests are nearby.
Please sign in to leave a comment.