Entradas

Sistema de partículas con geometry shader

Imagen
  Esta escena, al igual que en anteriores ocasiones, se realizó con OpenGl en Golang (Go) y es una continuación de la escena anterior. En esta ocasión se implementó un sistema de partículas el cual usa un pipeline propio con geometry shaders para lograr dibujar dichas partículas. Para lograr el resultado visto fue primero necesario lograr dibujar correctamente las partículas. Para esto se modificaron los shaders presentados en el tutorial de geometry shaders de  learnopengl.com . Siguiendo este tutorial es posible obtener el siguiente resultado, proporcionando solo 4 puntos (ubicaciones bidimensionales) con sus respectivos colores el geometry shader es capaz de dibujar una figura semejante a una casa en cada uno de dichos puntos. Tomando esto como base, se realizaron los cambios necesarios para que dadas ubicaciones tridimensionales y una textura como la que se muestra a continuación, el geometry shader fuera capaz de crear una figura simple de 4 vértices con dicha textura en ...

Escena interactiva con luces y texturas

Imagen
  Esta escena, al igual que en anteriores ocasiones, se realizó con OpenGl en Golang (Go). Ya que el principal característico de esta escena son las luces y las texturas, fue necesario rehacer todas las geometrías con las se contaba anteriormente, ya que estás solo contenían la información de los vértices, mientras que en esta ocasión se requería de la información de las coordenadas de las texturas para cada vértice para así poder mapear la textura a la geometría, además de la información de las normales para cada vértice, para así poder implantar el efecto de luz. Mucho del trabajo realizado fue en los fragment y vertex shader, con esto se logró implementar varios efectos tanto para texturas como para luces. En cuanto a las texturas, se puede observar en la escena que se dio la posibilidad de tener cero, una o hasta dos texturas por geometría, este último caso se puede ver en el piso, donde además de una textura de nieve, se combina con una textura de camino de piedra. En cuanto a...

Historia procedimental

Imagen
Esta corta animación es una continuación de la anterior escena realizada con OpenGL en Golang. Para esta se creó una nueva forma "Cápsula" de la misma forma en que se han creado todas las anteriores. Esta se crea de forma procedural, recibiendo como entradas la altura y los radios inferior y superior. Esta nueva forma se usó para el cuerpo y brazos de la persona que se puede ver en la animación. Por comodidad se trasladaron todas estas funciones de creación de vértices, junto a algunas funcionalidades de creación e inicialización de la ventana, a una librería externa, se puede visitar aquí . Para el control de las distintas animaciones que se observan en el video, se crearon dos listas, en las que se guardaron los tiempos de duración, en segundos, de cada animación y las funciones que generan cada animación con respecto al momento en el tiempo dado. Para que estos tiempos pudieran ser medidos en segundos y que fueran independientes de la velocidad del loop principal, se dio u...

Escena procedimental propia y compleja

Imagen
Esta escena fue realizada con OpenGL, haciendo uso de golang. Cada uno de los objetos que se ven en esta escena, como los troncos, hojas o cada una de las partes que componen el pozo, fueron creados a partir de primitivas como 'tringle strips' o 'triangle fans'.  Se usó la librería GLFW para el manejo de la ventana y se hicieron uso de algunos shaders simples, para así permitir el uso de cámara, perspectiva y colores Los árboles, la fuente y la luna se componen de figuras geométricas sencillas, como cilindros, cubos, esferas. Sin embargo, como se mencionó anteriormente las únicas primitivas usadas fueron  'triangle strips' y 'triangle fans', por lo que cada una de estas figuras tuvieron que ser construidas individualmente con funciones propias.   El cilindro por ejemplo se compone de tres primitivas, dos círculos para las tapas, hechas con un 'triangle fan' y la cara exterior hecha con 'triangle strip'. Estos cilindros luego son trasladad...