¿Por qué estudiar computación gráfica a bajo nivel si ya casi todo está implementado?

¡Qué excelente pregunta! Ojalá algunos de mis alumnos hubieran preguntado esto más a menudo. Recuerdo haber hecho esta pregunta TODO EL TIEMPO para disgusto de mi entonces facultad.

Sin embargo, me aseguré de tener la respuesta a esta pregunta en caso de que alguien preguntara mientras yo enseñaba. Así es como debe verlo (elija cualquiera que le resulte atractivo):

  1. Usted es ingeniero: el trabajo de una escuela no es capacitarlo para usar las herramientas de manera simple, es comprender exactamente cómo se construyen las herramientas y por qué son útiles. Es como estudiar ingeniería automotriz pero sin saber cómo funciona el motor, debajo del capó. Literalmente. No se trata de aprender a conducir el automóvil, sino también de saber cómo está diseñado, cómo funciona y por qué algunos diseños son mejores que otros. Es posible que su trabajo no sea realmente “construir” motores, y puede que nunca modifique el diseño del motor directamente, pero solo “saber” cómo funciona, ofrece una claridad mental extrema y, en caso de que lo necesite, puede cambiarlo. Tienes la comprensión necesaria para hacerlo.
  2. Comprensión de los bloques de construcción primitivos: si nunca aprende números, ¿sería bueno en aritmética? ¿Serías capaz de entender realmente la gramática y la estructura de las oraciones, sin conocer el ABC? Cuando comienzas a leer literatura o trabajar con matemáticas avanzadas, no te das cuenta de los elementos básicos primitivos que atravesaste para llegar a ese nivel. Lo mismo con los gráficos: los temas anteriores le dicen cómo funcionan las cosas bajo el capó y pueden verse como bloques de construcción primitivos. Cuando use herramientas como Maya, ZBrush, etc., sabrá intuitivamente cómo funcionan estas cosas y tendrá una comprensión mucho más sólida de las cosas en lugar de ser un robot puramente mecánico que solo sabe qué / cómo pero no por qué. Desea un ejemplo: Lea sobre el bloqueo de cardán: qué es y por qué los cuaterniones son mejores y preferidos a veces. Ahí es cuando te darás cuenta de por qué algunas cosas funcionan como lo hacen.
  3. Comprender el papel de las matemáticas en los gráficos por computadora: El objetivo principal de los gráficos por computadora es literalmente graficar el mundo (en términos generales). Desea de alguna manera hacer que el mundo sea lo más realista posible. Pero, ¿cómo le dices a una computadora que lo haga? Las computadoras son excelentes para el cálculo numérico, por lo que puede crear un modelo del mundo y “codificarlo” en la máquina. De alguna manera capturas cómo funciona el mundo y le dices a la computadora que lo haga. Esto es algo avanzado. Necesitas matematicas. Período. ¿Cómo puedes hacer que una “rueda” gire alrededor de su eje 10 veces? (O un círculo centrado en el origen). Adivina qué, solo entender esto requiere comprender cómo se hacen las transformaciones y cómo las matrices se ajustan a la ecuación. Ahora, cuando aprenda esto, se sorprenderá (con suerte) del papel de las matemáticas en los gráficos y comenzará a ver cómo puede hacer cosas avanzadas como generar agua, fumar o derramar 1000 tic-tacs y ver cómo se propagan, etc., es todo matemática de trivial a avanzada a misteriosa y espeluznante. ¡Si nunca hubieras aprendido cómo hacer esas malditas transformaciones, nunca hubieras sabido lo complicadas que son algunas cosas!
  4. Eres un aspirante a diseñador de juegos o investigador de gráficos: solo si realmente entiendes el tema y estás dispuesto a jugar con él, lo perseguirás profundamente. Si realmente te apasionan los gráficos por computadora en general y te gustaría “profundizar” más, mejor aprende el ABC del CG para que algún día puedas aprender a escribir buenas oraciones y tal vez crear un libro maravilloso del que la gente simplemente babee !

¿Necesitar más? 🙂

Bienvenido al mundo de CG y si te hace cosquillas, no dudes en enviarme un ping en cualquier momento. Si está dispuesto, puedo proporcionarle la chispa necesaria para encender su fuego (gráfico) 🙂

¡La mejor de las suertes!

Cuando era adolescente, hice un rasterizador de polígonos en Pascal. Fue inmensamente divertido y aprendí muchísimo con respecto a la programación, los gráficos y las matemáticas. De modo que en sí mismo debería ser razón suficiente.

Pero con la ubicuidad de las tarjetas gráficas, nadie tiene que rasterizar un polígono nunca más, ¿verdad?

Incorrecto. Muchos juegos usan la rasterización de polígonos para realizar el sacrificio de oclusión de software.

También aprendí a dibujar líneas muy rápido con el Algoritmo de dibujo de líneas de Bresenham modificado.

Nuevamente, la rasterización de línea antialias es un problema resuelto. Pero a menudo lo uso para cosas como muestrear celdas de subdivisión espacial uniformes para acelerar el trazado de rayos o la detección rápida de colisiones en los juegos.

También he creado mis propias clases de vectores, matrices y cuaterniones, y me ayudó enormemente a comprenderlas matemáticamente.

El punto es que estas viejas técnicas son tan fundamentales como el álgebra booleana. Son habilidades útiles para tener, en el pasado, el presente y, sin duda, el futuro.

No tienes que estudiarlos. Pero ciertamente no lo lastimarán y le brindarán una visión mucho más profunda de muchas áreas y herramientas útiles para usar en muchos lugares sorprendentes.

El Sr. Nupul Kukreja y el Sr. Dale Thomas le han respondido de maneras muy informativas e inspiradas: una centrada en el dominio del aprendizaje y la otra mostró ofertas reales que puede encontrar.

Por supuesto, estoy totalmente de acuerdo con ellos, pero permítame responderle de alguna manera, recordando una pequeña discusión en “Jurassic Park”: la novela (quiero decir, no la película, en caso de que aún no haya leído el libro) )

En esa interesante discusión, un matemático llamado Ian Malcolm explicó por qué el proyecto de Jurassic Park no continuaría sin problemas, incluso cuando no pudo señalar cómo iría mal en el momento en que dijo. Su base principal era la “Teoría del Caos” (o más familiar: el “efecto Mariposa”), que describe cuán mal podría la física manejar algo como la predicción del clima, la observación del flujo de líquidos, …

Y además de eso, Malcolm incluso declaró el error más grave de estudiar ciencias, cuando los nuevos científicos simplemente usan (o construyen cosas nuevas) los viejos, los ” bloques primitivos ” (como en la respuesta del Sr. Nupul) a veces sin saber mucho Sobre esos bloques. Por “saber”, me refiero a “saber científicamente”, lo que se puede tomar como “comprender profundamente”.

Cuando leí la novela por primera vez, la tomo como estos 2 medios:

1. Ciencia significa: antes de reutilizar algo, asegúrese de entenderlo lo suficiente. Y la mejor manera de archivar eso es intentar reinventarlo, o al menos, reinventar su núcleo .

2. La forma de vida significa: solo puedes usar algo de la manera correcta cuando es tuyo. Si no es así, primero debes hacerlo realmente tuyo, no robando, no por atajo, sino por tu propio esfuerzo.

El segundo es especialmente importante para mí, ya que estoy estudiando Karate y puedo ser considerado un estudiante entrenado. Me alegré al leer la siguiente discusión sobre Malcolm y Hammond (dueño del Parque Jurásico) después de que las cosas realmente salieron mal :

Malcolm: Un maestro de Karate no mata a las personas con sus propias manos. No pierde los estribos y mata a su esposa. La persona que mata es la persona que no tiene disciplina, ni restricción, y que ha adquirido su poder en la forma de un sábado por la noche especial y es por eso que piensas que construir un lugar como este es simple.

Hammond: Fue simple.

Malcolm : Entonces, ¿por qué salió mal? “

Hm … Es solo mi experimento personal y quizás no sea tan atractivo para ti, pero espero que te sea útil de alguna manera. A veces, encontramos lo que nos falta en los demás, ¿no? : “)

Debido a que se encontrará con la situación en la que necesita implementar una función que el motor que debe utilizar no es compatible. También se encontrará con la situación en la que no puede usar un motor, por ejemplo, porque la plataforma que se espera que use simplemente no tiene un motor adecuado ya implementado. Entonces tendrá que implementar sus funciones usted mismo, lo que no puede hacer si no comprende los conceptos básicos.

Además, siempre es útil comprender en detalle qué hace realmente un motor. Los motores pueden tener errores y es posible que tenga que averiguar cómo solucionar los errores. También hace que el uso del motor sea más fácil si comprende lo que está haciendo exactamente.

Sin entenderlo a bajo nivel, es poco probable que conozca el costo del cálculo y cómo lidiar con él. Todavía no hemos llegado al punto de que los programadores puedan descuidar completamente la cantidad de CPU que necesitamos para la tarea.

En el mundo de la informática moderna, es bastante fácil hacer algo mal y hacer algo. Por ejemplo, realizar una consulta de base de datos subóptima y luego no pudo pasar la prueba de carga o hacer que el servidor se sobrecargue en el sistema de producción. Para optimizar una consulta, especialmente una compleja, deberá comprender cómo funciona el motor de base de datos.

Lo mismo ocurre con los motores gráficos. Podrían hacer su trabajo, hasta el punto hasta que algo salga mal, por ejemplo, cuando es lento. ¿Cómo lo haces más rápido? Si no tienes idea de cómo funciona el motor, solo confías en tu suerte.

Puede recordar lo que hizo antes y deshacer eso. De acuerdo, problema solucionado, pero si es necesario para el proyecto, entonces no es una opción. Usted sabe que la CPU está sobrecargada, pero a menos que sepa cómo funciona en el fondo, no es fácil lidiar con ella.