最近學習 URP,找到了一個網上的 built-in 描邊項目,拿來改成 URP 模式,下面進行比較兩者差異

原本的做法是:

  • 輪廓邊(第 69 行):一側的面朝向鏡頭、另一側背向鏡頭。
  • 稜角邊(第 70 行):兩個面之間的折角夠大(以 60° 作為門檻)。
  • 邊界邊:只有一側有三角形的邊(開放網格的邊緣)。

而常見的做法有:

做法 原理 內部輪廓 / 稜角線 線寬 成本與相容性
法線外擴(Inverted Hull,最常見) 第二個 pass 把頂點沿法線往外推,只畫背面 ❌ 只有外輪廓,畫不出內部的稜角線 跟著距離變化,要另外修正 很便宜,手機也能跑
後處理邊緣偵測(深度 / 法線 Sobel) 對整個畫面的深度圖、法線圖做邊緣偵測 △ 取決於門檻設定 受解析度影響,容易鋸齒、閃爍 每幀要做一次全螢幕運算,和模型無關,URP / HDRP 都能用
Rim / Fresnel 根據視角和法線的夾角把邊緣塗暗 ❌ 粗細不均 最便宜,但不是真正的線
Stencil 描邊 先畫放大的模型,再用模板緩衝把原模型的部分扣掉 ❌ 只有最外圈 同法線外擴 便宜
本專案(幾何邊提取) 逐邊判斷輪廓和稜角,再用 GS 生成線段 ✅ 都畫得出來,例如手臂擋在身體前面時的交界線也會出現 螢幕空間固定寬度,線條細且銳利 CPU 和 GPU 成本都高,平台限制多

- 閱讀剩餘部分 -

安裝
$ docker compose up -d

過程中一直出現提示
05509-hfwvvw87isf.png

出現錯誤
10398-73ta1uq9e0k.png

這是 Hyper-V 模式的限制。容器要掛載本機資料夾時,那個資料夾必須先登記在 Docker 的共享清單裡。Dify compose 掛載十幾個路徑(volumes/app/storage、ssrf_proxy/*.sh、nginx/conf、certbot/conf…),而每個路徑都會跳一次視窗詢問。

- 閱讀剩餘部分 -

目前的專案做到一段落了,然後在發佈時還是遇到記憶體和 GC 問題,而且通常在發佈后才會面臨到不少的回報,很多時候内部測試因爲量級、設備、環境諸多因素很難第一時間發現

例如,某個 Update 裡多一個 Linq、某段 UI 每幀抓一次 GetComponentsInChildren。等到 Profiler 上看到 GC.Alloc 尖峰,要回頭找來源就很花時間。

偶然看到 Unity 官方介紹的 Project Auditor,這是一個靜態分析工具。它不需要執行遊戲,直接掃描程式碼、資源和專案設定,列出可能影響效能與記憶體的問題,也會附上說明和建議修法。這篇記錄我用它分析專案的流程,以及挑出來的幾個記憶體問題要怎麼改。

- 閱讀剩餘部分 -

接續上一篇内容,如果只有 8 年的城市指標數據的情況下想做趨勢分析,線性迴歸對小樣本和離群值都不友善。這時候我們可以使用 Mann–Kendall,可以套用在這樣的應用場景 —— 非參數、不假設常態、配上 Sen's slope 估斜率比 OLS 還抗噪。


在此我們先討論為什麼線性迴歸在這裡不夠用

- 閱讀剩餘部分 -