How about dynamic batch in unity?why so different in particle system and dynamic mesh?

when i instantiate mesh with the same material,and got 300 verts limits in dynamic batch,But in particle system,it can make 10664 vertices in one batch ! why so big different? how can i make the batch like the particle system?


2191430--145407--bt2.png

*** This is just an educated guess ***

It may depend on the size of a vert. With a normal vert on a normal mesh, you need position data, texture coordinates, normal data, and sometimes some extra data (extra texture coordinates, material data, color data, etc.). As you can see, these verts can take up as much space as 16 floats or more.

A particle vert requires less information because some of the information can be built at runtime. You could have a list of verts that only have position data, then the geometry shader can make those points into quads with normals and texture coordinates at runtime. These verts can use up as little space as 4 floats.

Example:

A mesh vert with the following data is the size of 32 floats:
float4 position, float4 Texcoord0, float4 Texcoord1, float4 Texcoord2, float4 Texcoord3, float4 Color, float4 Normal, float4 Tangent

A particle vert with the following data is the size of 4 floats:
float4 position

Thus, more particle verts can fit into a structure of a given size than mesh verts.

But I use diffuse shader to instantiate 75 pieces Quads.simple than particle additiveshader

any help?

Unity doesn’t batch things in the “Transparent” queue (at least in static batching I’m assuming dynamic batching as well). A work around would be to download the built in shaders, copy the particle additive shader and change its queue to “Geometry+50”, the 50 is fairly arbitrary.
Or you could try setting one of your quads sharedMaterial.queue to 2050

thanks ~,but why can batch this within 300 vertexs in transparent queue,this is confused…