Identifying bottlenecks in your render pipeline is crucial to get the best UX for your product. Tools like profilers and benchmarks are the best option to identify potential bottlenecks. These tools should always be accompanied by tests that verify the hypothesis that is build upon the data gathered from the profilers and benchmarks.
If the system is struggling to render the amount of polygons in the scene, reducing the surface complexity with InstaLOD's optimization and remeshing is crucial to hit the target of a smooth high frame rate experience. Polygons that are not visible in from the user perspective can be removed with InstaLOD's Occlusion Culling mesh operation.
If your system is bound by draw calls, reducing the hierarchical complexity, while using InstaLOD's Material Merge mesh operation and remeshing will reduce the overall amount of draw calls.
Materials for 3D objects are small programs that color the surface of a 3D object based on mathematical formulas that approximate how light behaves on physical surfaces. These programs can be very simple, or if trying to mimic physical surfaces as they would appear in the real world can get very complex and thus slow to calculate.
In the render pipeline, a material is rendered in the fragment shader. For each potentially visible surface pixel the material calculation is executed, all information that is necessary for the calculation is passed down and interpolated from the vertex shader. As the name says, the vertex shader is executed for each vertex in the scene. This means also that in a fragment shader bottlenecked environment, the performance gains between a surface that has 100,000 polygons and one that has only 2 polygons won't make any meaningful impact. Reducing the material complexity can improve in cases where the bottleneck lies in the fragment shader, the render time, tremendously.
Fragment shaders might be called on surfaces even if the surface is barely visible or occluded. It is helpful to identify the materials that won't be the focus of your scene, like interior materials on an exterior shot or elements that are concealed by other geometry. These materials can be optimized without having an impact on the render quality. Specular highlights, metallic finishes and other effects can be recreated with cheaper material solutions.
In many environments where performance is key for a great UX, as it is in VR, it is important to make smart compromises on rendering quality without sacrificing too much of the realistic look that is targeted.
Enable modern rendering solutions like foveated rendering, which is available on Unreal Engine, VRED, and with plugins in Unity, can circumvent this bottleneck. High quality materials and high polygon objects are only rendered where it is necessary, in the area of the screen that projects on the fovea. All screenspace outside of this area are rendering using lower quality materials and optimized geometry.
Transparency is a costly operation, as the renderer needs to figure out which objects to draw first and then overlay the transparent surfaces on top of each other. If possible, avoid transparency.