Hasta ahora os hemos hablado del Ray Tracing aplicado a gráficos pero no aplicado a audio. En este artículo os comentaremos en que consiste y que diferencias y similitudes tiene con sus variantes gráficas, así como lo que puede aportar en los videojuegos que reproducimos en nuestros PCs.
Una de las cosas que más se venden en cuanto a tecnología es el llamado sonido tridimensional, el cual se basa en posicionar los sonidos que se producen en la escena según la posición del espectador o jugador, pero siempre teniendo en cuenta un sistema de altavoces físico.
La idea del Ray Tracing aplicado al audio es bien simple, utilizar el algoritmo del trazado de rayos no para conocer la trayectoria de los fotones de luz sino de todas las ondas de sonido en un entorno y la forma en la que llegan al espectador. Todo ello de una manera mucho más precisa y menos limitada que los sistemas de altavoces utilizados en el cine.
Ray Tracing audio: ondas de sonido en vez de fotones
El Ray Tracing Audio sigue el mismo principios que su variante para gráficos, pero en vez de representar el viaje de los fotones en una escena se utiliza el mismo algoritmo y principio para representar el viaje de las ondas sonoras en un entorno.
Por lo que hablamos de representar como viaja el sonido en un espacio tridimensional y podemos utilizar el mismo modelo que con el trazado de rayos que representa el viaje de la luz en un espacio tridimensional pero con el sonido.
- Al igual que con la luz podemos asignarle al sonido una energía, la diferencia con la luz es que la energía en este caso se pierde con la distancia.
- Podemos asignar el shader de generación de rayos (reflejos, sombras) para que genere también rayos de audio.
- Al igual que con los rayos para gráficos, los rayos para audio pueden rebotar y comportarse de una manera u otra según la naturaleza de los objetos con los que interacciona.
El último punto es importante, ya que cuando una onda de sonido deja un medio para entrar en otro, como por ejemplo cuando un sonido rebota contra un muro, la onda de sonido cambia. Una porción de la misma intentará atravesar el medio mientras que otra se verá rebotada por el objeto y este proceso variará según el tipo de material con el que interactúe.
No todas las ondas de sonido son importantes
Lo que nos interesa en el caso del Ray Tracing Audio es solo aquello que el jugador puede escuchar en la escena, todo rayo que por estar lejano o no llegar al área de influencia del jugador sería descartado.
No tiene sentido moverse en medio de una cacofonía de sonido que enloquecería por completo al jugador y destruiría por completo la inmersión en el juego.
La mejor manera es que la GPU simplemente calcule la trayectoria desde la fuente original hasta la posición del jugador en la escena. Al contrario de su variante gráfica no hablaríamos de generar nuevas ondas en la escena por un rebote sino la distribución de la misma que dependería de la energía de la misma, la cual se traduciría en la intensidad con la que oímos dicho sonido, si la intensidad es demasiado baja entonces se descarta.
En el trazado de rayos vía gráficos hemos de tener en cuenta toda la trayectoria del fotón y como va “pintando” la escena que recorre combinando sus colores con los ya existentes, en el caso del trazado de rayos vía audio solo tenemos que tener en cuenta el final de la trayectoria del sonido y si este afecta al jugador o no.
Esto implica en que cuando el rayo de audio pasará por una parte de la escena lejana al jugador no se generaría el audio sino que se continuaría y solamente se procesaría el sonido que ocurriría en un área cercana al jugador
GPUs para el Ray Tracing Audio
En primer lugar vamos a necesitar una GPU para calcular la trayectoria de las ondas de sonido, por lo que su uso afecta por completo al rendimiento de la tarjeta gráfica, ya que estamos utilizando el hardware especializado de esta para calcular la intersección de los rayos con los objetos para crear un nuevo tipo de rayo pero con la diferencia que no manipularía los valores de color de un objeto o grupo de objetos sino que lo que haría sería manipular el audio de la escena.
El problema es que esto supondría que las pistas de audio se deberían procesar vía programas shader, lo que supone que las pistas de audio con las que tendrían que trabajar serían extremadamente pequeñas y por tanto deberían perder detalle y resolución si se ejecutaran desde las Compute Units ya que estas disponen de muy pocos Kilobytes.
Las pistas de audio son cargadas como texturas, hay que tener en cuenta que el sistema de caches de una GPU no carga una textura enorme, pero si carga una pista de audio va a necesitar al menos hardware integrado lo suficientemente rápido para descomprimir pistas de audio al vuelo y por tanto podría ser un componente adicional más.
Auriculares 3D e inmersión
En el mercado hemos visto la aparición reciente de auriculares 3D cuya particularidad es que tienen integrados elementos de posicionamiento tridimensional que permiten situar al oyente en medio de una escena virtual.
Este tipo de auriculares se van a beneficiar mucho del Ray Tracing Audio, por ejemplo en un futuro juego podemos girar la cabeza, ver como nuestro personaje la gira levemente, con ello que la posición de la cámara también gire y captar los sonidos según la nueva posición de los objetos según la cámara. La idea de cara a la jugabilidad será que se acabó eso de tener un 7.1 simulado en el que se lleva la “experiencia del cine” sino que hablamos de que todos y cada uno de los sonidos en el juego estarían representados no por un sistema de altavoces virtual limitado, ya que cada uno de ellos tendrá representada su fuente de sonido en origen para una mayor precisión e inmersión en el juego.
Los cambios necesarios en el hardware actual para poder disfrutar del Ray Tracing Audio son realmente nulos y sus requisitos son mucho más bajos que a la hora de renderizar gráficos. Por lo que a la industria de los videojuegos no le va a costar nada aplicarlos, eso si, puede ser una excusa para los fabricantes de auriculares para crear y vender nuevos modelos.