Las GPU modernas tienen la capacidad de ser programadas para el cálculo de propósito general a través de los idiomas / kits de herramientas de GPGPU, como OpenCL, CUDA, OpenACC, etc.
Los desarrolladores pueden utilizar estas herramientas para escribir cualquier motor de juego que deseen con soporte de hardware adicional. Por ejemplo, NVidia ofrece su kit de herramientas PhysX para usar la GPU para acelerar los cálculos de tipo físico.
Sin embargo, el uso efectivo de estas herramientas desarrolladas previamente puede ser relativamente complicado, y escribir las suyas es, al menos, un orden de magnitud más difícil.
Requerir algo especializado para un juego en particular (o grupo de juegos) significará:
- La GPU debe tener varios bloques pequeños para cada función especial, lo que significa que el espacio del troquel aumenta dramáticamente. Esto aumenta los costos, e incluso puede hacer que la producción de un chip no sea viable.
- Un juego solo se ejecutará en un conjunto limitado de hardware porque está especializado. ¿Debería esperarse que un usuario posea 10 GPU diferentes para jugar 10 juegos diferentes?
- Solucionar errores será prácticamente imposible.
La comunidad de GPU ya ha pasado por algo similar en el pasado:
OpenGL 1/2 y las versiones antiguas de DirectX se utilizan para incluir llamadas a funciones especiales que dibujarían un polígono, manipularían una cámara y realizarían luces / sombras realmente básicas. Algunos hardware incluso tenían aceleración especial para estas funciones. ¿Por qué fueron desaprobados? Debido a que limitaron drásticamente lo que podías hacer, y si querías hacer algo fuera del conjunto limitado de funciones, no tenías suerte o tenías un código horrible y de mal rendimiento.
De este modo, avanzaron hacia la programación basada en sombreado, lo que significaba que el desarrollador era responsable de escribir cómo se sombreaba un polígono, cómo funcionaban las sombras e incluso cómo manejar las proyecciones de la cámara. Ya no tenía que preocuparse por "¿la GPU tiene un sombreado Phong o un sombreador Oren-Nayar?". Puede escribir su propio para ejecutar (o copiar / pegar uno existente) en el hardware general de la GPU y saber que funciona * en múltiples plataformas.
TL; DR: el hardware especializado es demasiado complejo y costoso de hacer en general, de ahí que se llame "especializado".
anexo:
Las tarjetas de video profesionales TIENEN hardware especializado para ejecutar programas profesionales como CAD. Sin embargo, si miras la lista de estos programas, solo hay un puñado, y todos hacen lo mismo. Entonces, ¿cuánto cuestan estas tarjetas "profesionales"? Un orden de magnitud más. Es cierto que parte de este costo se debe a que los usuarios profesionales se preocupan por la confiabilidad, menores volúmenes de ventas y porque los fabricantes de GPU saben que pueden salirse con la suya con un precio más alto, pero no esperaría precios muy diferentes para hardware especializado para una pocos juegos.