Camera.Render super lent dans le Profiler

Toutes les questions sur le développement Mobile, y compris la partie script.
GaMaYa
Messages : 3
Inscription : 03 Août 2011 21:56

Camera.Render super lent dans le Profiler

Message par GaMaYa » 03 Août 2011 22:01

Bonjour,

je suis en train de faire un jeu 2D sur iPhone à l'aide de Unity3D et du SpriteManager2.

Quand je lance le jeu sur mon iPhone 4, le FPS est ridicule (10FPS) et le profiler m'affiche des valeurs plutôts bizarres/intéressantes :
- Camera.Render met plus de 100ms à faire son action à chaque frame ;
- des fois, il ne met que 7-8ms, et là, c'est le Device.Present qui demande plus de 100ms.

Si j'ai bien compris, le Device.Present est là surtout indiqué que le CPU attend le GPU, et rien d'autres, non ? Mais dans ce cas, pourquoi a-t-il besoin d'attendre plus de 100ms ?

Si quelqu'un a la moindre idée ?

Merci !

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: Camera.Render super lent dans le Profiler

Message par giyomuSan » 04 Août 2011 01:56

Pas possible de t aider sans plus d info,

Quel type de shader tu utilse,
Dimension de tes texture
Nombre de draw call
Utilise tu beaucoup de sprite avec transparence qui s overlap
Est tu en Hd resolution sur ton iphone
As tu de light dans ta scene
Utilise tu le MSAA

En gros tu dois certainement taper les limite du gpu ce qui fais qu il rame,

Faut filer plus d info sur la composition de ta scene, balance un screen du profiler aussi

GaMaYa
Messages : 3
Inscription : 03 Août 2011 21:56

Re: Camera.Render super lent dans le Profiler

Message par GaMaYa » 17 Août 2011 14:36

Salut !

Désolé pour le retard de la réponse.

C'était bien une mauvaise utilisation des shader.

J'avais vu pas mal de tutoriels sur Sprite Manager qui utilisaient le shader "Transparent/Vertex Colored", sauf qu'il n'est pas vraiment fait pour les mobiles (et du coup, plombait le Device.Present, sûrement pour les raisons que tu as dits).

Du coup, j'utilise les shader plus rapide de Unity comme le "Mobile/Particles/Alpha Blended" (que j'ai un peu modifié par la même occasion) et ça tourne beaucoup mieux (j'ai gagné 20fps).

J'ai aussi optimisé le batch render (me suis rendu compte d'une erreur de code qui démultipliait mes Material et du coup, 0 batch) et j'ai réduit le culling en désactivant les GameObject qui ne sont pas censés s'afficher (gain de 3ms par frame).

J'en ai profité pour passer le Quality Settings de "Good" à "Fastest" en conservant par contre le "Texture Quality" sur "Full Res".

J'ai vu que pas mal de gens conseillaient de passer le "Script Call Optimization" (sur les Player Settings en iOS) de "Slow and Safe" à "Fast but no Exceptions", sauf que sur le coup, ça fait crasher mon application. Je regarderai ça plus tard, si ça peut faire gagner quelques fps.

Au final, avec ça, mon jeu tourne à 30fps sur iPhone 4, iPad 1 et 2, et à ~25fps sur iPhone 3GS.

Là je suis en train de voir pour réduire le nombre de GameObject sur ma scène où j'ai actuellement 2400~5000 par niveau.

Par contre, c'est quoi MSAA ?

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Camera.Render super lent dans le Profiler

Message par cayou66 » 17 Août 2011 22:25

GaMaYa a écrit : Par contre, c'est quoi MSAA ?
http://en.wikipedia.org/wiki/Multisample_anti-aliasing

GaMaYa
Messages : 3
Inscription : 03 Août 2011 21:56

Re: Camera.Render super lent dans le Profiler

Message par GaMaYa » 18 Août 2011 10:22

Ah oui d'accord !

Non, je n'en utilise pas ici.

Répondre

Revenir vers « Développement plateformes mobile Iphone et Android »