Search Unity

GraphIt [Released]

Discussion in 'Assets and Asset Store' started by smunky, Sep 6, 2015.

  1. smunky

    smunky

    Joined:
    Aug 23, 2015
    Posts:
    10

    GraphIt is an editor tool which makes it easy to visualize any value over time. Using one simple function call, you can easily monitor things like performance, population counts, resource consumption or anything else that changes over time that you want to better understand.

    Creating graphs is as simple as a single line of code. Data can be graphed from a single call or accumulated by logging more values in the same frame to the same graph. This makes it easy to track individual values or multiple sources of data.

    GraphIt.Log( "Graph Name", frame_value );​

    GraphIt use fast low level line rendering to allow you to visualize many graphs with no performance concerns. GraphIt also only runs in the editor, and has no impact on your final build. All source code is included in the asset if you wish to make alterations, or you can work with us to ensure the tool meets your needs. GraphIt also works seemlesly between free and pro versions of Unity.

    GraphIt labels include the average of the whole window, the recent average, the minimum and the maximum within the window. The graphs auto-scale, and can automatically include 0 or not. Graphs can also be configured to include longer or short windows to track. By default the graph steps every frame, but you can pause the graph and/or manually step it as well.

    Visualizing two graphs at the same time can help understand the relationship between two different values in your game, and is invaluable for understanding the inner workings of your project.


    Video demo:


    Asset store: https://www.assetstore.unity3d.com/en/#!/content/43581
     
    Last edited: Sep 6, 2015
    GameArt and Cheerio like this.
  2. GameArt

    GameArt

    Joined:
    Feb 24, 2013
    Posts:
    86
    Great package, really helped me debug issues with my character controller in real time.
     
  3. smunky

    smunky

    Joined:
    Aug 23, 2015
    Posts:
    10
    I the next update, version 1.1.0, which is currently in for review, I've added a bunch of new features.

    -Multiple logs can be rendered on the same graph
    -Graphed logs can be any color
    -Graphs can have their height adjusted from code or by dragging with the mouse
    -Graphs no longer needed can be closed by right clicking on them, and then shown again by the Show All Graphs button.
    -Graph info collapses up to individual rows when there is a lack of vertical space
    -Mouse inspection on the graph is now supported
    -The user can now specify in the editor how many fractional digits are shown on the graph info and mouse inspection

    These features were a result of user feedback. Next up for GraphIt will be adding the persistence of the user settings, such as the graph height, graph visibility and fractional digits. I'll also be adding a listing of the hidden graphs at the bottom of the window so that you'll be able to show specific graphs, rather than turning them all on again.

    I've also been suggested to add the option to not collect graph data when the editor window is closed. This will help reduce the overhead of GraphIt when it's not in-use. Thoughts?
     
  4. GameArt

    GameArt

    Joined:
    Feb 24, 2013
    Posts:
    86
    Awesome changes, everything I wanted :)
     
  5. ratking

    ratking

    Joined:
    Feb 24, 2010
    Posts:
    350
    Heya,

    I had problems with directly mailing support, and I was directed here, so here is a copy of the mail I wrote:

    "Hallo, thanks for updating GraphIt, the new version is really good.

    I have only two problems left, perhaps you can fix those too.



    First, as seen on the picture above, the rendering of the graphs is quite suboptimal. Even straight lines are dotted often, sometimes even invisible, depending on the size of the graph and the window. Maybe it's because of my system (Unity 5.2.2 64bit, Win 7, DX11 on DX10 GPU), but I also use another graph tool and that one looks alright.



    Second, as seen on this screenshot, the little box that explains how to resize graphs gets a bit annoying when the GraphIt window in the editor is narrow (as I like to use it), as it pushes the graphs further down, wasting space."

    Regards,
    ratking
     
  6. smunky

    smunky

    Joined:
    Aug 23, 2015
    Posts:
    10
    Hey ratking,

    Thanks for the information about how you use GraphIt!

    Regarding, the explanation box. I think I'll remove that and see if I can embed that information via a tooltip or something that doesn't cause such a waste of waste when the window is so narrow.

    About the line rendering, that is quite odd. I haven't seen that issue since using the old slower Handles.DrawLine code. I have a few questions about your setup. Do you have any graphics driver settings overriding anything related to anti-aliasing? Do you have any desktop display scaling being done by windows? Is your graph using the default SampleWindowSize, or have you set it up to be greater or small?

    Thanks for any information you can provide. I'll work on the explanation box issue over the weekend and get another package submitted once that's resolved while I try to track down the rendering issue. If you'd like to skip past Unity's approval process I can also just manually send you a copy of the updated package.
     
  7. ratking

    ratking

    Joined:
    Feb 24, 2010
    Posts:
    350
    Hey smunky,

    thanks for your answer. As far as I can see I don't have overridden graphics driver settings, and there is no scaling. I tried to use GraphIt with the default settings, just calling GraphIt.Log("x", rigidbody.velocity.x); - the result is the same:



    Regards,
    ratking
     
  8. ratking

    ratking

    Joined:
    Feb 24, 2010
    Posts:
    350
    I just saw, I get a much cleaner result if I force Unity to use OpenGL!



    I guess DirectX 9 is the culprit?
     
  9. smunky

    smunky

    Joined:
    Aug 23, 2015
    Posts:
    10
    That's really interesting. How did you force it to use OpenGL?

    Unfortunately with Unity 5.3 something in the Editor rendering changed and broke a bunch of tools using the lower level rendering. I'm still trying to track this down.
     
  10. ratking

    ratking

    Joined:
    Feb 24, 2010
    Posts:
    350
  11. smunky

    smunky

    Joined:
    Aug 23, 2015
    Posts:
    10
    Hey ratking, good news! I found the bug with Unity 5.3 and have submitted the fixed version for review. I've also removed the help text label, so that shouldn't cause you to have formatting/layout issues anymore.

    Once you get the latest version, please let me know if you still have the weird dotted line rendering.
     
  12. ratking

    ratking

    Joined:
    Feb 24, 2010
    Posts:
    350
    I will check it out as soon as the asset store delivers the new version! Thanks!
     
  13. smunky

    smunky

    Joined:
    Aug 23, 2015
    Posts:
    10
    It was approved a few days ago, so you should be good to go! :)

    Our support contact email is also fixed now too.
     
  14. ratking

    ratking

    Joined:
    Feb 24, 2010
    Posts:
    350
    I already updated my review, but I just have to say it again: good job! It's a nearly perfect asset now!
     
    smunky likes this.
  15. smunky

    smunky

    Joined:
    Aug 23, 2015
    Posts:
    10
    Thank you very much ratking. I massively appreciate the help and feedback you've given me!
     
  16. zeotron

    zeotron

    Joined:
    Nov 30, 2018
    Posts:
    3
    @smunky Thanks for the great plugin!

    I know this hasn't been updated in a while but I was having issues with it displaying correctly on high DPI monitors.

    If anyone else is having an issue, I have a quick fix using EditorGUIUtility.pixelsPerPoint.

    See the diff below (where the
    Rect
    passed into the
    GL.Viewport
    call gets modified).

    Code (diff):
    1. diff --git a/Assets/Plugins/NothingIsEasy/GraphIt/Scripts/Editor/GraphItWindow.cs b/Assets/Plugins/NothingIsEasy/GraphIt/Scripts/Editor/GraphItWindow.cs
    2. index e2aed6551..a09c41199 100644
    3. --- a/Assets/Plugins/NothingIsEasy/GraphIt/Scripts/Editor/GraphItWindow.cs
    4. +++ b/Assets/Plugins/NothingIsEasy/GraphIt/Scripts/Editor/GraphItWindow.cs
    5. @@ -156,9 +156,9 @@ public class GraphItWindow : EditorWindow
    6.              if (Event.current.type == EventType.Repaint)
    7.              {
    8.                  GL.PushMatrix();
    9. -                float start_y = find_y.y;
    10. -                GL.Viewport(new Rect(0, 0, rect.width, rect.height - start_y));
    11. -                GL.LoadPixelMatrix(0, rect.width, rect.height - start_y, 0);
    12. +                float guiHeight = rect.height - find_y.y;
    13. +                GL.Viewport(new Rect(0, 0, rect.width * EditorGUIUtility.pixelsPerPoint, guiHeight * EditorGUIUtility.pixelsPerPoint));
    14. +                GL.LoadPixelMatrix(0, rect.width, guiHeight, 0);
    15.                  //Draw grey BG
    16. @@ -248,8 +248,8 @@ public class GraphItWindow : EditorWindow
    17.                  GL.End();
    18.                  GL.PopMatrix();
    19. -
    20. -                GL.Viewport(new Rect(0, 0, rect.width, rect.height));
    21. +
    22. +                GL.Viewport(new Rect(0, 0, rect.width * EditorGUIUtility.pixelsPerPoint, rect.height * EditorGUIUtility.pixelsPerPoint));
    23.                  GL.LoadPixelMatrix(0, rect.width, rect.height, 0);
    24.              }
    25.  
     
    Last edited: Mar 24, 2021