Search Unity

  1. Calling all beginners! Join the FPS Beginners Mods Challenge until December 13.
    Dismiss Notice
  2. It's Cyber Week at the Asset Store!
    Dismiss Notice

Performance problem with Camera.Render and many objects

Discussion in 'General Graphics' started by DigitalToy, Sep 8, 2015.

  1. DigitalToy

    DigitalToy

    Joined:
    Oct 29, 2012
    Posts:
    11
    I am working on a kind of "paint splatter" program. I instantiate a lot of tiny objects (10s of thousands) to create an effect on the screen. I am finding that performance is slowing down to an unacceptable level. This happens after the objects are drawn on the screen - Camera.Render continues to use an enormous amount of CPU, even though the objects are static. The objects are all the same prefab, colored and sized differently. Is there a way to optimize this?
     
  2. LaJean

    LaJean

    Joined:
    Sep 6, 2015
    Posts:
    10
    Whenever large number of objects are to be drawn, expect lag. Just an idea: why not use particles?
     
  3. DigitalToy

    DigitalToy

    Joined:
    Oct 29, 2012
    Posts:
    11
    Thank you, I'll think about whether particles can solve it. However I'm still wondering why this happens - does the engine re-draw the objects every frame? I would have thought that once they are on the screen, and static, that the CPU usage would drop.
     
  4. LaJean

    LaJean

    Joined:
    Sep 6, 2015
    Posts:
    10
    1. Yes, the engine draws the object textures every frame, so you have to manually do the drawing "preservation". One way is to save periodically what you draw into a new texture and then set the texture so further drawing happens on it.
    Here's a start point: http://docs.unity3d.com/ScriptReference/Camera-targetTexture.html
    Note that rendering must be done every frame otherwise we wouldn't see it. The issue is drawing 10000 times or just 1 time per frame.
    2. I guess an equally dragging factor is the number of instances in the scene.

    Particles solves both problems, it just takes a bit to learn but it pays off big time (pun intended).
     
  5. DigitalToy

    DigitalToy

    Joined:
    Oct 29, 2012
    Posts:
    11
    Thank you for your help!
     
  6. imaginaryhuman

    imaginaryhuman

    Joined:
    Mar 21, 2010
    Posts:
    5,670
    Maybe the objects being sized different is breaking batching?