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 2.5, bevel 0.35 × 0.35, 4 segments
Layering
Z offset 0.24 between blades
Section 02 / Material

A logo, anodized in colour.

Each blade is shaded like satin anodized metal — the brand gradient carries the body, and a restrained fresnel keeps it from turning to chrome. At grazing angles a cosine-palette spectrum cycles along the bevel, faking the thin-film interference you see on 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
Satin metal · Schlick fresnel F0 0.08
Iridescence
Cosine palette · cycles with NdotV
Reflection
Live cube map · 128² · every 3rd frame
Specular
Two-lobe · pow 36 · pow 220
Tint
#E4002B→#FFC845 / #007A33→#97D700
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