Search Unity

[RELEASED] GPU Instancer

Discussion in 'Assets and Asset Store' started by LouskRad, May 3, 2018.

  1. GurhanH

    GurhanH

    Joined:
    Apr 24, 2017
    Posts:
    539
    Hi there,
    It looks like your target Graphics API includes GLES2. GPUI requires Metal API on iOS platforms for GPU Instancing and Compute Shader support. If you run your project on an iOS device that does not support Metal, it will fall back to GLES and GPUI will not run.

    https://wiki.gurbu.com/index.php?title=GPU_Instancer:FAQ#What_are_the_Minimum_Requirements.3F
     
  2. desertGhost_

    desertGhost_

    Joined:
    Apr 12, 2018
    Posts:
    260
  3. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    Hi there,

    We have tested GPUI with some of the Nature Manufacture assets and they work together without any complications. We also have users that we know they use some NM assets other than those we tested.

    As for performance, we only have comparison data with Unity's default instancing system which you can check out from here: https://gurbu.com/performance
     
  4. thatscraigz

    thatscraigz

    Joined:
    Mar 27, 2015
    Posts:
    100
    Hello! :)

    Wonderful looking assets, super impressed with what I've been reading/seeing.

    Has there been any update on possible Playmaker support?

    -craigz
     
  5. markashburner

    markashburner

    Joined:
    Aug 14, 2015
    Posts:
    212
    GPU Instancer is completely broken in Unity 2018.3.2f1...GPU instanced prefabs no longer show due to an error in the shader.
     
  6. markashburner

    markashburner

    Joined:
    Aug 14, 2015
    Posts:
    212
    For some reason I am now getting this error even after downgrading back to Unity 2018.2 :

    Shader error in 'GPUInstancer/ANGRYMESH/PBR BlendTopDetail': failed to open source file: './../../../GPUInstancer/Resources/Shaders/Include/GPUInstancerInclude.cginc' at line 146 (on d3d11)

    Compiling Vertex program with UNITY_PASS_SHADOWCASTER SHADOWS_DEPTH PROCEDURAL_INSTANCING_ON UNITY_PASS_SHADOWCASTER
    Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_COLORSPACE_GAMMA UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_FULL_HDR
     
  7. GurhanH

    GurhanH

    Joined:
    Apr 24, 2017
    Posts:
    539
    Hi there and thank you!

    We made an update a while ago that includes a generic solution for adding, removing or updating prefab instances without additional code.
    You can have a look at the Runtime Settings section of the Prefab Manager to see these features.
    When "Auto. Add/Remove Instances" option is enabled, prefab instances that are generated or removed by PlayMaker (or other systems) will automatically register to GPUI.
    When "Auto. Update Transform Data" option is enabled, changes to position/rotation/scale data will also be applied automatically.
     
  8. GurhanH

    GurhanH

    Joined:
    Apr 24, 2017
    Posts:
    539
    Hi there,
    We did not see any problems when running GPUI with Unity 2018.3.2f1. It looks like there has been a change in your project with the folder structure, so the relative path references inside shaders are broken.
    To solve this issue, you can follow these steps.

    1- Click on Tools->GPU Instancer->Clear Shader Bindings menu item
    2- Click "Yes" for both popups (this will remove the shaders that are automatically generated by GPUI)
    3- When you open the scene with the GPUI Manager, shaders will be generated again with the new folder structure.
     
    Mark_01 likes this.
  9. markashburner

    markashburner

    Joined:
    Aug 14, 2015
    Posts:
    212
    Thank you I will keep that in mind for next time. I just re-imported the assets that I was GPU instancing and that seemed to resolve the issue.

    Another question I have:

    The Option to disable Mesh Renderers on prefabs to increase initialization speed

    Can you explain this option in more detail please and are there any example scenes I can see? I am afraid of using it because it says only those with an advanced knowledge GPU instancer should use it and I don't see any examples on how to use it.
     
  10. markashburner

    markashburner

    Joined:
    Aug 14, 2015
    Posts:
    212
    Also when I instantiate objects with GPU Instancer, I get a spike in my FPS...it drops to about 20 FPS for about 3 or 4 seconds and then stabilizes to 70 FPS. I am wondering if GPU Instancer can overcome these drops in FPS? That maybe disabling the Mesh Renderer is for this purpose?
     
  11. Rewaken

    Rewaken

    Joined:
    Mar 24, 2015
    Posts:
    128
    Hello there, I am getting error Object referance not found On Gpu Instancer Hi G occulusion Generator while getting ref for main camera, To fixed it I added public ref for camera
    Code (CSharp):
    1.  
    2. hiZTextureSize.x = Mathf.NextPowerOfTwo(Mycam.pixelWidth);
    3.  
    4.            // hiZTextureSize.x = Mathf.NextPowerOfTwo(mainCamera.pixelWidth);//Cant get ref to Main camera
    5.           //  hiZTextureSize.y = Mathf.NextPowerOfTwo(mainCamera.pixelHeight);
    6.             hiZTextureSize.y = Mathf.NextPowerOfTwo(Mycam.pixelHeight);
     
  12. Rewaken

    Rewaken

    Joined:
    Mar 24, 2015
    Posts:
    128
    Hello, Sorry for late reply before posting something I was fixing issues in my code to see whether it is my fault. I am still getting same error. Creating sample project will be difficult and time consuming as even my current project is more than 25gb. I am still getting error though after looking in your code it occurs if Application.isPlaying is not called on main thread. The error comes frequently and can be close. It didnot completely stop the game but drops fps. I am wondering whether it will affect build to ? As method only called for simulating in editor
     
  13. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    Hi there,

    You can take a look at this wiki documentation for an explanation of the Disable Mesh Renderers feature.

    You can take a look at the profiler to see which methods are causing the issue; and if it is caused by a GPUI method, we can help you identify the problem.
     
  14. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    I'm not sure I understand what you mean; the Hi-Z generator component is managed automatically by GPUI and the camera should be automatically setup as well (or set when you use the SetCamera API method). If you're adding and/or removing the camera component, please make sure you call the SetCamera after that operation (during runtime).

    The part of code you are referring to is set to only run when in Unity Editor and would not be included in the build. However, that line executes during an internal Unity event (EditorApplication.pauseStateChanged) which is supposed to run on the main thread - so I'm not sure why that would cause a problem. You can comment out the inside of the method HandlePauseStateChanged and see if it solves the problem (The method is responsible for showing instances in the editor when the pause button is used during play mode).
     
  15. thatscraigz

    thatscraigz

    Joined:
    Mar 27, 2015
    Posts:
    100
  16. Monorio1

    Monorio1

    Joined:
    Dec 10, 2018
    Posts:
    17
    Hi,
    how would I go about adding shader support for the new SpeedTree 8 shaders? I can't seem to get a working version modifying the SpeedTree8Common.cginc. I have no clue if I'm editing the right file in the first place.

    Thanks
     
  17. IIporpammep

    IIporpammep

    Joined:
    Aug 16, 2015
    Posts:
    39
    Do you plan to support top-down billboards for Tree Creator trees? Or SpeedTree 8 top-down billboards?
     
  18. DirtyHippy

    DirtyHippy

    Joined:
    Jul 17, 2012
    Posts:
    224
    Hi -

    I picked up this asset a few nights ago. At this point I have fully integrated it how I had envisioned and it is working great, but I have a few questions. I am creating runtime prototypes from procedurally generated objects. I am not using gameobject instances but matrices. To be clear my knowledge of shaders / GPU is essentially nil.

    1) For code only protoypes / instances (via matrices) do materials still need to be marked as instanced in the editor?

    2) Every time I add a new prototype at run-time (after setup), I call GPUInstancerAPI.InitializeGPUInstancer () (after adding the proto) and then I immediately reinitialize all of the existing instance matrices with
    InitializeWithMatrix4x4Array. About half the time I do this it appears perhaps a single frame no instances are drawn (and then everything is drawn again). I tested this by simply having a key when pressed called GPUInstancerAPI.InitializeGPUInstancer with true and immediately reinitialized all the prototype matrix arrays for existing instances and it happens about half the time. Is there a way to prevent this?

    3) Is there a way of short-circuiting instancing for a prototype? I.e. right now, with code-driven you work with arrays of matrices so you will buffer matrices that you aren't using (zeroed out). If I have an array of 1000
    matrices, and I am not using any of those matrices currently, I assume it is still incurring cost? Is there a way to just "disable" this instance prototype in a lightweight fashion (other than re-allocating the array to be of zero size)?
    Seems like it might be nice to simply turn off that proto when it isn't in use. Then again, my knowledge of Unity ends at the GPU. Maybe there is no cost?

    4) In line with #4, say I was using an array of 10k matrices, and all of the matrices are genuine instances (and not zeroed out). If I wanted to change one of the matrices (because it moved, rotated, whatever), does specifying these matrices with UpdateVisibilityBufferWithMatrix4x4Array incur a non-trivial cost? I.e. if a single matrix is rotating each frame, does calling this for all 10k matrices each frame incur non-trivial cost? Total guess here, but I am assuming with instanced indirect it would need to upload those matrices to the GPU. If so, is there a way to just specify the change for the single matrix?

    Finally one of the demos is using like 800 megs. I never import demos into my main project, but it seemed a little over the top :)

    Thanks!
     
  19. zoltanBorbas

    zoltanBorbas

    Joined:
    Nov 12, 2016
    Posts:
    83
    Hi there!

    Quick question, is tree made with tree creator and instanced by the GPUI Tree Manager should be effected by wind zone?

    Cheers!
     
  20. bonkersdeluxe

    bonkersdeluxe

    Joined:
    Sep 13, 2013
    Posts:
    3
    Hi, a little question. I would use it for an large dungeon, all blocks in dungeon where destroyed when outside camera, right? How works a pathfinding with navmesh. Is there an option to left Navmeshes? Or what is the solution for pathfinding? I havent purchase yet, beacuse i dont know, how it works. And wtithout functional Navmesh or other Pathfinding my Creatures are without way or ground.Will they fall into the void? Thank you! Sincerely Bonkersdeluxe
     
  21. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    Hi there,

    We haven't tested this thoroughly, but it should be automatically converted just like any other built-in shader when you import the shader in your project. Please have in mind that the shader you need to import into your project is the SpeedTree8.shader (under DefaultResourcesExtra\Nature folder in the built-in archives) and not the SpeedTree8Common.cginc.

    GPUI should recognize this as a SpeedTree instance as well, and create the proxies for you at runtime.
     
  22. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    Yes, we will look into this; however I can't give you a release time at this point.
     
  23. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    Hi there, and thank you for supporting GPUI.

    No. GPUI ignores the original instancing settings on the material.
    GPUI issues the draw calls in the LateUpdate(). If you are initializing the Matrices, you should do this in the Update() method before the draw calls are issued. Also doing this in a FixedUpdate() loop would cause other problems and may create unexpected behavior.

    The RuntimeData class (exists in GPUInstancerManager.runtimeDataList) has a public variable called bufferSize. You can set this to zero for GPUI not to make any draw calls for that prototype.

    The cost is of sending the matrix data for those 10k instances to the GPU. This is not that big a cost, but it is of course hardware dependent. If it is a pre-determined, rule-based matrix change you are after (e.g. rotating by time) it would be ideal to use a compute shader for moving all the instances.

    As for a single instance, the UpdateVisibilityBufferWithMatrix4x4Array method in the GPUInstancerUtility.cs uses the SetData method. This method can be used with an instance index to specify the matrix changes partially (reducing the amount of data sent to the GPU). We will look into adding support for this to the GPUInstancerAPI in a future update.

    You're right. The demo uses Unity's BlackSmith demo set, and it includes un-optimized assets. We will optimize the assets to reduce the package size in a future update. :)
     
  24. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    Hi there,

    Sure thing. All you need is to have a WindZone in your scene. If you instantiate a WindZone after the initialization in play mode, you can simply call the following after you instantiate the WindZone:

    Code (CSharp):
    1. Shader.SetGlobalVector("_Wind", GPUInstancerManager.GetWindVector());
     
  25. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    Hi there,
    and thank you for your interest in GPUI.

    GPUI does not destroy GameObjects when outside the camera, so all the components (e.g. colliders, navmesh, etc.) are left intact. That is, when outside the camera, the instances are simply not rendered, but they are still there.
     
  26. DirtyHippy

    DirtyHippy

    Joined:
    Jul 17, 2012
    Posts:
    224
    Hi -

    Excellent.

    I would suggest making anything deriving from GPUInstancerManager having a super late execution order. I was gathering any dirty prototypes and submitting their matrices to GPUInstancer absolutely last, However, since you are just using the default execution order for your managers, they are firing off well before that. They probably should have a super high execution order (like 32k) since they ideally should run absolutely last.

    It would be nice if you could minimally comment options classes like GPUInstancerPrefabPrototype / GPUInstancerPrototype.

    Finally, it would be ideal to stash proto runtimedata in GPUInstancerPrototype, or at least use a dictionary or a unrolled for-loop to look for the runtime instances by prototype rather than using Find.
     
    LouskRad likes this.
  27. jjobby

    jjobby

    Joined:
    Nov 28, 2009
    Posts:
    161
    Hi, does this asset work with HDRP 4.6? The releases note said that it supports HDRP 4.3 Can it work with Unity HD standard shader?
     
  28. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    Hi there, we've made some preliminary tests with HDRP 4.6 and did not see any problems. There was a problem with auto-converting shaders in 4.3 so there was a necessary fix for that.
     
  29. gww2

    gww2

    Joined:
    Jan 13, 2017
    Posts:
    21
    We have a scaling problem we're working on with using GPU Instancer in a streaming world environment. We have trees built out of blocks. Initially we generated these trees and combined the meshes so they could be set up as single mesh objects for GPU Instancer. As we added more variations and started to add more tree types the number of prototypes started to go way up and we started to run into performance issues from that. We could swap back to the individual block meshes, which would allow us to reduce the prototype count, but that would dramatically increase the number of instances.

    Is there a general rule for performance when it comes to a situation like this?
     
  30. jjobby

    jjobby

    Joined:
    Nov 28, 2009
    Posts:
    161
    Thank you for very fast reply. I've run the asteroid demo. It's very impressive! Great work! I seriously wonder why Unity can't do this in their own engine.

    Can GPU Instancer be used with Unity particle system? My scene is very big and has many particle as a decoration. Can GPU Instancer help in this case?
     
  31. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    Hi there,

    Indeed, the general rule of performance is to go for more instance counts and less prototypes. You can read more on this from the best practices wiki documentation.
     
  32. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    Thanks!

    GPUI does not integrate into the Unity particle system. You can, however, use custom shaders for particle-like effects (e.g. the asteroid haze in the asteroids demo) - or use custom compute shaders to achieve similar effects (e.g. the boids space demo). But all these solutions would require you to write your own shaders.
     
  33. zoltanBorbas

    zoltanBorbas

    Joined:
    Nov 12, 2016
    Posts:
    83
    Hi there!

    Thanks for the help!!! It worked, although i seam to have to call it every time weather maker changes the wind conditions. But it works.

    Thanks again!
     
  34. egable

    egable

    Joined:
    May 21, 2014
    Posts:
    23
    @LouskRad I have read some of your documentation, looking at buying this asset, but wanted to be sure it would work for my situation first. To start, I'm not super knowledgeable about the internals of Unity or about shaders, GPU instancing, etc.

    I am making a survival game where you harvest resources (grass, plants, trees, rocks, etc). I imagine having very dense forests and foliage. I'm using Gaia terrain but Vegetation Studio Pro placed plants. With VSP enabled, I get 6fps - 20fps at slightly less than my desired density with about 4,600 batches and about 341 million triangles. I thought maybe adding your asset to the plant prefabs would help out. Turning off VSP leaves just the terrain and water and puts me at about 140 batches and a few hundred thousand triangles (mostly the water) and about 72 fps (it's very high fidelity water).

    My main concern is that this is going to be multiplayer and the plants need to be harvestable and return resources. I imagine I probably need game objects created for each with colliders to detect when a player harvests something. In that case, I'm looking at tens of thousands of game objects to draw and interact with. Does the GPU Instancer help me at all?

    Another problem is that I need to remember the harvested state of each resource and that will determine whether the resource is displayed / harvestable for other players connected to the server. Can I ensure that the objects are not rendered based on those remembered states?

    I'm also planning on letting players build structures. I was thinking I could use the GPU Instancer on those structure objects to render the potentially thousands of in-sight objects which players place in the scene. Again, players need to be able to interact with these objects (cause damage, destroy, pick up, move, etc). Can I do all of that while still having the drawing be done using a GPU instanced copy?

    Ideally, what I would like to have happen is for the player camera to determine whether anything in particular is drawn, but have all the assets still "be there" in terms of how the game operates. So, for example, the player might be looking away from a forest at a building and all the vegetation in front of them is drawn, as well as the building, etc, but the trees behind them are not, and the wolf running out of the trees to attack them is not, but yet the wolf could still hit them when it reaches them, even though it's behind the player and not drawn / visible. Also not drawn might be some rocks which another player harvested which might normally be in their line of sight based on how they are facing. Those rocks should spawn back in the same spot when their respawn interval triggers. When the player turns to see what hit them, the wolf and forest should render in (right in front of the player since it moved up to the player to attack) and the building and vegetation behind them should stop rendering.

    Let me know if you think I can accomplish all of this with the use of GPU Instancer on all the assets to do the rendering of only what's needed. If you could also point me in the right direction for which API calls you think I might need to focus on learning, that would be helpful, too.

    Thanks!
     
  35. Dobalina

    Dobalina

    Joined:
    Sep 6, 2013
    Posts:
    105
    Hello! I have a followup question to a post I made a few pages back.

    My question: Say I have 3 terrains(A,B,C) in my map with gpu grass. If I move terrain(A) to a new location, will the GPU grass move in sync with the translation of terrain(A)? During this translation of terrain(A), would the Grass of terrains(B,C) remain in place or move as well?
     
  36. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    Hi there,
    and thank you for your interest in GPUI.

    GPUI does not remove the GameObject from your scenes and also does not remove its components. That is, your scripts and the colliders on the object will continue working as they had. What GPUI only disables the MeshRenderers (and LODGroups) on the object to use its rendering system instead.

    In terms of the number of instances, it sounds like your case is indeed suitable for GPU Instancing since where the technique shines most is where there are extreme numbers of instances drawn on the screen. You can read further on this from this wiki documentation and also make sure to read the best practices wiki page.

    As for determining which objects are actually drawn, GPUI uses operations in the GPU to determine them. But again, this is only for determining whether to render the instances or not - since the actual GameObject is still there, your scripts will continue to run even if the instance is not rendered.

    Also, you can have most of the instantiation and re-positioning of your objects made automatically for you. For these, you can check the options for the Runtime Settings in the Prefab Manager. If you prefer to use the Methods in the API, they should be self explanatory for the context you want to use them in.
     
  37. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    Hi there,

    and yes, sure thing. You can take a look at the SetGlobalPositionOffset API method - you can call this per manager (Terrain) to offset the detail and tree instances on the terrain as you translate your terrains.
     
  38. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    704
    Hi, guys, I love the simplicity of the instancer and it works great.
    However, there is one little problem. We are using source control(Perforce) where files are read-only normally.
    It seems like GPU Instancer doesn't work well with locked files. It creates new instances.
    Could you please check to make sure it can work with locked files? It has to check-out the file first before modifying.
    Thank you very much.
     
  39. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    704
    I have one more question.

    I'm really excited that you will support skeletal animation instancing. It will be really great for rendering flock of birds, school of fishes, or insects.

    But I need them to have several animations and position control to be useful. Will GPUI support multiple animation and position controls? I'm sure you will but just to make sure.

    Thanks.
     
  40. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    Hi there, and thanks!

    GPUI by design actively works on works on its generated files (and sometimes the defined prefabs as well) during edit time. For this reason, it requires access to the files that are relevant to it and it could cause problems if these files are locked (or inaccessible for some other reason).

    In short, especially the GPUI generated files must be accessible; you might have to keep checking them out if Perforce is locking them without doing so.
     
  41. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    704
    Sure, but the problem is that it's not easy to remember to check out the file everytime when there are lots of prefabs.
    I think there should be an Unity API to see if the project uses Source Control, and check out the file.
    https://docs.unity3d.com/ScriptReference/VersionControl.Provider.Checkout.html
    It will be super awesome if you can check before modifying files. It will save many others to make the same mistake over and over.
    Thanks.
     
  42. jjobby

    jjobby

    Joined:
    Nov 28, 2009
    Posts:
    161
  43. tspk91

    tspk91

    Joined:
    Nov 19, 2014
    Posts:
    131
    Hi, I am using GPUI for an asteroid field. I want to use both instantiated prefabs inside the playable area, and non-gameobject instances outside the playable area (30.000 instances with real colliders, and 100.000 instances without gameobject). My question is, InitializeGPUInstancer and InitializeWithMatrix4x4Array seem to be in conflict when used in the same manager. Should I use one prefabmanager for prefab instances and another one for non-gameobjects? Also, it seems that InitializeWithMatrix4x4Array can only be done once for each prototype, so I cannot add instances from different lists as with RegisterPrefabInstanceList.

    The code I am currently using, after having added some prefab lists with RegisterPrefabInstanceList:

    Code (CSharp):
    1.         foreach (var kvp in matricesByProt)
    2.         {
    3.             var prototype = kvp.Key;
    4.             Matrix4x4[] matrixArray = new Matrix4x4[countByProt[prototype]];
    5.  
    6.             int currIndex = 0;
    7.  
    8.             foreach (var list in matricesByProt[prototype])
    9.             {
    10.                 for (int i = 0; i < list.Count; i++)
    11.                 {
    12.                     matrixArray[currIndex] = list[i];
    13.                     currIndex++;
    14.                 }
    15.                 list.Clear();
    16.                 list.TrimExcess();
    17.             }
    18.  
    19.             GPUInstancerAPI.InitializeWithMatrix4x4Array(prefabManager, prototype, matrixArray);
    20.         }
    21.         GPUInstancerAPI.InitializeGPUInstancer(prefabManager);
     
  44. p_hergott

    p_hergott

    Joined:
    May 7, 2018
    Posts:
    414
    Just a quick question, i currently have VS, and it works good. But im running 2 cameras, with lots of trees and bushes ect. I am seeing some performance issues at the moment. Does gpu instancer out do VS for volume of objects?
     
  45. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    704
  46. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    We are working on various strategies to implement the skinned mesh instancing system (including one that is based on GPU Skinning, like the one you suggested). We will explain the details further into the development process.
     
  47. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
  48. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904

    Hi there,
    you can use two managers; one for each. However, a better approach would be to use a single manager where you render all your instances with a no-GameObject workflow. You can then instantiate GameObjects for those that you want colliders, etc. on without adding a MeshRenderer for them. If you do this, however, you would need to update the matrices of the instances with instantiated GameObjects if your GOs are moving/rotating/scaling.
     
    tspk91 likes this.
  49. LouskRad

    LouskRad

    Joined:
    Feb 18, 2014
    Posts:
    904
    You can take a look at the best practices and terminology wiki documentations to decide if GPUI is right for your project. Other than that, we have not tested VS for a comparison.
     
  50. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    704
    I'm really looking forward to hearing more about your Skeletal Animation Instancing. Please keep the good work.

    And please don't forget about below. It's is really cumbersome for us to work with GPUI.
    Cheers!