• home
  • About
  • VFX
  • Digital Art
  • Projects
  • Resume
  • Contact me
Menu

Ethan L. Lupinski

  • home
  • About
  • VFX
  • Digital Art
  • Projects
  • Resume
  • Contact me
A model a experimented with in the early stages. I fondly called it a pile of brown rice.

A model a experimented with in the early stages. I fondly called it a pile of brown rice.

Vulkan Project

December 29, 2018

My university runs a 3D game development course once a year. It originally was taught using OpenGL, but my professor had decided to switch the curriculum to focus on using the Vulkan API during the Fall 2018 semester. My class was the first to take the revised version of the course. Professor Kehoe had offered a C based seed project for us to get started with, but I had a lot of issues getting his project to build and run on my machine. After a week of failed attempts, I decided to build my project from the ground up in C++. I followed the vulkan-tutorial site for guidance throughout the semester. I considered my Vulkan project to be as more of an experimental playground for myself. It was a way of trying to learn C++ on my own, so I decided to throw shaders into the mix as well. My primary experience with shaders had been only within Unity prior to this class. Unity combined the fragment and vertex shaders into a single file, so I never had the experience of working with as separate files. My GLSL experience was very limited as well prior to this class, so the experience to finally experiment was exciting to me.

Once the basic template of the project was complete, and was able to support up to two 3D models at any given time, I got to work on the shaders. I started with a plain vertex and fragment shader to ensure that the graphics pipeline was functional. I didn’t do anything special besides applying a RGB gradient across the available surface so it would be immediately obvious. whether the shaders were working properly and going through the pipeline.

Once I was sure that the vertex and fragment shaders were functioning, I got to work on writing a geometry shader. I had never written one and I wanted to push myself out of my comfort zone. A shader module would have to be created for each shader file I planned to use and then prep shader files to be used in the graphics pipeline. I also learned about how strict ordering could be for the shader stages. I initially put the geometry shader at the end of the shaderStages array and found that my geometry shader was not being fed into the pipeline. I had also made the mistake of not increasing the size of the shaderStages array and found my executable crashing as a result.


Snippet of the createGraphicsPipeline() function in regards to the shader stages.


Once I straightened out my mistakes in the pipeline, I ran into some issues writing the geometry shader. It was a mixture of some GLSL functions not playing nice in Vulkan or simply inexperience with GLSL. I ended up writing a basic geometry shader where it would find the model’s vertices, then draw lines from each vertex to the origin point of the model. I utilized a dog model (made by my professor) as the testing dummy . The house model was only being used to verify that the entity system as capable of supporting multiple entities. In my opinion, it was pretty fun watching the model get reduced into
spaghetti.

merchdog.jpg
vulkan__.jpg
vulkan1.jpg
merchdog.jpg vulkan__.jpg vulkan1.jpg

I included user input options to allow the user to move the model around and distort it. The user had the ability to alter the rotation angle, zoom in/out, and stretch the model along the x, y, and z axes. I had also included a sound manager to play background music (mostly for my own entertainment).

I had difficulties pushing to my initial GitHub repository due to some mistakes I made with my .gitignore file, so I had to push the final solution to a new repository. Although this was a minor issue, the repository containing the final changes to the project does not reflect the progress and changes between commits. The final result was not impressive whatsoever, but this class project inspired me to spend my free time learning GLSL. I really hope to revisit Vulkan once I have a better understanding of GLSL.


GitHub repository

← Imagination Heights StoryBook AR →

Latest Posts

Featured
Time Tails
August 21, 2021
Time Tails
August 21, 2021

Time Tails is a series of adventure games that teach players coding and game design. Change the Game! Change History!

Read more →
August 21, 2021
Android Mobile Portflio
November 3, 2020
Android Mobile Portflio
November 3, 2020

A mobile portfolio I am working on to showcase my visual effects work while on the go.

Read more →
November 3, 2020
Percussive Repairs
February 10, 2020
Percussive Repairs
February 10, 2020

Hit things until they're fixed! Because that's how being a mechanic works...right? 2D arcade-style multiplayer game about repairing (or breaking) robots by matching the proper combination of symbols/colors. Each player (or single player) has a set of 4 tools to choose from and must get the correct combination within 20 seconds.

Read more →
February 10, 2020
Beyond Imagination
May 31, 2019
Beyond Imagination
May 31, 2019

Explore dungeons with up to four players as you fight hordes of enemies and defeat the darkness corrupting the Sleepy Gardens, a world that exists within the children’s imagination.

Read more →
May 31, 2019
Imagination Heights
January 31, 2019
Imagination Heights
January 31, 2019

A turn-based RPG about a young group of kids having an adventure in their city, altering their landscapes with their imagination. Draws inspiration from EarthBound and Octopath Traveler for the presentation.

Read more →
January 31, 2019
Vulkan Project
December 29, 2018
Vulkan Project
December 29, 2018

A project that was developed during my 3D Game Development course at university.

Read more →
December 29, 2018
StoryBook AR
December 21, 2018
StoryBook AR
December 21, 2018

StoryBook AR was an augmented reality project made in collaboration with my professor, Jessica Ross, under NJIT’s I-Corps Grant. It was built as an environment to build simple AR applications to help make books more interactive. This was done alongside Ross’s illustrated storybook, Gulnare of Persia.

Read more →
December 21, 2018
Koch Fractal Project
March 13, 2018
Koch Fractal Project
March 13, 2018

The Koch Fractal project was a mini project I did worked on during my free time. I wanted to explore something a little bit different that was outside of games just for the sake of experimenting.

Read more →
March 13, 2018
Forest Explorer
January 31, 2018
Forest Explorer
January 31, 2018

Play as Priscilla as she embarks on an adventure through Ori Forest to find her family. Using her spores, grow mushrooms to climb and transmit control of yourself to the bugs you will encounter to wander deeper into the forest.

Read more →
January 31, 2018

Powered by Squarespace