Page 1 of 1

(BORRADOR) i = 0x5f3759df - ( i >> 1 ); // Como Una Línea de Código Cambió Los Videojuegos Para Siempre

Posted: Mon Jun 19, 2023 8:14 pm
by Teacher
Todo Empezó con Un Videojuego Que Se Llama QUAKE

Has jugado o has escuchado sobre el videojuego que se llama QUAKE?
Quake-VideoJuego.jpeg
Quake-VideoJuego.jpeg (158.71 KiB) Viewed 12 times
[/size]


El Fondo
Para un videojouego como QUAKE, hace falta mucho código.  Especialmente porque es de 3 Dimensiones.  Pero por qué?  Porque hay que calcular trillones de veces cada segundo la distancia entre cada superficie, algo que está constantemente cambiando...
3dvectors.png
3dvectors.png (86.24 KiB) Viewed 12 times
Para calcular distancia en 3D, se usa 

Cómo sería posible entonces jugar algo así en un computador normal, especialmente uno hace X años?[/size]

La Solución?


Empezamos:
Por qué Las Raices Cuadradas Son Importantes?
  • Distancias!
    • Con el Teorema de Pitagoras, se puede calcular distancias entre dos puntos
    • lado[sup]2[/sup] + lado[sup]2[/sup] = distancia[sup]2[/sup]
      • Tomando la raíz cuadrado le da la distancia
      • Imagen3
      • Funciona para 2 Dimensiones...
      • DistancePythagorean.png
        DistancePythagorean.png (10.14 KiB) Viewed 12 times
        [/size]
Inverso del Raíz Cuadrado (1/√x) - Distancia en 3 Dimensiones!
  • En videojuegos como Quake, queremos algo en 3 Dimensiones
  • Hay que calcular un vector y 'normalizarlos' para poder calcularlos
  • Eso se hace con el inverso del raíz cuadrado
Vector
Vector
vectors.png (8.5 KiB) Viewed 12 times
Un vector es como una flecha, con dirección y magnitud.[/size]
El vector de un papel 2D encima de una mesa sería apuntando hacia arriba.
[Imagen4]


Ej: √4 = 2, su inverso es 1/√4 o 1/2


Para calcular eso, hay que usar dos operaciones, exponenciación (para raíz cuadrada es x[sup]1/2[/sup] ) y división.  Haciendo eso trillones y trillones de veces sería demasiado para hasta el computador más potente del mundo.  Hace falta un algoritmo que le hace MUCHO más rápido...