← All projects

Case Study

Viridian Fishing

Tech Artist3D Artist

  • JavaScript
  • P5.js
  • WebGL
  • GLSL
  • Autodesk Maya
  • Adobe Photoshop
  • Overview: Viridian Fishing (also shown as "Viridian Moonlight") is a stylized 3D scene built in p5.js featuring a hand-crafted GLSL dithering shader and procedural noise applied to low-poly geometry. The project depicts a moonlit pond environment, combining an original fish model with reshaped primitives to create an atmospheric, retro-inspired real-time scene. Press E when a fish is within reach to catch it, filling your bucket with your haul.

    Open Full Sketch on p5.js View on GitHub

    Key Features

    • Custom GLSL dithering shader
    • Procedural gradient noise
    • Original 3D assets
    • Low-poly scene composition
    • Orbital camera control

    Gallery

    Contributions

    • Researched and implemented a custom GLSL fragment shader producing a dithering effect that quantizes surface shading based on light intensity, replicating the pixelated look of early 3D graphics.
    • Adapted Inigo Quilez's gradient noise algorithm from The Book of Shaders to drive procedural surface coloring on 3D geometry in p5.js WebGL mode.
    • Modeled an original low-poly fish and constructed a full scene using stretched and transformed geometric primitives for lily pads, cattails, and a pond surface.
    • Iterated across two project phases — first establishing noise-driven color on a 3D model, then building the complete dithering pipeline and scene composition.

    Impact

    • Delivered a fully custom shader pipeline in a browser-based sketch, without relying on any external rendering engine.
    • Established a reusable approach for combining procedural noise with hand-modeled assets in p5.js WebGL scenes.

    Quick facts

    Solo technical art project

    Team

    Individual project