Project CREATE: Shaders & Interaction

Some of the shaders I did for Project Create that went on top of the work from the fun team of Magic Leap Studios. My aim was to give life to some of the static meshes while increasing user interaction and enjoyment without incurring too much of a performance hit. Much of the work was done by pushing data to the GPU and having the vertex shader calculate.

Concepting: Danielle Brown, Cara Khan
Modeling: Mouhsine Adnani, Adam Glueckert, Udell Infante, Sean Couture
Animation: Jenna Jaillet, Jonathan Mangagil, David Wilson
Character Behaviors: Andrew Moran, Kathryn Scelina

Some of the shaders and look development I did for Project Create, a mobile app for the Magic Leap 1. I worked with vertex shaders to increase user interaction while maintaining a good performance on the mobile device.

All of the coral here are static meshes. We wanted to give some extra life to them by adding a bit of ambient animation. For more believable motion, I stored pivot data in their UVs and accessed them through the vertex shader.

All of the coral here are static meshes. We wanted to give some extra life to them by adding a bit of ambient animation. For more believable motion, I stored pivot data in their UVs and accessed them through the vertex shader.

Since this was for an AR app, I wanted the user to have some fun by being able to interact with the content. I created a system in C# that interfaces with the vertex shader. Brush FX by Christopher Pavlovski.

Since this was for an AR app, I wanted the user to have some fun by being able to interact with the content. I created a system in C# that interfaces with the vertex shader. Brush FX by Christopher Pavlovski.

Visualization of the interaction system I wrote. Whenever objects pass through the cylinder, they are registered and unregistered into the shader in a prioritized manner. Certain coral "hide" from objects while others are "pushed".

Visualization of the interaction system I wrote. Whenever objects pass through the cylinder, they are registered and unregistered into the shader in a prioritized manner. Certain coral "hide" from objects while others are "pushed".

Visualization of the stored rotation vectors and an object's interaction

Visualization of the stored rotation vectors and an object's interaction

So that we could render many fish at a low cost, I used a vertex shader, rather than joints, to drive their deformation. I created a class so we could set the shader parameters from the state machine

So that we could render many fish at a low cost, I used a vertex shader, rather than joints, to drive their deformation. I created a class so we could set the shader parameters from the state machine

I setup the tentacles in Unity which are driven by physics-based joints. I then took the local shader motion (setup by another artist) and parameterized it into two parts: push and pull. The behavior system drove those shader parameters.

I setup the tentacles in Unity which are driven by physics-based joints. I then took the local shader motion (setup by another artist) and parameterized it into two parts: push and pull. The behavior system drove those shader parameters.

I was responsible for the look development of the temperamental Cloudy character. The internal glow of the Angry state was a lot of fun to make!

I was responsible for the look development of the temperamental Cloudy character. The internal glow of the Angry state was a lot of fun to make!

One of the tasks I had was creating a visual for saving and loading content. here's what it looks like when saved content was "unpacked". I created the cardboard box, animation and shaders.

One of the tasks I had was creating a visual for saving and loading content. here's what it looks like when saved content was "unpacked". I created the cardboard box, animation and shaders.