9.4.4 ¿POV-Ray soporta 3DNow?
No, y seguramente nunca lo soportará.
Existen varias buenas razones para ello:
- 3DNow usa números de precisión simple, mientras que POV-Ray
necesita (si, los necesita) números de precisión doble. La precisión
simple no es suficiente (este punto se ha probado en la práctica). Para
entender mejor la diferencia entre numeros de simple y doble precision,
imagina que puedes representar valores entre 0 y 1000 con numeros de
precision simple. Con precision doble no obtienes una escala de 0 a
2000 (como podria pensarse), sino de 0 1000000. La diferencia es enorme.
- Añadir soporte para 3DNow (o cualquier otra característica
específica de un tipo concreto de CPU) haría que POV-Ray no fuera
portable, haciendole dependiente de una plataforma. Por supuesto que
uno puede hacer un ejecutable separado para AMD que soporte 3DNow, pero
solo hay dos maneras de hacerlo:
- Compilando POV-Ray con un compilador que genere
automáticamente código 3DNow a partir del código C. Por lo que yo sé,
no existe un compilador que convierta los cálculos de doble precisión
usados por POV-Ray en cálculos de precisión simple para 3DNow. Ni
siquiera sé si existen compiladores que soporten 3DNow.
- Cambiar el código fuente a mano para usar instrucciones
3DNow. Esto supondría un montón de trabajo, especialmente porque
deberías usar código ensamblador en linea. El código fuente de POV-Ray
no es precisamente pequeño... ¿realmente valdria la pena?
Nota: Existen unos pocos cálculos en POV-Ray que usan precisión
simple (como la gestión del color), y ahí podría realizarse
alguna optimización sin que se degrade la calidad de imagen.