這兩個鏈結雖然都是展示海洋 3D 渲染,但它們在底層技術、互動方式和應用架構上有很大分別:
1. 底層技術 (Technology Stack)
Shadertoy (MdXyzX):
基於 WebGL。
它是透過 Fragment Shader (像素著色器) 加上 Raymarching (射線步進) 演算法,在一個全螢幕的平面(Quad)上用數學公式「畫」出整片海洋和光影反射。整個過程高度集中在數學運算和像素級渲染上。
Vercel Ocean (ocean-noniv.vercel.app):
基於新一代的 WebGPU。
WebGPU 比 WebGL 更貼近底層硬體(類似 Vulkan、DirectX 12 或 Metal),支援 Compute Shaders(運算著色器),能夠極高效地處理複雜的 3D 幾何網格、物理模擬或粒子計算。
2. 互動與操作 (Interactivity)
Shadertoy:
互動較為簡單,通常只支援滑鼠拖曳旋轉視角、時間推移,主要是一個純粹的視覺展示(Demo)。
Vercel Ocean:
具備類似 3D 遊戲的完整相機控制:支援 WASD 鍵盤移動、滑鼠環視、Space/Q 升降、Shift 加速,甚至可以按 H 鍵打開設定面板來調整參數。
3. 相容性與需求 (Compatibility)
Shadertoy:
支援絕大多數現代瀏覽器(只要有 WebGL 支援即可運行)。
WebGPU Ocean:
需要瀏覽器和顯示卡硬體支援 WebGPU。如果硬體或瀏覽器較舊(例如未開啟 WebGPU 支援),可能會直接提示找不到 WebGPU Adapter 而無法運行。
總結來說:
Shadertoy 版是經典、輕量、純粹靠數學著色器實現的 WebGL 海洋視覺藝術。
Vercel 版則是利用現代高效能 WebGPU 架構打造的互動式 3D 海洋探索場景。