「OpenGL 能,我來。」
Macbear 3D 迎來 v0.13.0 重大里程碑!本次更新全面深化了後期處理管線(Post-Processing)、大氣與水體光學渲染,並大幅強化了即時剔除性能與物理交互體驗。
📷 1. 全螢幕景深後處理 (Depth of Field, DoF)
新增專屬景深通道 M3DofPass 與 Dof.es3.frag,具備逼真的電影級相機散景(Bokeh)效果:
- 16 點 Vogel Disk 螺旋卷積:採用黃金角度(Golden Angle)分佈的費氏螺旋取樣,提供柔和圓潤的圓形散景。
- 雙邊背景深度防滲漏 (Bilateral Depth Weighting):精確計算 Circle of Confusion (CoC),避免失焦模糊的遠處背景滲入清晰的前景物件輪廓邊緣。
- 實時控制與調校:提供
dofFocusDistance(對焦距離)、dofFocusRange(清晰景深寬度)與dofBokehRadius(最大散景半徑)即時滑桿調節。
🌅 2. 大氣前向散射光暈 & 光源視錐剔除 (Light Frustum Culling)
- 太陽前向散射光暈 (Forward Sun Glow):霧氣著色器 (
FogFS) 實作視線與太陽光夾角的前向高光散射相位pow5(dot(V, uLightDir)),逆光望向太陽時能呈現真實的空氣透光光暈。 - 環境光照動態調變:霧氣基礎色彩動態融入場景環境光與方向光照射倍率(
scene.ambient + scene.dirLight.color * 0.35)。 - 相機光源視錐剔除 (Frustum Culling):
- 點光源:世界空間包圍球體與相機視錐交集測試 (
isPointLightVisible)。 - 聚光燈:先經外接球快篩,再對聚光錐 8 個頂點進行平面分離測試 (
isSpotLightVisible),即時剃除視野外的背向光源。
- 點光源:世界空間包圍球體與相機視錐交集測試 (
- LightFS Uniform 整併:將分散的光源計數收斂至單一
uLightCounts(vec2i),CPU 端預乘光色與強度,降低 Draw Call 間的 Overhead。
🌊 3. 水面接觸泡沫、折射修復 & HDR 自發光強度
- 岸線動態浪花 (Shoreline Foam & Wave Splash):水面透過讀取場景深度緩衝區(Texture Unit 7),在接觸岸邊陸地時自動生成邊緣泡沫與衝擊濺浪效果。
- 折射邊緣鬼影抑制:引入
edgeDistortionDistance衰減,消除水面折射在淺灘岸線上的邊緣撕裂與鋸齒溢色。 - glTF
KHR_materials_emissive_strength:支援 glTF 官方自發光強度倍率擴展,可調配出超越標準 LDR 的發光高動態範圍,完美激發 Bloom 泛光效果! - R32F 貼圖過濾安全機制:嚴格將 non-filterable 的單精度浮點紋理限制為
GL_NEAREST,杜絕部分 GPU 平台上的驅動黑畫面問題。
🏎️ 4. Rapier 0.6.0 升級 & 高度圖車輛物理 (Heightfield Vehicle Demo)
範例新增了 HeightfieldScene(在 main_all.dart 與 main_rapier.dart 中可直接載入體驗):
- 程序化高程碰撞地形:透過 Trimesh 碰撞器將 Perlin Noise 地形無縫轉為物理表面。
- 自訂射線車輛懸吊系統 (Raycast Vehicle):包含 4 輪獨立懸吊力學阻尼、轉向、油門驅動與煞車模擬。
- 鍵盤 / 觸控 UI 操作:支援鍵盤方向鍵與行動端虛擬搖桿 / 按鈕即時駕駛越野車翻山越嶺。
📦 升級與使用 (Installation)
在 Flutter 專案的 pubspec.yaml 中加入:
dependencies:
macbear_3d: ^0.13.0


