<p>Unity provides a pretty clear description of <a href="https://docs.unity3d.com/540/Documentation/Manual/GPUInstancing.html" rel="nofollow">GPU instancing</a>. It is exactly the same as instancing. Employees of Unity even spell this out by initially <a href="http://forum.unity3d.com/threads/gpu-mesh-instancing.19670/" rel="nofollow">arguing</a> against it years ago before finally implementing it.</p>

<p>Before this, Unity solely relied on <a href="http://docs.unity3d.com/Manual/DrawCallBatching.html" rel="nofollow">batching</a>, which was a technique that combined meshes together into one to reduce draw calls.</p>

CC BY-SA 3.0
2016-06-16T02:15:29.827Z
2016-06-16T02:15:29.827Z
aces
<p>My understanding is that in 5.4, instancing will use API calls like glDrawElementsInstanced and shaders need to be modified for instance buffers like in this document: <a href="https://docs.google.com/document/d/1RS6cVjE8mBVOKqQUuXbaZcPW3kmw3ZWySJwr-5rDwSs/edit" rel="nofollow noreferrer">Basic GPU Instancing Support | docs.google.com</a></p>
<blockquote>
<p>UNITY_INSTANCING_CBUFFER_START (MyProperties)</p>
<p>UNITY_DEFINE_INSTANCED_PROP (float4, _Color)</p>
<p>UNITY_INSTANCING_CBUFFER_END</p>
</blockquote>

CC BY-SA 3.0
2016-06-11T16:55:58.717Z
Could you also explain how this differs from standard instancing?
trichoplax is on Codidact now
CC BY-SA 3.0
2016-06-11T15:13:56.427Z
2018-04-09T09:41:17.210Z
2020-06-18T08:32:12.800Z
SurvivalMachine
<p>I have been reading a lot of debate on a new feature that will be available in the new version of the game engine Unity 5.4 - called GPU instancing. I understand the importance of instancing in general, both in terms of saving memory and draw calls.</p>

<p>However, even after doing some reading, I still couldn't understand what exactly are the differences between GPU instancing and non-GPU instancing - and, more importantly, where the alleged GPU advantages in terms of performance come from in comparison to standard instancing.</p>

<p>Thanks for your knowledge and for any references.</p>

CC BY-SA 3.0
2016-06-09T07:50:32.520Z
I'm not aware of any distinction between "GPU instancing" and "standard instancing". As far as I'm aware, there's only one kind of instancing and it is a GPU feature. Whatever this is, it's probably something specific to Unity (and perhaps a term made up by Unity marketing), and you might have to track down a Unity engineer to get an explanation of what the new feature really is.
Nathan Reed
CC BY-SA 3.0
2016-06-09T07:55:16.000Z
By 'standard instancing', could they be referring to just having one copy of the mesh in system memory? That sounds rather elementary to any game engine. It also seems odd that they didn't have GPU instancing until now.
Rotem
CC BY-SA 3.0
2016-06-09T12:22:30.517Z
@Rotem Those were exactly my thoughts and the origin of my question. See here in their roadmap what they say about it: https://unity3d.com/pt/unity/beta/unity5.4.0b1 And yes, the only thing I can think of is that their "non-GPU" instancing is a copy of mesh in RAM, which **is** quite a ppor way of doing that. As per the link I sent, it seems that now they are firstly introducing the possibility of instancing using shaders, i.e. directly in the GPU
Louis15
CC BY-SA 3.0
2016-06-09T20:23:37.800Z
If the mesh moves and needs to be drawn in many places then one could instantiate it by reusing the draw calls and not redo mesh deformations. Used to be done in ages past ages.
joojaa
<gpu><performance>
What are the differences between GPU instancing and standard instancing?
Louis15
# What are the differences between GPU instancing and standard instancing?

(Asked by: username_0 on 2016-06-09)

I have been reading a lot of debate on a new feature that will be available in the new version of the game engine Unity 5.4 - called GPU instancing. I understand the importance of instancing in general, both in terms of saving memory and draw calls.

However, even after doing some reading, I still couldn't understand what exactly are the differences between GPU instancing and non-GPU instancing - and, more importantly, where the alleged GPU advantages in terms of performance come from in comparison to standard instancing.

Thanks for your knowledge and for any references.

**Tags:** gpu, performance

> **Comments:**
> **username_1**: I'm not aware of any distinction between "GPU instancing" and "standard instancing". As far as I'm aware, there's only one kind of instancing and it is a GPU feature. Whatever this is, it's probably something specific to Unity (and perhaps a term made up by Unity marketing), and you might have to track down a Unity engineer to get an explanation of what the new feature really is.  
> **username_2**: By 'standard instancing', could they be referring to just having one copy of the mesh in system memory? That sounds rather elementary to any game engine. It also seems odd that they didn't have GPU instancing until now.  
> **username_0**: @username_2 Those were exactly my thoughts and the origin of my question. See here in their roadmap what they say about it: https://unity3d.com/pt/unity/beta/unity5.4.0b1 And yes, the only thing I can think of is that their "non-GPU" instancing is a copy of mesh in RAM, which **is** quite a ppor way of doing that. As per the link I sent, it seems that now they are firstly introducing the possibility of instancing using shaders, i.e. directly in the GPU  
> **username_3**: If the mesh moves and needs to be drawn in many places then one could instantiate it by reusing the draw calls and not redo mesh deformations. Used to be done in ages past ages.  

---

## 2 answers

### Answer by username_4 on 2016-06-16. Score: 1

Unity provides a pretty clear description of [GPU instancing](https://docs.unity3d.com/540/Documentation/Manual/GPUInstancing.html). It is exactly the same as instancing. Employees of Unity even spell this out by initially [arguing](http://forum.unity3d.com/threads/gpu-mesh-instancing.19670/) against it years ago before finally implementing it.

Before this, Unity solely relied on [batching](http://docs.unity3d.com/Manual/DrawCallBatching.html), which was a technique that combined meshes together into one to reduce draw calls.


---

### Answer by username_5 on 2016-06-11. Score: 0

My understanding is that in 5.4, instancing will use API calls like glDrawElementsInstanced and shaders need to be modified for instance buffers like in this document: [Basic GPU Instancing Support | docs.google.com](https://docs.google.com/document/d/1RS6cVjE8mBVOKqQUuXbaZcPW3kmw3ZWySJwr-5rDwSs/edit)

> UNITY\_INSTANCING\_CBUFFER\_START (MyProperties)
>
> UNITY\_DEFINE\_INSTANCED\_PROP (float4, \_Color)
>
> UNITY\_INSTANCING\_CBUFFER\_END

> **Comments:**
> **username_6**: Could you also explain how this differs from standard instancing?  

---

