I just installed the update for 1.5. Opened my scene and it seemed sluggish. I realized that the poly count suddenly quadrupled on my geometry !?!?
So I made a test. Created a new project. Imported a cube from Maya. The cube has 12 tris and 8 verts, which is what you can expect. In Unity it gives me 32 polys and and 24 vertices… My geo is single sided. How can in come up for 32 tris for a cube? 32 doesn’t even divide by 6 or 12. And 24 vertices?
Then I tried with a sphere. In Maya 382 verts and 760 tris. In Unity 439 verts and 836 tris.
As for the geo I use in my game it’s 17422 tris and 7838 verts in Maya and a crazy 54.1k tris and 54.1k verts in Unity. How can I get the same number of tris and verts?
I don’t see what could do this in the import settings. I turned off the Automatically Caculate Normals and clicked on No Animation but what else? There’s only one object in that file.
What you are looking at is the amount of triangles actually being sent to OpenGLES for rendering. Things like hard-normals and non contiguous UV increase vertex/triangle counts significantly compared to what Maya tells you.
My understanding is that triangles need to be contiguous in both 3D and UV space to form a strip, so when you have UV seams, degenerate triangles have to be made to form strips.
As for a difference in what you had before the upgrade – what was displayed before was incorrect.
I’m doing a maze so the geometry is all over the place. Bunch of little walls combined together with the floor. I remapped the UVs and made the smoothing at 180 degrees on everything and now it gives me 36k tris and 50k verts. Still way too much.
So, how many years before the iPhone becomes as powerful as a PS3
Does it make any sense that the number of verts and tris changes if you add a directional light? Draw calls I can understand but why if the number of polys changing when I turn a light on?
Even stranger, the amount of polys cuts by half if I change the shader from diffuse to specular !?!
EDIT: this happens only when I’m in iPhone Graphic Emulation
Because a new drawcall with the same amount of geometry means that the same geometry is rendered again and thus its geometry is also sent once again to the gpu for rendering with different data (color data in this case)
The old unity iphone just did not show correct data in this case.
And it actually makes sense too for diffuse to specular as the UV related data is cut and thus potentially required geometry dublication to hold these data (though I’ve to say I’m confused on this too as interleaved array, supported on all iDevices, support geometry + uv data in a single array …)
But unless I’m mistaking, the specular is a calculation added to the diffuse pass so it should add a drawcall and double the geometry but it does the opposite. Diffuse is twice as heavy then specular for the numbers I get.
Well, I’m from the movie industry, so, used to software rendering and not hardware rendering, but from my experience UVs are only used for texture mapping and they are irrelevant for diffusion, spec, reflection. I don’t have any textures in my scene at this point. They will be used for bump and displacement maps though. As far as interleaved array and stuff, that’s way over my competence. I’m not there yet…