Project1 – Eligiendo el sistema base

Comenzamos este ciclo con una breve descripción del hardware y software que elegimos para el desarrollo…

Hardware:
Placa de video

Algo en lo que siempre nos tenemos que fijar a la hora de elegir el hardware para desarrollo, es la compatibilidad con los estándares que vamos a utilizar. En cuanto a soporte de OpenGL, tenemos un video excelente de la gente de Valve

Pueden también descargar el PDF de la presentación para verlo mas en detalle. Sin profundizarnos mucho en el tema, lo importante seria elegir una placa de video adecuada para poder usar todas las extensiones de OpenGl necesarias. Podremos notar que en uno de los slider hay una comparación aproximada que dice:

Para DirectX 9 usemos OpenGL 2
Para DirectX 10 usemos OpenGL 3
Para DirectX 11 usemos OpenGL 4

Los que saben del tema recomiendan usar mínimo OpenGL 3.3, es algo que tenemos en placas de video modernas, pero no dentro de las integradas de hace algunas generaciones atrás (VIA, SIS, S3, Nvidia 2 y 4, algunas Intel). Lo ideal seria tener la placa mas moderna que podamos, pero no necesariamente de las mas caras del mercado, para saber que versión de OpenGL soporta cada placa AMD/ATI podemos ver los detalles o un resumen:

ATI/AMD X1xxx y anteriores – hasta OpenGL 2.0
ATI/AMD HD 2xxx – OpenGL 3.3
ATI/AMD HD 5xxx – OpenGL 4.1
ATI/AMD HD 7xxx – OpenGL 4.2
ATI/AMD HD 7790 – OpenGL 4.3

Hay algunas excepciones para NVIDIA que pueden ver en la lista completa, pero a grandes rasgos el soporte para los chip de esta empresa puede ser resumido así:

GeForce 6 Series y anteriores – hasta OpenGL 2.1
GeForce 8 Series – OpenGL 3.3
GeForce 400 Series – OpenGL 4.1
GeForce 600 Series – OpenGL 4.3

Con placas de video integradas de Intel hay que tener mucho cuidado, por lo general tienen un soporte parcial de lo que ofrecen en papel, sobre todo en sistemas operativos como LinuX o MacOS, los drivers no son tan pulidos y tienen un rendimiento muy pobre. Afortunadamente tenemos una lista completa de sus características para guiarnos.

Últimamente Intel hace avances importantes en cuanto a sus procesadores gráficos integrados pero aun les falta para estar a nivel de AMD/ATI o NVIDIA que llevan años perfeccionando sus chip y drivers.

Acerca de las placas profesionales (FireGL y Quadro/Tesla) puedo decir únicamente que si las usan es porque tienen plata para adquirir una o bien tienen idea de lo que hacen…y tienen plata para adquirir una 🙂
Hay pocos recursos donde se explica cual es la diferencia con placas de video gamer, haciendo algunas pruebas podemos concluir que en realidad la ventaja principal es que el manejo de objetos 3D en wireframe se hace mas rápido pero al mismo tiempo sacrificamos el rendimiento en los demás modos. Claro que si tenemos una placa gamer de las ultimas, también la podemos emplear, pero estaríamos mal gastando su potencia ya que puede consumir cientos de watts, cuando una placa de tipo profesional haría el mismo trabajo o aun mas con tan solo 30-60 watts, lógicamente disipando menos calor, haciendo menos ruido, etc.
Si realmente sienten que el tema va en serio y les gusta todo lo relacionado a diseño 3D, les recomiendo comenzar por algo como Quadro 600 que es una placa excelente por un buen precio. Ofrece el OpenGL 4.1 en low-profile y un consumo mínimo de energía junto con un ruido bajo y velocidad muy aceptable. Claro este modelo se va actualizando y hoy en día ya existe la K600 que trae soporte para OpenGL 4.3 y otras mejoras a un precio similar (ambas rondan los 200 dolares al momento de su lanzamiento). Siempre es bueno consultar con este enlace antes de comprar, así sabemos si el software que usamos sera compatible. Por ejemplo Octane necesita una placa Nvidia con “Compute Capability” 2.0+, para funcionar correctamente en su ultima versión.
Con respecto a las placas de notebook es exactamente lo mismo: mas nueva sera mejor, si es de tipo profesional: aun mas. Siempre cuidando la cartera de la dama y el bolsillo del caballero ya que una compra exagerada nos puede doler mas si no logramos sacarle provecho por falta de tiempo, talento o desconocimiento.

Con esto concluimos lo que seria la parte relevante en cuanto a los gráficos, siempre tratemos de usar controladores oficiales y actualizados para no encontrarnos con sorpresas mas tarde. Probar el producto en varias placas de video de diferentes fabricantes nos evitara inconvenientes aun mas desagradables a la hora de comenzar con las pruebas “en linea”.

Hardware:
CPU
Históricamente no han habido grandes problemas de incompatibilidad con software desarrollado para Intel/AMD, hablando claro de arquitecturas x86/x64. No creo que hoy en día haga falta realizar alguna optimizacion o ajuste en particular pero siempre es bueno tener en cuenta que SSE es algo en lo que lleva la delantera Intel y AMD siempre trae un juego de extensiones mas atrasado por lo que debemos tener cuidado con su uso en nuestro código.

Hardware:
Sonido
Hoy en día es una buena idea hacer uso de OpenAL, es lo mas compatible y robusto que consiguiéremos para programar audio. Adjunto el enlace en Ingles ya que así tienen algunas pistas de los forks que tiene (la versión oficial no tiene mas actualizaciones).

Software:
Sistema Operativo
Es un debate que puede llevar buen rato, pero para desarrollar en multiplataforma podemos usar cualquier producto, ya sea Windows/MacOS/Linux u otro si lo sabemos manejar en profundidad. Si nunca desarrollamos nada y necesitamos comenzar, Ubuntu es una buena opción. Si en cambio tenemos una experiencia mas amplia con los *nix, podemos elegir cualquier otra distribución. En nuestro caso la decisión se basa mas bien en la experiencia, Debian que hace tan solo unos días ha hecho estable su versión 7 es un sistema multiproposito que emplearemos para lograr nuestro objetivo. Nos gusta el control y la estabilidad que ofrece, aparte de no costar nada de dinero es mas que suficiente para llevar a cabo un desarrollo profesional…o aprender 🙂

Dentro de software para versionado tenemos como siempre mas de una opción, en este momento los principales son GIT y SVN. En pocas palabras GIT es mas moderno y ofrece la posibilidad de crear ramas que serian versiones diferentes de un mismo software, por ejemplo una rama por cada desarrollador. Es usado para controlar el avance del núcleo Linux entre otros grandes proyectos por lo que es imposible decir que es malo. Lo que si, no ofrece muchas ventajas si se trata de algo que es como las vías del tren, solo sigue un camino. Para esto ultimo es mas simple basarse en SVN que ha estado ahí por muchos años y es realmente sencillo para poner en producción.
El día que necesiten graficar el avance del proyecto basado en SVN, se van a dar cuenta que es mas … a lo web 1.0, ya que StatSVN no se actualiza hace tiempo y no hay nuevas herramientas. Posiblemente en el caso de SVN lo mejor que hay es SVNplot, que también lleva un buen tiempo inactivo. Dentro de GIT en cambio todo es simplemente hermoso por lo que si el proyecto es algo grande, es definitivamente la mejor opción.

Software:
Retoque fotografico
Hace unos días me entere que la suite de Adobe ahora es únicamente online, bueno es algo que pasa con el software cerrado nos guste o no. Si tenemos plata para pagarlo – genial, sino – usemos algo como gimp que de paso es multiplataforma y abierto.

Software:
Diseño 3D
No puedo decir nada malo acerca del 3Dstudio max, es un producto excelente aunque su desarrollo esta algo estancado como en muchos otros casos de productos grandes y propietarios, hacen falta realmente muchas horas/hombre para incorporar algo novedoso y útil al mismo tiempo. Seria al igual que en el caso de arriba, si tenemos plata para comprarlo – bien, sino – Blender que esta avanzando a una velocidad que da miedo realmente y tiene todo lo necesario para poder comenzar: multiplataforma, código abierto, es potente y cómodo de usar.
Para renderizar recomiendo el Octane que es barato y da resultados magníficos. Si nos sentimos con ganas de probar algo similar pero libre, podemos usar Luxrender. Claro que también sirve cualquier otra cosa, incluso el render embebido dentro de nuestro software de diseño 3D, pero me parece bueno mencionar estos dos ya que hacen el verdadero Trazado de rayos (raytracing) y tiene plugins tanto para Blender como para 3Dstudio max, así como también para otros productos.

Resumiendo un poco lo que comentaba acerca del software, nos conviene elegir estándares abiertos ya que:

-Una buena parte del trabajo ya esta hecha
-Nos ahorramos dolores de cabeza para realizar funciones multihardware/multiplataforma
-No necesitamos invertir demás en licencias
-Con una mayor seguridad la solución que elegimos seguirá estando ahí el día de mañana

Trato de actualizar este articulo siempre que encuentre algo para comentarles. Cualquier opinión es bienvenida como siempre.

Deja un comentario

Para proteger el blog de SPAM, le pedimos que complete la tarea:WordPress CAPTCHA