Polls

Afectará la crisis a los videojuegos?
 
Inicio arrow Noticias arrow Ver Todas arrow Engine3D arrow Optimizing DirectX
Optimizing DirectX PDF Print E-mail
Written by Javier Loureiro   
Wednesday, 12 March 2008

Seguimos con charlas del GDC, que me parecen interesantes de comentar, y creo que todos aprendemos mucho con ellas.

La de hoy es una de intel sobre cómo optimizar un motor 3D usando multithreading. Un tema muy interesante (está orientado a DirectX, pero muchas cosas son aplicables en general).

 Lo primero es reconocer el coste del driver gráfico. Aunque nosotros hagamos profile de nuestro juego, el driver también gasta ciclos, y es normal que gaste muchos ciclos. Aunque nosotros no podemos optimizar el driver, si que podemos medir el impacto de nuestras llamadas. Por eso, debemos de tener casos de prueba con contenidos principales y representativos, para conocer el rendimiento general del motor en varias situaciones.

 El futuro es el multicore (incluso en las tarjetas), así que optimizar para varios threads nos dará mucho recorrido en el futuro. Pero los threads tienen un coste. Sobre todo, tenemos que testear que es lo que pasa cuando escalamos en número de cores. 

 Hay que mirar las diferencias entre modelos de driver de windows xp y vista. Vista comienza aofrecer posibilidades para multithread en el driver (aunque no está muy bien soportado todavía), pero el camino apunta a ir por ahí. En concreto, podemos leer un resumen de las capacidades de vista y su WDDM.

 Cuando comenzamos a optimizar el juego, hay que intentar librar al motor de bloqueos. Por eso es muy aconsejable el uso de listas de comandos. En vez de bloquear y mandar una operacion para actualizar la escena, metemos los comandos en una lista, y el motor los procesa cuando puede, librandose así de bloqueos innecesarios usando un patron de productor/consumidor   (obiamente, hay un sistema de flags para que todo esto pueda saltarse si un update es urgente, etc).

 En la presentacion hay varios ejemplos de threads y qué responsabilidad aplicar a cada uno.  Los gráficos son bastante ilustrativos, y es muy interesante echarles un vistazo.

 Tenemos el ejemplo del motor de namco para que veamos ejemplos de qué cosas estudiar de un motor,  cómo detectar lo que parece pérdidas de tiempo, y un resumen de las tareas de los distintos threads (incluyendo físicas, sonido, etc). Me ha gustado especialmente el gráfico de los mensajes que se envian a los threads.

 En definitiva, una charla muy buena si quereis desarrollar un motor de render, aunque sea básico, pero que escale bien con muchos cores, que será lo que ocurra en el futuro.

 

Comentarios
Añadir nuevoBuscar
Escribir comentario
Nombre:
Email:
 
Website:
Título:
Código UBB:
[b] [i] [u] [url] [quote] [code] [img] 
 
Security Image
Por favor introduce el código anti-spam que puedes leer en la imagen.

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.



menéameDigg!Del.icio.us!Google!Technorati!Yahoo!
Last Updated ( Wednesday, 12 March 2008 )
 
< Prev   Next >

Lista de Correo

visita la lista de correo de codepixel. Es una lista abierta, asi que podrás subscribirte y preguntar tus dudas de programación, compartir tus opiniones, aportar ideas, y formar parte de la comunidad codepixelera.