Compiling shaders…
GC — Symbol Study / 002 SVG path · Extruded · GLSL material
Build 2026.05 -- fps

GC AI

Two SVG paths, lifted into 3D.
Lit by a custom GLSL shader.
Drag to rotate.

Scroll ↓   Drag to rotate
Section 01 / Geometry

From SVG to mesh.

The brand symbol lives as two SVG paths. We hand them, character for character, to THREE.SVGLoader. It returns shapes; THREE.ExtrudeGeometry sweeps each shape along Z with a small bevel and gives us a real triangle mesh — vertices, indices, normals.

Why mesh and not signed distance functions? Because the GC mark is not a Platonic primitive. It is a designed curve, with intent in every Bézier handle. SDFs are great for things that have a closed-form. Logos are closed-form only inside Adobe Illustrator. Mesh is the honest path.

Source
2 SVG path strings, 22 commands each
Tessellation
~2,400 triangles per blade
Extrusion
depth 0.18, bevel 0.04 × 0.04, 6 segments
Layering
Z offset 0.05 between blades
Section 02 / Material

A logo, blown like glass.

The brand wanted a soap bubble, so the bubble is what the fragment shader paints. Each blade is alpha-blended — clear in the middle, milky at the rim — and the rim is where a cosine-palette spectrum cycles, faking the thin-film interference you see on real soap film.

A live CubeCamera at the origin re-renders the dome (and the other blade) every third frame, so the reflections are not a baked HDRI but the room itself. Two specular lobes — a broad one and a tight one — drop pinpricks of light on top.

Surface
Translucent · alpha driven by fresnel
Iridescence
Cosine palette · cycles with NdotV
Reflection
Live cube map · 128² · every 3rd frame
Specular
Two-lobe · pow 80 · pow 220
Tint
#ff5970 / #75ff8c · soft base mix
Section 03 / Why this matters

A logo that responds.

The fragment shader is composed like glslify: thinFilm, fresnel, specLobe, sampleEnv, cursorField, clickRipple — six small modules, one frame. Hover anywhere and a hot spot tracks underneath the surface. Click and a ring expands across both blades. Both are uniforms, not videos.

The bubbles drifting around it are an InstancedBufferGeometry — one icosahedron, fifty-six instances, position computed in the vertex shader from a per-instance seed. One draw call. The trick oryzo.ai pulled is the same trick here: make the page itself the artwork.

Asset weight
Two SVG paths · ~1.2 KB
Particles
56 instances · 1 draw call
Interactions
Hover hot spot · Click ripple
Reactivity
Cursor, click, scroll, time