Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Resolución y rendimiento

Iniciado por Javiero, Enero 13, 2017, 02:08:25 PM

Tema anterior - Siguiente tema
Enero 13, 2017, 02:08:25 PM Ultima modificación: Enero 14, 2017, 01:02:25 AM por pioj
Buenas,
 
Estoy haciendo un test de velocidad con varios dispositivos android, y me encuentro con el problema de que uno de los aparatos tiene una resolución exagerada ( un LG G3 que tiene 2560 x 1440). El caso es que estoy haciendo pruebas para intentar poner una resolución mas baja, y veo que el rendimiento sigue siendo el mismo (uso  Screen.SetResolution( 1280,720,true ); )
 
Me da la impresión de que cambia la resolución interna y luego la proyecta sobre la resolución nativa del aparato (con lo cual el rendimiento apenas cambia)
 
Alguien me puede aportar algo de luz sobre el tema ? 
 
 
 
Muchas gracias de antemano. ;-)

Puede que se reescale para cubrir toda la pantalla, aunque yo lo que haría sería poner un texto y refrescar ingame los fps y la resolucion. Aunque también puede ser por optimización... Mi padre tiene un lg g3 y tuve que bajarle las prestaciones al juego... Ya que con sus especificaciones debería haber corrido mejor el juego... Pero no xd
 
Es una escena 3D? Hay 400 scripts ejecutándose? Hay muchos objetos activos? De serlo, aplicas oclusión culling?

Cita de: edgar_94_ date=1484315607Puede que se reescale para cubrir toda la pantalla, aunque yo lo que haría sería poner un texto y refrescar ingame los fps y la resolucion. Aunque también puede ser por optimización... Mi padre tiene un lg g3 y tuve que bajarle las prestaciones al juego... Ya que con sus especificaciones debería haber corrido mejor el juego... Pero no xd
   
   
      Es una escena 3D? Hay 400 scripts ejecutándose? Hay muchos objetos activos? De serlo, aplicas oclusión culling?
   


Hola edgar, gracias por responder.
 
Verás he hecho un par de pruebas (una en 3D con occlusion culling, por supuesto) y otra en 2D con sprites. En ambas me ocurre exactamente lo mismo.
 
He usado el profiler para ver donde gastaba tiempo, y el 90% lo ocupa entre el rendering y el "behaviourUpdate", pero el problema no es ese, el problema es que la pantalla de un movil con alta resolución está pintando en cada frame todos los pixels de su resolución nativa, aunque tu estés volcando en el framebuffer interno una resolución propia menor.
 
Por eso quería saber si había alguna manera de cambiar la resolución real y no solamente la proyección que hace unity sobre dicha pantalla.
 
Es que me alucina un poco que un movil con un Quadcore a 2,5 Ghz tenga un rendimiento tan pobre por culpa de la burrada de resolución que maneja, que para juegos la veo un poco absurda (538 dpi es una animalada :( )
 
 
 
 
 
 
 
 

Enero 13, 2017, 04:28:51 PM #3 Ultima modificación: Enero 14, 2017, 01:02:51 AM por pioj
La verdad que me suena muy raro :S Mi novia tiene un movil con pantalla 2K y reescalando la resolucion a 1080 funciona de lujo, evidentemente estos moviles no están preparados para renderizar graficos pesados frame a frame en 2k... Donde cambias la resolucion del juego? 
 



   
       
   
   
      Screen.SetResolution( 1280,720 );
   
   
       
   

[/quote]
 
Prueba a utilizar el método sin el booleano a ver que pasa... Porque no me habia fijado que habias bajado el juego a 720... funcionaría hasta en un movil de gama baja... 
 
Prueba este asset, me sirvió mucho para debbugear builds en android:
 
https://www.assetstore.unity3d.com/en/#!/content/12047
 
Haz logs con practicamente todo, si te cambia de resolucion, log, resolucion actual, log, fps, log... etc Y subes una captura de pantalla al foro por que así te podremos ayudar mejor ;)

Enero 13, 2017, 08:02:12 PM #4 Ultima modificación: Enero 13, 2017, 08:07:17 PM por Javiero
Pongo 2 pantallazos donde se aprecia lo que te decía, fíjate que en ambas resoluciones se muestran los mismos FPS, y lo mas fuerte que ambas imágenes son de 2560x1440 aunque en una de ella ponga 1280x720.
 
Por eso pienso que una cosa es la resolución interna (en la que trabaja el unity) y otra la real que no hay manera de cambiarla :-(
 
Sobre lo que me preguntabas de donde ponía el Screen.SetResolution, lo he probado en distintos sitios y finalmente después de buscar por foros lo he puesto en un script asociado a la cámara de la única escena que hay, en el evento AWAKE para que se ejecute al principio de todo.
 
 
 

 

Cita de: Javiero date=1484334132Pongo 2 pantallazos donde se aprecia lo que te decía, fíjate que en ambas resoluciones se muestran los mismos FPS, y lo mas fuerte que ambas imágenes son de 2560x1440 aunque en una de ella ponga 1280x720.
   
   
      Por eso pienso que una cosa es la resolución interna (en la que trabaja el unity) y otra la real que no hay manera de cambiarla :-(
   
   
      Sobre lo que me preguntabas de donde ponía el Screen.SetResolution, lo he probado en distintos sitios y finalmente después de buscar por foros lo he puesto en un script asociado a la cámara de la única escena que hay, en el evento AWAKE para que se ejecute al principio de todo.
   
   
       
   
   
      
   
   
      
   


Ahí es donde tiene que estar el cambio de resolución ;)
 
En cuanto al rendimiento... Creo que no sea por tema de grafica, si no de físicas jajajaja todos los cubos son objetos 3D verdad? Están en movimiento (con físicas) ?

No, que va, están parados y con el componente "collider" desactivado del plano y de los cubos.
 
Además en el profiler se ve que no usa nada en el apartado de "physics", voy a aislar el ejemplo de los cubos y lo subo por si tienes curiosidad por echarle un ojo. ;-)
 
Aquí te pongo el ejemplo (perdón por las chorradas que puedas ver dentro, todavía no controlo bien el unity) ;-)
 
Gracias de antemano :)
 
//www.unityspain.com/applications/core/interface/file/attachment.php?id=10082">Javi_prueba3D.zip

Etiquetas: