Eyeshot 11 Documentation
WinForms Control / Tutorials / Performance Tips
In This Topic
    Performance Tips
    In This Topic

    Here are some tips to improve Eyeshot frame rate. Before playing with this settings, please turn on the current frame rate display using the ViewportLayout.ShowFPS property.

     

    Display mode

    Always use the least acceptable ViewportLayout.DisplayMode. For example, if you are drawing only wires, don't forget to set the display mode as Wireframe. If you are drawing 3D objects, try first Shaded display mode, it uses colors only instead of all material properties.

     

    Minimum frame rate

    The ViewportLayout.MinimumFramerate property defines the minimum frame rate you want to keep when moving the scene. Eyeshot skips the drawing of some entities during dynamic movements (Zoom, Pan, Rotate) to maintain as much as possible the frame rate specified by this property. This feature is disabled by setting its value to zero.

     

    Skipping small objects

    When the ViewportLayout.HideSmall is activated, Eyeshot skips drawing all entities whose size on screen is bigger than ViewportLayout.SmallSize (in pixels). This could be very useful to skip bolts drawing in a bridge drawing.

     

    Silhouette curves

    Silhouettes are computationally expensive and can slow down a scene. They can be either disabled entirely, drawn only at the end of a dynamic movement (the default) or drawn at every frame. Set the ViewportLayout.SilhouettesDrawingMode property of the desired display mode to:

    ViewportLayout.Wireframe.SilhouettesDrawingMode = silhouettesDrawingType.Never;
    ViewportLayout.Shaded.SilhouettesDrawingMode = silhouettesDrawingType.Never;
    ViewportLayout.Rendered.SilhouettesDrawingMode = silhouettesDrawingType.Never;
    ViewportLayout.Wireframe.SilhouettesDrawingMode = silhouettesDrawingType.Never
    ViewportLayout.Shaded.SilhouettesDrawingMode = silhouettesDrawingType.Never
    ViewportLayout.Rendered.SilhouettesDrawingMode = silhouettesDrawingType.Never

    Planar reflections

    Available only in the Rendered display mode, they require an extra drawing pass so they slow decrease the frame rate. They can be disabled with the following property:

    ViewportLayout.Rendered.PlanarReflections = false;
    ViewportLayout.Rendered.PlanarReflections = False

    Realistic shadows

    Available only in the Rendered display mode, they require extra drawing steps so they slow down drawing speed. They can be disabled with the property:

    ViewportLayout.Rendered.ShadowMode = shadowType.None;
    ViewportLayout.Rendered.ShadowMode = shadowType.None

    Their quality, but also their performances, can be tuned with the property:

    ViewportLayout.Rendered.RealisticShadowQuality = realisticShadowQualityType.Low;
    ViewportLayout.Rendered.RealisticShadowQuality = realisticShadowQualityType.Low

    which can be Low, Medium or High, where Low requires less drawing passes and High requires more drawing passes.

     

    Edges and internal wires

    In Shaded and Rendered display modes, you may want to turn off edges and internal wires drawing in this way:

    ViewportLayout.Shaded.ShowEdges = false;
    ViewportLayout.Shaded.ShowInternalWires = false;
    ViewportLayout.Rendered.ShowEdges = false;
    ViewportLayout.Shaded.ShowEdges = False
    ViewportLayout.Shaded.ShowInternalWires = False
    ViewportLayout.Rendered.ShowEdges = False

    Transparent objects

    Many transparent objects will for sure slow down drawing. Keep their number at the minimum or keep low their triangle count.

     

    Object grouping

    To improve drawing speed, try merging most of your Mesh objects in a single (multicolor) Mesh.

     

    BlockReference

    A complex multilevel scene structure using Block/BlockReference will allow saving memory but in general will not improve the frame rate.

     

    Tessellation

    The bigger is the scene number of segments/triangles the slower will be dynamic movements. You can try reducing the segments/triangles total count calling ViewportLayout.Entities.RegenAllCurved()with the biggest acceptable deviation (chordal error) tolerance.

     

    Graphics adapter

    Always recommend a Workstation class display adapter to your customers.

     

    High DPI monitors

    The higher is the display resolution, the slower the frame rate will be.

     

    Use the big spoon

    When adding entities to the ViewportLayout.Entities collection choose ViewportLayout.Entities.AddRange() over Add(). Eyeshot changes the default cursor in these operations and most of the times, it greatly affects the execution time.

     

    Immediate mode rendering in WPF

    If you use the WPF Eyeshot control, try enabling the Immediate mode rendering in this way:

    ViewportLayout.Renderer = rendererType.OpenGL;
    ViewportLayout.Renderer = rendererType.OpenGL

    Parallel regeneration

    The property ViewportLayout.Entities.Parallel does not affect the frame rate but can speed up the regeneration operations (like adding entities to the ViewportLayout) by performing them in parallel.