On the left of the screen is E.T.H.A.N, an artificial intellegence which is used as a narrative and guidence element for the player. I wrote a C# script which searches through each particle of an attached system and finds the next closest particle, then it draws a line between them. It has parameters to allow for the number of connections and maximum connection distance. I created the holographic light effect in GIMP, making multiple god-rays and using a script which randomly assigns different god-rays and randomly rotates rotates them, changing the speed and direction of the rotation at random intervals to give a flowing effect which adhere to a pattern which hopefuly will entertain the lizard brain of the viewer.
The plasma shot is multiple two-dimensional sprites which use an additive material to give a glowing effect combined with a simple additive sprite for the muzzle flash and a particle system which uses colliders and gravity to give a weight to the hit effect. The ammo counter uses emissive sprites and a simple particle system to give a digital feel. I change the colour dynamically to react to the amount of shots the player has left.
LWRP – Fire Projectile
Here is a fire projectile I made using Unity`s shader graph and light weight render pipeline.
I use three similar particle systems which all use the same fire shader, which I created by layering and scrolling different noise textures. I then gave them different colours and emission values to create the tail of fire. The smoke was made in largely the same way except I`ve added much more variance and noise.
The sparks use two particle systems, one which uses a more emissive material and a larger particle size, and the other which uses a less emissive material and a much smaller particle size.
Water Shader (In Progress)
This is a work in progress using Unity LWRP Shader Graph, its the shader for a water based magic attack.
The shader overlays various noise textures, scrolls them at different speeds using the Y value of the objects UV coordinates to get a downward flowing look. This is multiplied by a blue- green gradient to give it colour along with an inversed fresnel to add depth and interest. The origonal noise textures are converted to normal, metallic and smoothness maps to help give the waves a three dimensional feel.
The vertex displacement uses three noise maps, the first is used for the top of the object and is quite minimal. The second and third have been multiplied together and added to the first using a lerp node, I controlled the time value of the lerp using a smoothstep node. This creates the flat top and tapered bottom as well as allowing me to scale the vertex displacement differently at the top and botom of the shader.
(P.s. Im still not sure about the droplets at the bottom they definatley need more work, I am experimenting with a hacky version of ray marching to improve this – by localising a vertex displacement using a sphere mask and timing it with the larger droplets.)
Sci-Fi Flying Robot
This god ray effect I achieved through creating a range of “ray images” (in GIMP, a software similar to Photoshop) and then randomly generated them through code at random intervals to create a dynamic scanning light source. I added more sets of these random god rays the closer to the source as well as increase there alpha values to add more texture and realism to the light source.
I added line renderers which randomly point to various locations to add texture and focus to the effect. I made sure that the script I created for this effect is easily interacted with allowing for the rest of my team to increase or decrease the amount of lines and there range of movement.
Heat Wave / Force Field
The heat wave effect was created using a standard surface shader which distorts the image behind it using a grab pass and shifts its vertices slightly using a noise texture and a intensity variable. I then applied this shader to the rendered material of a particle system which emits it in bursts using a stretched billboard and highly randomised size, to make it look like the heat is fanning out in waves.
The force filed effect also uses a standard surface shader, it takes the world view and world normal of the material and calculates how much of the texture to show based on its orientation from the camera. Global variables allow for easy manipulation of how much rim to show, the textures panning speed and colour.
I added a script which manipulates the shaders rim amount over time to flare up when ever the robot takes damage.
This render was created using the voronoi fracture node to break the object into individual parts, as well as the conversion of paint nodes to points to create the scaling size of broken chunks out from the impact. It also utilises a hidden animated collider to deactivate the glue holding the wall together. Finally I created two simple shaders and applied them separately to the inside and out side of the wall.
Dynamic Meshes and Particles
This was inspired a bit from the Avengers movies but is mostly a product of wanting to learn particles inside Houdini.
I use a cross section created through a Boolean node combining two meshes, in this case a sphere and a cube, the combination cuts out a section of the sphere which intersects with the cube, creating a new mesh. I use this mesh to spawn the particles. To give it a more natural look I used a mountain node to deform the cube as it moves.
I decrease the particles size randomly over time as well as apply a wind effect, so it looks like they are blowing away to dust.
This effect can easily be recreated using any mesh.
This effect was created in Unity’s high definition render pipeline and utilises Houdini to create a vector field. I sculpted this simple wind element shape in Houdini, converted it to points and exported into Unity.
I use the vector field to conform the particles position and spawn them from a moving point which arcs around the field in three hundred and sixty degrees. I also arc a sphere collider which randomly knocks the particles away to give a more fluid in-motion affect.
I wanted to create a magical wind element which could be used to signify a point of interest that felt alive.
Earth Elemental (inProgress)
This earth element uses a script I wrote to control the transitions between its states. I added sliders which allow for the adjustment of most of the aspects of the animation – duration and intensity etc.
I created the sprites used for the glowing effect in GIMP.