jueves, abril 29, 2010

Última imagen

No puedo prometer que sea la última imagen que voy a compartir sobre el proyecto (que sí, que soy un pesado, que lo sé) pero al menos es una de las que voy a usar para la defensa.

La he sacado de un proyecto de hace unos años, modificando algunos materiales y quitando dos esferas que aportan bastante poco (salvo más tiempo de renderizado).

La imagen en cuestión tardo sobre 10 horas en el quad core, sobre w7 usando los cuatro núcleos y las 4 hebras disponibles para multithreading (1 por core).




http://img156.imageshack.us/img156/3253/pgpusubir.png.

domingo, abril 11, 2010

Proyecto

Bueno el proyecto se puede decir que está terminado (está terminado, realmente estoy haciendo pequeño ajustes de algún parámetro, etc).

A continuación os voy a dejar una "guía" por si queréis descargarlo, compilarlo y usarlo, primero voy a indicar cosas que tenéis que descargaos y luego pasaremos a configurar, si existe la opción de 32 y 64 bits debéis descargar la versión de 32 bits, no está configurado ni preparado el código para 64 bits.

1º Descárgate FreeImage, instalala.
2º Descárgate MPICH2 e instálalo.
3º Descárgate OpenEXR version 1.4 (el código) y descomprímelo en una carpeta.
4º Descárgate pthreads for windows, ejecutad el .exe y descomprimirlo en una carpeta.
5º Descárgate zlib.

Necesitamos un entorno de desarrollo para compilar el proyecto, yo uso visual studio 2008 express edition, puede ser descargada de aquí. Una vez descargada e instalada podemos continuar.

Lo siguiente es conseguir un cliente svn para acceder al código fuente del proyecto, yo uso tortoiseSVN. Lo instalamos, creamos una carpeta donde queramos y obtenemos el código del siguiente enlace:

svn co https://pmrune.svn.sourceforge.net/svnroot/pmrune pmrune

Con tortoiseSVN picamos en la carpeta con el botón derecho del ratón y seleccionamos la opción de checkout e introducimos la siguiente secuencia:

https://pmrune.svn.sourceforge.net/svnroot/pmrune

Con esto conseguimos el código del proyecto.

Debido a una versión antigua que usaba flex/bison para el parser de ficheros (lo descarte por la comunicación en linea de los ficheros comprimidos y mapeo en memoria virtual del contenido de los mismos haciendo un parser personalizado) hay un pequeño "problema" con el proyecto de visual studio, necesitamos copiar el fichero FlexBison.rules en C:\MSDN\Sample\VC++\vccustombr.

Ahora vamos por partes:

- Tenemos que configurar la visual studio para que TODAS las librerias que son necesarias para el proyecto sean encontradas, para ello vamos a Tools > Options > Project and Solutions > VC++ Directories. Una vez aquí con Win32 en Platform seleccionamos en Show directories for, la opcion Include Files y ahí creamos las necesarias para OpenEXR, Zlib, MPICH, Pthread y FreeImage, que apunten a los direcotios con sus .h. Hacemos igual con las librerias (aquí probablemente no podamos con OpenEXR pq no la hemos compilado pero lo haremos justo después)

- Tenemos que compilar OpenEXR para ello abrimos la solución que tiene el fichero (es para VS 2005, así que la convertimos a 2008, no pasa nada), y generamos la Releease y la Debug. Una vez tengamos los .lib y .dll hacemos la referencia dentro de la visual a su carpeta. (esta versión no necesita dll, si hacemos con dll tendremos que copiarlas, ver el siguiente punto)

- Con las dll pasa algo raro (por eso no lo he comentado hasta ahora), en windows xp no tengo problema, las copio todas a windows/system32 y va de lujo, pero en w7 tengo que tener una copia de todas las dll necesarias del proyecto en las carpetas de los ejecutables, debería ser FreeImage.dll, pthreadVCE2.dll y zlib1.dll ya que OpenEXR se linkea de manera estática y mpich también (si da fallos mpich con la dll copiala a windows/system32).

- Ahora tenemos que configurar MPICH2, esta parte es más "difusa" pq siempre he conseguido hacerlo correr, pero siempre da problemas, pero por ejemplo en xp no necesito tener en 2º plano el smpd ya que lo ha registrado como servicio en cambio en w7 lo "registro" y me dice que si, pero no lo deja instalado. Si alguno se anima a tratar de instalar el proyecto y quiere intentarlo estaré encantado de "indagar" más en este punto.

Tras esto ya deberías ser capaz de compilar y ejecutar el RuneRay.

En otra entrada pondré el formato de fichero, como ejecutarlo etc (subiré una versión que no pieda mpich, que aunque tarde mucho, pero mucho más en ejecutarse sigue pintando).

Pongo dos imágenes que he sacado tras ensayo y error: