2026年11月5日 星期四

Macbear 3D v0.13.0 全螢幕景深 (DoF) 散景、大氣日照散射、光源視錐剔除、水面接觸浪花與高度圖車輛物理

「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

2026年10月31日 星期六

Flutter rapier_physics 0.6.0 更新!

底層基於 Rust 官方的 Rapier3D 與 WebAssembly,這次版本正式帶來了賽車與載具必備的 Raycast Vehicle 車輛物理控制器,讓大家在 Flutter 裡能輕鬆打造具備真實懸吊回饋的 3D 車輛!

Physics Demos

🌟 0.6.0 重點特色

  1. 射線車輛控制器 (VehicleController)
    • 封裝 Rapier 經典的 DynamicRayCastVehicleController。
    • 採用射線檢測模擬輪胎接觸,避免實體輪胎碰撞卡死或穿模,運行效率高且穩定。
  2. 真實懸吊調校 (WheelTuning)
    • 支援各輪獨立設定懸吊剛性 (Stiffness)、阻尼壓縮/回彈 (Damping)、行程 (Travel)、輪胎抓地力 (Friction Slip) 與最大懸吊力。
    • 內建 WheelTuning.car() 預設參數,開箱即有逼真手感。
  3. 完整車輛控制與狀態查詢
    • 獨立控制轉向角 (setSteering)、馬達動力 (setEngineForce) 與煞車 (setBrake),並可隨時讀取車速 (currentSpeed)。
    • 提供實時狀態 (WheelState):取得各輪胎著地狀態、接地法線、懸吊壓縮長度、輪胎 3D 位置與自轉/轉向角度,與視覺 3D 模型無縫同步。
  4. 全新 3D 高程地形越野 Demo
    • 新增 Demo 7(HeightfieldScene):4WD 四輪驅動車馳騁在高低起伏的地形(波浪、漣漪、圓弧回圈)。
    • 具備第三人稱追蹤鏡頭、螢幕虛擬油門/方向盤/煞車操作面板,以及鍵盤駕駛 (WASD / 方向鍵、空白鍵煞車、R 鍵翻車重置)。

🌐 線上試玩與專案連結

各大平台預編譯二進制庫(iOS/macOS XCFramework、Android .so、WebAssembly)皆已同步更新,無需配置 Rust 環境即可直接體驗!

2026年10月17日 星期六

Macbear 3D 0.12.0 更新:帶來 HDR、Bloom 與 FXAA 視覺升級

Release v0.12.0

Macbear 3D 是一個基於 Google ANGLE (OpenGL ES 3.0) 的 Flutter 輕量高效能 3D 引擎。最新 v0.12.0 著重於渲染管線重構,帶來更細膩逼真的視覺後處理體驗。

🌟 本次更新重點

  • 全面支援 HDR 渲染管線 (RGBA16F)
    緩衝區全面升級為 16-bit 浮點數精度,光照全程於線性空間運算,告別高光斷階。
  • 物理級 Bloom 泛光效果
    導入 UE4 風格 Soft-Knee 高光萃取與 5-tap 高斯可分離模糊,呈現柔和自然的發光質感。
  • FXAA 快速抗鋸齒 (M3FxaaPass)
    透過邊緣亮度偵測進行次像素平滑,以極低的 GPU 負載消除邊緣鋸齒。
  • 豐富的色調映射模式 (Tonemapping)
    內建 ACES Filmic、Khronos PBR Neutral、Reinhard 等曲線,並支援動態 exposure 曝光值即時調節。
  • 控制面板模組化重構
    範例中的後處理、霧效及著色器選單已封裝為獨立 Flutter Widget,便於快速自訂與整合。

2026年10月1日 星期四

Macbear 3D 0.11.0 發布

Macbear 3D 0.11.0 PBR 渲染截圖

✨ 新增功能

  • sRGB 紋理支援 — 硬體 GPU 自動 sRGB→線性色彩空間轉換,涵蓋 2D、ASTC 壓縮紋理與 glTF baseColor 貼圖
  • 切線空間法線貼圖 — 完整 TBN 矩陣管線,支援所有幾何體的逐像素法線光照
  • glTF PBR ORM 紋理 — 打包式 AO / Roughness / Metallic 紋理,GGX 物理正確;M3GltfMaterial 自動解析
  • 深度預通道(Depth Pre-Pass) — Early-Z 遮擋剔除,減少 Overdraw
  • 雙面材質(Double-Sided) — M3Material.doubleSided,自動管理 GL 面剔除;glTF 自動解析
  • 遮罩面 / Alpha Cutout — 可設定 alphaCutoff 閥值,專屬著色器變體 programTextureMasked / programShadowMasked / programUnlitMasked
  • PBR 獨立光源顏色 — uLightColor Uniform 解耦方向光顏色與表面 Diffuse
  • 可設定 CSM 層數 — M3ShaderOptions.csmCount,執行期支援 1–4 層陰影級聯

⬆️ 升級

dependencies:
  macbear_3d: ^0.11.0

🌐 線上演示:macbearchen.github.io/macbear_3d  |  ☕ 贊助:Ko-fi  |  📋 完整更新日誌

2026年9月6日 星期日

【Flutter 3D 引擎】Macbear 3D v0.10.1 重磅發佈:聚光燈陰影 (Spotlight Shadow)、地形 LOD 邊界縫合、Rapier 物理展示與 glTF 模組化全面進化!

各位關心 Flutter 與跨平台 3D 開發的夥伴們,很高興向大家宣布:Macbear 3D 渲染引擎 v0.10.1 正式發佈!🎉

Macbear 3D 是專為 Flutter 打造的高效能輕量級 3D 渲染引擎,底層基於 Google ANGLE (OpenGL ES 3.0)。在經歷了 v0.9.x 的架構沉澱與地形系統基礎建設後,v0.10.1 帶來了幾項里程碑等級的重大突破: 聚光燈與聚光燈陰影貼圖 (Spotlight & Spot Shadow Mapping)、多級地形細節 (LOD) 與無縫邊緣縫合 (Stitching)、全面升級的 Rapier 物理展示場景,以及 glTF 解析器的模組化重構。

Macbear 3D v0.10.1 Preview

▲ 支援聚光燈、動態陰影、多光源與 PBR 渲染的 Macbear 3D 引擎畫面


🌟 v0.10.1 重點更新深度解析

1. 🔦 聚光燈與聚光燈陰影貼圖 (Spotlight & Spot Shadow Mapping)

在 v0.9.3 實現了多點光源優化之後,許多開發者引頸期盼的「探照燈 / 聚光燈」終於正式登場!

  • 錐體光束與平滑邊緣:新增 M3SpotLight,具備精確的內切角 (inner cutoff) 與外切角 (outer cutoff),提供自然的邊緣柔和過渡與基於距離的衰減模型。
  • 聚光燈動態陰影:實作了專屬的聚光燈陰影貼圖矩陣轉換 (Shadow Matrix) 與視錐透視投影。
  • 共用 PCF 濾波著色器:聚光燈陰影與現有的平行光陰影共享高效的 PCF (Percentage Closer Filtering) 柔和陰影核心演算法 (LightFS.es3.glsl, ShadowFS.es3.glsl, ShadowVS.es3.glsl),不僅消除了鋸齒,也兼顧了效能與記憶體開銷。

2. 🏔️ 地形 LOD (Level of Detail) 與防裂縫邊界縫合 (Edge Stitching)

在大型室外場景中,若全地圖都以高解析度網格渲染,對 GPU 頂點處理將會是沉重的負擔。瓦片地形系統 (Tiled Terrain) 迎來了關鍵升級:

  • 四級 LOD 網格切換:地形瓦片現在支援動態解析度等級(32×32 → 16×16 → 8×8 → 4×4 網格面數遞減)。遠處瓦片大幅減少面數,近處保持細膩起伏。
  • 邊界無縫縫合 (Edge Stitching):當高解析度 Tile 與低解析度相鄰 Tile 拼接時,傳統技術容易出現因頂點無法對齊而形成的露底「裂縫 (T-Junction gaps)」。Macbear 3D 在邊界頂點處進行了自動約束縫合運算,保證視角推移時地表依舊無縫貼合。

3. ⚙️ Rapier 物理引擎全面整合與五大經典範例場景

為了展現與高效能物理引擎 Rapier3D (結合 rapier_physics) 的深度整合,本次重構了物理引擎的架構,並一口氣增加了 5 個完整的經典物理示範:

  • 雙擺系統 (DoublePendulumScene):展現剛體關節約束 (Joints) 與高敏混沌運動的高精確模擬。
  • 牛頓擺 (NewtonCradleScene):精準的彈性碰撞衝量傳遞與動量守恆展現。
  • 複合碰撞體 (CompoundScene):展示多個 Collider 組合成單一剛體的物理動態。
  • 射線與場景查詢 (SceneQueryScene):示範 Raycast 射線檢測與空間查詢能力。
  • 架構簡化:將常用的空間圍牆與邊界防護生成機制收斂至 BaseScene,大幅降低開發者編寫物理場景的樣板程式碼。

4. 📦 glTF 解析器架構模組化重構

原本集中的 glTF 載入邏輯完成了全面解耦重組:

  • 拆分為 M3GltfDocument、M3GltfNode、M3GltfMesh、M3GltfMaterial 與 M3GltfAnimation 獨立領域物件。
  • 程式碼可讀性、維護性與記憶體模型大幅提升,為後續擴充自訂材質延伸規格 (KHR Extensions) 與更複雜的骨骼動畫奠定了穩固地基。
  • 同時將 Flutter 相容版本更新支援至 3.47.0。

5. ☕ 贊助專案與社群支持

Macbear 3D 是個人歷經無數個夜晚與週末打造的開源專案。在此版本中正式加入了 Ko-fi 贊助連結 與徽章。如果您覺得這個專案對您的 Flutter 3D 專案有所啟發或幫助,非常歡迎透過 Ko-fi 請作者喝杯咖啡,這將會是推動專案持續前進的巨大動力!☕


🚀 快速升級指南

在您的 pubspec.yaml 中更新至最新版本:

dependencies:
  macbear_3d: ^0.10.1

🌐 相關連結與資源


感謝所有關注 Macbear 3D 的開發者!Happy Coding with Flutter & 3D!

2026年8月26日 星期三

🚀 Flutter 3D 物理引擎 rapier_physics v0.5.3 正式發布!全面升級與穩定性強化

在 Flutter 中打造流暢的 3D 遊戲與互動體驗,強大而精準的物理模擬是不可或缺的基石。rapier_physics 結合了 Rust 高效能物理引擎 Rapier3D 與 Flutter 多平台生態,支援 iOS、macOS、Windows、Android 與 Web。

今天我們很高興宣布 rapier_physics v0.5.3 正式發布!這個版本帶來了底層原生引擎升級、Web 平台切換防護以及建置管線的全面精簡。

rapier_physics demos

🎮 線上即時體驗(Live Demo)

可以直接在下方即時操作體驗 3D 物理模擬與角色控制效果:

💡 提示:若無法正常顯示,您也可以直接點擊前往體驗 👉 線上展示網頁


✨ 0.5.3 核心更新亮點

1. ⚙️ 底層物理核心升級:Rapier3D v0.35.2

我們將底層原生 Rust 引擎依賴全面升級至最新的 rapier3d v0.35.2(以及碰撞檢測庫 parry3d v0.30.2):

  • 提供更極致的物理運算效能與記憶體優化。
  • 提升多物體堆疊、關節約束(Joints)與連續碰撞檢測(CCD)的穩定性與精度。

2. 🌐 Web/WASM 場景切換防護(修復 unreachable 崩潰)

在 Web (WebAssembly) 環境下,當使用者在多個 3D 物理場景間頻繁切換時,過往可能因 WASM 生命週期重複初始化導致舊控制代碼引發 unreachable 執行時期錯誤:

  • 0.5.3 加入了全新的 WASM 重新初始化防護機制,確保在單頁應用(SPA)中動態切換、重建物理場景依然穩如磐石。

3. 📦 建置腳本與 Web 產物路徑重構

  • 重構建置流程,讓 Web 相關產物直接輸出至 web/ 與 example/web/。
  • 移除了冗餘的 prebuilt/web 目錄,使專案結構更乾淨、發布與測試流程更順暢。

4. 🧹 程式碼日誌清理

  • 移除了 RapierWorld 中的額外 Debug Print 調試輸出,讓開發者的 Console 保持乾淨清晰。

🌟 近期版本特色回顧 (0.5.0 ~ 0.5.2)

  • 🏃 運動學角色控制器 (Kinematic Character Controller):支援 3D 角色物理導航、自動攀爬階梯、斜坡滑動、貼地吸附與推動動態物體。
  • 🎯 場景查詢 (Scene Query API):完整的射線投射(castRay、castRayAndGetNormal)與形狀投射(castShape),並支援自訂過濾器旗標(QueryFilterFlags)。
  • 🛡️ 安全的生命週期管理:提供 dispose()` 與加固的 `destroy()` 流程,杜絕原生記憶體洩漏與重複釋放(double-free)。

📦 立即開始使用

在您的 Flutter 專案 pubspec.yaml 中新增依賴:

dependencies:
  rapier_physics: ^0.5.3

或直接透過終端機安裝:

flutter pub add rapier_physics

歡迎前往 GitHub 查看更多 3D 互動範例(包含角色控制器、雙擺、牛頓擺、複合剛體與場景查詢):
👉 GitHub 專案庫:macbearchen/rapier_physics

2026年8月1日 星期六

Macbear 3D v0.9.4

【Flutter 3D 引擎】Macbear 3D v0.9.4 正式發佈:瓦片地形系統、安全視圖切換與效能統計躍進!

"OpenGL can. I will."

「OpenGL 能,我來。」

親愛的 Flutter 與 3D 開發者們,很高興向大家宣佈 Macbear 3D 渲染引擎 v0.9.4 版本正式發佈!

Macbear 3D 是一套專為 Flutter 打造的高效能輕量級 3D 渲染引擎,底層基於 Google ANGLE (OpenGL ES 3.0),旨在解決 Flutter 在跨平台 3D 場景開發中的效能瓶頸與開發體驗。

在最新的 v0.9.4 版本中,我們帶來了全新的分塊瓦片地形系統 (Tiled Terrain)、安全視圖卸載/重新掛載機制 (Unmount/Remount),以及多項幾何體與渲染統計優化。


🌟 v0.9.4 重點更新特輯

1. 🏔️ 全新瓦片地形系統 (Tiled Terrain & LOD)

為了支援更大規模、更細緻的 3D 地貌景觀渲染,v0.9.4 推出了 M3TerrainTileGeom 與 M3TiledTerrain:

  • 分區與瓦片渲染 (Chunked / Tiled Rendering):將大型地形分割為多個獨立 Tile,利於未來實現動態視錐體裁剪與分級細節 (LOD) 載入。
  • 高度圖構建優化:新增 M3HeightField.fromHeightmap,並使用 package:image 完全重構 M3TerrainGeom.fromHeightmapImage,支援 8-bit RGBA 以及高精度 16-bit 灰階 PNG 高度圖,帶來更平滑的雙線性插值地形起伏。

2. 🔄 視圖生命週期安全切換 (unmount / remount)

在 Flutter 的聲明式 UI 架構中,頁面切換、Tab 標籤切換或 Widget 的銷毀與重建是常態。

  • 以往的挑戰:銷毀 M3View 時若一併釋放 M3AppEngine 單例,會導致 OpenGL / ANGLE Context 破壞,再次掛載時容易出現 Context 不一致或貼圖失效的問題。
  • v0.9.4 的解法:解耦了 M3View 與引擎單例生命週期。當頁面離開時調用 unmount() 僅暫停渲染迴圈與 Ticker,保留 GPU 紋理與上下文;當 Widget 重新進入畫面時調用 remount() 瞬間恢復渲染,無縫且高效!

3. ✏️ 自訂線條幾何體 (M3LineGeom) 與幾何建構式優化

  • 3D 線段繪製:新增 M3LineGeom 類別,方便開發者繪製自訂 3D 軌跡、路徑、輔助網格線與 Wireframe。
  • 幾何體參數優化:改進了 M3CylinderGeom (圓柱體) 與 M3CapsuleGeom (膠囊體) 的建構式參數,設置更加靈活直覺。
  • 世界包圍盒計算:子網格新增 subMeshes.worldBounding 世界坐標包圍盒計算,精準提升碰撞與裁剪判定能力。

4. 📊 精確的渲染數據統計 (M3RenderStats)

在效能調優時,精確的數據至關重要。v0.9.4 重構了 M3RenderStats 結構:

  • 將原本的 culls 欄位調整為 submeshes,精確統計與監控當前幀實際繪製的 SubMesh 數量、面數 (Triangles) 與 頂點數 (Vertices)。

🔮 未來展望 (Roadmap)

Macbear 3D 將持續深耕 Flutter 3D 渲染領域,未來的計畫包括:

  • 🔦 多探照燈/聚光燈系統:支援最多 8 個探照光 (Spotlight),提供錐形照射範圍、衰減邊緣與獨立方向控制。
  • 🏔️ 地形 LOD 動態裁切進一步優化:結合視錐體動態加載與 GPU 著色器層級無縫拼接。
  • 🎨 更多 PBR 材質效果與 Shader 擴充:支援更豐富的表面質感與環境光遮蔽 (AO)。
  • 🕹️ 更豐富的物理引擎碰撞與角色控制整合:擴充剛體互動與 Character Controller 操作體驗。

歡迎大家下載體驗並提出建議!有任何問題或想法,歡迎在 GitHub 提交 Issue 或 Discussion。


感謝每一位支援與使用 Macbear 3D 的開發者!Happy Coding with Flutter & 3D!