This site contains many samples and prototypes that I have developed. All the code for the samples are available on bitbucket
and people are free to do with it what they will. Ideally its best if you use the latest version of the Chrome browser, I tend to use
the latest available APIs and features as I prototype and learn new subjects.
3D Fungi Prototypes
Fungi is a 3D / Game engine built from sratch using Javascript(ES6) and WebGL 2. I tend to do most of my
3D prototypes using fungi since its built around the purpose of rapid prototyping.
- Trilinear Interpolation 8 Point transformation lattice for manipulating meshes.
- Marching Cubes : Animated Process Demonstrating the algorithm scanning grid and generating a mesh based on perlin 3d.
- Spring Physics Applying springs to specific bones to procedurally animation parts of a character.
- IK Rigs Recompute animation data to work with various models using inverse kinematics.
- ProtoForms v1.0 Procedurally generate 3D Characters that can be animated and used for prototyping.
- ProtoForms v2.0 Procedurally generate 3D Characters that can be animated and used for prototyping.
- Spring Terrain Using spring physics to move points to generate textures as you use keyboard to move around perlin noise.
- Gerstner Waves Algorithm that simulates ocean waves.
- Various IK Solvers Created a few single pass solvers to replicate the IK motion from a ubisoft GDC talk.
- Pivot Transform How to use a pivot point and a quaternion to transform a mesh in a shader.
- Globe Points (A) Spacing points on a sphere and using a Texture map to highlight points.
- Globe Points (B) Another example but using fibonacci to define points on sphere.
- Animation Cubic Interpolation Inspired by Overgrowth's GDC talk on using 2 poses and cubic interpolation to generate animation cycles.
- Space Ship Controller Just woke up one day and just wanted to try to make a space ship fly around.
- Hand Controller Quick example of how to control fingers on a rigged hand.
- Capsule Morphing Demonstrating how to great vertex groups, then using various ways with positioning, scaling and bezier curves to change the shape of a capsule into something else with the use of a GLSL Shader.
- Cube with Rounded Edges Example of how to make rounded cubes, with the right setting it becomes a sphereified cube.
- Phong Lighting with Textures Example of how to handle maps for Albedo, Normal, Metal/Roughness, Emission, Ambient Occlusion and Equirectangular Enviroment Reflection
- Axis Aligned Lattice Deformer CPU Based on the Lattice created for unity3d by Barnaby Smith. Only difference is the math was redone in world space for my prototype.
- Axis Aligned Lattice Deformer GPU This is port of the previous example which ran on the cpu, but this one runs on the gpu through GLSL.
- Atmospheric Scattering Skybox Port of Felix Westin (@FewesW)'s Unity Example of Atmospheric Scattering.
- Octasphere A special type of sphere.
- Marching Cubes Editor During the progress of a project, I needed to be able to handle users selecting areas of a dual grid then procedurally generate meshes based on what the user selected. This was made as a proof of concept.
- SDF Font Atlas Example of how to parse Font data and render text using instancing in World and Screen Space.
- QuadTree example using quadree to render LOD based on Position or Range. Also manages resources in Object Pools.
- Frustum Culling QuadTree extra example wtih rendering a frustum while culling quadtree tiles that are within view.
SDF / Ray Marching Prototypes
A collection of SDF related examples using fungi to handle the rendering.
- Animated Gear Sphere Following a tutorial by Inigo Quilez but using a volume for rendering.
- SDF Shapes Different SDF Shapes transitions in Quad rendering with custom made SDF Camera.
- Imposter Shphere Uisng a Billboard Quad and Ray-Sphere Intersection, you can fake a lit textured sphere.
- Monster Character My take on Inigo Quilez's monster in Happy Jumping Tutorial.
- Happy Jumping World Using a sdf camera to walk around a world created following Inigo Quilez's tutorial.
- Bone Chain created a mini example of how to create bone transforms and used sdf to render the bone's transform
- 2D SDF Faces using SDF to design multiple eyes or mouths to display on a robot face.
Three.js Prototypes
When doing professional work, I opt to use three.js instead of fungi.
- Wave Function Collapse Using 3D model tiles, the algorthm will connect them together to procedurally generate a road system.
- Hexagon Map Procedurally generate a Hexagon Map while using Cubic Noise to compute the height of each column.
- Hexagon Map CPU CPU Bound version which also places assets randomly on the hex board.
- Voxel Geodesic Autoskinning (CPU) Recreating autoskinning process described from a white paper.
3D Shader Prototypes
Using fungi, i sometimes try to spend some time learning GLSL to create shaders, plus how to render 3D Objects.
- Phong Lighting Basic lighting : Ambient, Diffuse and Specular.
- Toon Lighting Render things to be more cartoon like.
- Toon Metal ported a unity toon shader to that webgl/glsl, originally by minionsart.
- Parallax Glitter porting a unity shader to webgl/glsl rendering textures with parallax.
- EyeBall porting a unity shader to webgl/glsl, originally by minionsart.
- Halftones exeriment on learning how to generate halftones on a mesh.
- Dithering a different way to do shading with pixel pattern that change by depth.
- SDF Texture Halftones a sample of how to use SDF textures to do halftone shading.
- Voronoi Edge Texture Node ported blender's shader node into something usable in webgl.
- Voronoi F1 & Noise Texture Nodes porting blender's shader nodes into something usable in webgl.
- Toon Halftones A custom toon shader that uses a code based color ramp, specular light and direction rim shadows while using halftones has a way to transition between colors.
- Kenny Direction Tint Fun shader that applies lighting based on axis direction.
- Pixel Font Rendering pixel based font in a shader, no textures.
- Multiple Lights Example of rendering multiple lights. The main draw is using JS ArrayBuffers to store and send data to UBO.
- Komikaze Aqua Porting over a blender material into GLSL / WebGL.
- Sky Dome fixed up an old example from an article. Lots of customization, easy to make day and night cycles with Sun/Moon.
3D Terrains
One of the things I'd like to learn is to procedurally generate terrains, water and planets.
- Terrain Cube using fbm noise with user defined settings.
2D Prototypes
Various experiments using just Javascript, CSS and HTML Canvas. Some are preludes to making more complicated 3D prototypes.
- Spring Movement Using spring physics as a movement driver.
- Irregular Hex Grid Recreation of Oskar's Irregular Grid.
- Marching Squares : Animated Process An animated sample of how the algorithm works.
- Marching Squares : Traverse Noise Using the keyboard to move around 2D noise as it gets rendered my MS algorithm.
- Keyframe Curve Movement Trying to animate movement on a hermite curve with key frames.
- Moving Timeline Experimenting with how to draw a numbered grid as it scrolls.
- Keyframe Events Want to have events trigger during a key frame animation.
- Alchemy Symbol Generator Recreating procedurally generate symbols originally in php.
- Wave Function Collapse Basic sample of the algorithm using text as tiles.
- Quad Tree Generate random points and place them it in a quad tree, then visualize grid.
- Bezier Splines Curve tool with real time animation while editing the spline.
- 1$ Recognizer Playing with the $1 2D shape / gesture recognizer.
- Trig Functions Visualize trig functions like: sin, cos, tan
- Lemniscate Bernoulli Animation on this specific curve
- Watts Curve Animation on this specific curve
UI Web Components
I enjoy putting together UI components from scratch using Javascript, CSS and HTML. I sometimes need a way to control prototypes.
- Property Panel A slide out panel with editable rows of other ui components.
- Timeline Animation Timeline rendered with HTML canvas for controlling and viewing animation time.
- GChat Modal Many years ago I made a webbased chat tool for work, i recreated gchat web interface for it.
- Range Input Created two version of a custom web ui component, one renders with canvas and the other with svg.
Misc
Just Random extra stuff.
- Animation Curve Editor Tool I thought about making so I can generate animation curves.
- Node Editor Web Based example of nodes that can be tied together.
- Noise Generator Visual tool to see what noise looks like when merged together.
- Shader Blocks My attempt at a webbased shader forge like tool.
- Puggle A webbased recreation of a mini game called Puggle.