Learning about the Stencil buffer

An experiment I was able to produce whilst learning about stencil buffers in the context of writing graphics shaders. The way this effect works is by having both the sphere and a cube at the same position in the world. Then two quads moving horizontally towards each other in front of the camera.

When the quads are on their own they present the camera with a view through a single stencil buffer layer (the sphere), but when they overlap, we start to see the next stencil buffer layer (the cube).

The rest is simply a bit of animation to make the effect a bit more dynamic 🙂

I’ve found this technique quite interesting, and I’m sure will be useful in game projects I make, such as portals, or optical illusions.



A further experiment allowed me to create this cube effect, which seems hollow with different content from each side, again this is produced through a quad in front of the cube’s face that draws an inner cube and object, that are only visible on a specific stencil buffer layer. I was inspired by a similar effect in the game Antichamber, which is one of my all time favourites.

Learning about bezier curves

I encountered bezier curves at work recently, and realised I didn’t have much experience with them. It’s a quite a powerful tool to have, so I decided to re-implement it myself. What you can see is me moving 2 of the 3 control points, and drawing the curve (and rays to the interpolation points) using debug lines in Unity’s editor window. It’s the basics of having defining a curved object out of triangles, which could be useful with my Elastic mesh tech concept, as these triangles could become polygons.

Elastic mesh interaction

This is an example of a the Elastic mesh tech i’ve been playing with in my free time. It can be pulled using an object, which follows the cursor. The way the elastic mesh is built is through a bunch of points that are “fairly” anchored to their origin, but allowed to move by either getting pulled by the player, or pushed/pulled by their neighbours. You then get a distributed inertia through a few neighbours, which looks a bit “elastic”. Each point will try to return to it’s anchor if it’s not being pulled anymore, so the mesh returns to it’s original shape.