I’m working on a mobile project with mostly static (non-movable) objects. When Precomputed Visibility is working, my frame rate is consistently 30-35FPS and above on my Android test devices, and 45-60 on iOS. Without Precomputed Visibility, I get 15-20FPS.
Most of the objects in my scene are Blueprints with one or more StaticMeshComponents attached. When I need to rotate/scale instances of these objects, I do so on the StaticMeshComponent rather than the parent object, as there are other components that are affected by the parent object’s rotation.
Occasionally, when I load the map, I get a bunch of warnings like the following for each of the objects on which I have manually rotated/scaled their StaticMeshComponents:
LogStaticMesh:Warning: Cached component instance data transform did not match! Discarding cached lighting data which will cause lighting to be unbuilt.
/Game/Maps/MyMap.MyMap:PersistentLevel.BP_Photo_Wall_C_3.Photo
Current X=-190.000000 Y=1.000000 Z=194.000000 Cached X=-190.000000 Y=1.000000 Z=194.000000
Note that the “Current” and “Cached” transform values are actually identical, so I’m not sure what it’s even complaining about.
If I deploy to device when these errors are present, stat initviews
tells me that only a fraction of the meshes are being statically occluded, and the framerate suffers dramatically. If I delete the Intermediate
and Saved
folders, rebuild lighting, then deploy again, static occlusion works brilliantly and I get a good framerate.
I’m at a point in my project where I’m regularly doing Production Quality light builds and cooking content for iOS/Android. I only have a 13" Macbook Pro (no dedicated GPU) available to perform my iOS builds. Cooking textures on this machine takes literally a full day, so deleting my caches and rebuilding lighting is a massive hassle.