Skip to main content
Version: 3.7.0

Technical Optimization

Making sure your effect meets our technical requirements is crucial for distribution and usability. If your effect failed to pass the in-tool performance test or was rejected after submission, refer to the following recommendations to ensure it complies with our quality assurance requirements.

Effect QA Requirements

After you submit, your effect undergoes an internal performance test and QA review. The following specifications are analyzed and must be met for your effect to be published.

DevicePackage sizeImage sizeImage pixel size
iOS<= 5 MB< 1024 KB<= 1024 by 1024
Android<= 5 MB< 1024 KB<= 1024 by 1024
note

Even though an effect may pass QA, some effects may not work for lower-end devices (specifically Android devices). These effects will trigger the warning message “This effect doesn’t work with this device” to appear since they incorporate more technically demanding features. Many effects are unable to be used by some Android phones due to their devices not supporting the WebGL used in Effect House. Community Effects work on most newer iOS and Android devices and do not currently work on devices equal to or lower than the following models: Samsung Galaxy J3, LG Leon H324, Huawei Honor 4X, and Cubot J3.

Optimize Your Feature Usage

Certain objects, components, and assets can lead to GPU inefficiencies and heavy resource usage. Consider reconfiguring your effect to include fewer high-cost features and make sure your assets follow the listed specifications.

Features and Capabilities

Generally, the performance of your effect may be substandard when you add more algorithms to the effect. We strongly recommend cleaning up your projects and removing any unused assets and features.

Try to combine similar effects into one component. For example, combine all stretch effects into one face stretch instead of separating them in several face stretch objects.

Generative Effects

very high performance impact

Generative Effects have a very high impact on performance. We strongly recommend against combining Generative Effects with other many other features or using more than one Generative Effect in your effect. Doing so will cause low FPS which may subsequently fail QA.

Body Avatar Drive

very high performance impact

Body Avatar Drive has a very high impact on performance. We strongly recommend against combining Body Avatar Drive with other features. Doing so will cause low FPS which may subsequently fail QA.

Segmentation

high performance impact

Segmentation has an impact on performance. We strongly recommend against combining Segmentation with too many other algorithms like Face Inset and Head Tracker. Doing so will cause lower FPS which may subsequently fail QA.

Skybox

high performance impact

Using a Skybox material with a high-resolution cubemap texture has a high performance cost. We strongly recommend against using more than one Skybox in your effect.

Face Inset

medium performance impact

The more Face Inset entities you add in the scene, the lower the performance will be for the effect. We recommend setting the Face Inset Quality to 256 x 256 if there are more than four Face Inset objects.

face inset quality

Lighting Sources

We currently support no more than 3 lights in the scene. The performance may suffer the more lighting you add.

Text

We currently support no more than 400 characters.

Asset Optimization

3D Assets

Learn about 3D assets preparation.

Model
  • Use triangle polygons and quad polygons for your models.
  • Total triangles in the entire effect should be less than 100,000 for optimal performance. For each model, the tool is limited to 50k triangles per FBX, but we recommend keeping each FBX mesh under 30k for best chances at high performance.
Rigging
  • 50 maximum joints per FBX. You can have multiple FBX files in one effect and the joint limit is only local to each FBX.
  • 4 maximum joint influences.

2D Assets

Learn more about 2D asset preparation. For best results, adhere to the following specifications:

  • Suggested resolution is 512 x 512 pixels (maximum is 1024 x 1024 pixels).
  • The maximum file size for each PNG is 1 MB.
  • Try to use the Compression component to optimize imported 2D assets.
  • The suggested FPS for an animated texture is 12. Higher file sizes and lower performance can occur with higher sequence FPS.
  • Avoid using too many 2D layers in the scene, suggest combining 2D textures into one if it is possible.

Troubleshooting

Your effect may not pass the in-tool performance test or submission QA check for a number of reasons, including a low frame rate, increased memory usage (RAM) and high CPU utilization. When developing and running interactive effects, it's important to examine the following causes, which may contribute to underperformance.

Low Frame Rate

  • High-polygon models: Detailed models with a large number of polygons can decrease FPS.
  • Unoptimized shaders: Complex or inefficient shaders can severely impact frame rates.
  • Real-time physics or generative effects: Intensive real-time calculations can divert CPU and GPU resources, impacting FPS.
  • Post-process effects: Effects like bloom, motion blur, and anti-aliasing can be GPU-intensive, reducing FPS.
  • Shadow rendering: Real-time shadow calculations, especially soft shadows, can be computationally expensive.
  • High-resolution textures: These can overwhelm the GPU, leading to FPS drops.

Increased Memory Usage

  • Assets and textures: High-resolution textures and 3D models can consume a significant amount of memory.
  • Sound and music: Loading multiple or large sound files simultaneously can increase memory usage.
  • Physics calculations: Complex physics setups can store data on numerous objects, contributing to memory use.

High CPU Usage:

  • Interactive effect loops: A poorly optimized interactive effect loop can cause continuous high CPU usage.
  • Physics calculations: Real-time physics simulations, especially in interactive effects with many objects or complex interactions, can be CPU-intensive.
  • Graphics rendering: While much of this is handled by the GPU, certain rendering tasks can fall back on the CPU, especially in systems with integrated graphics.
  • Visual scripting update events: Visual scripting events that trigger frequently or are poorly optimized can lead to high CPU usage, particularly if the Update node is used to run complex functions every frame.