iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0

因為在寫得當下其實還有蠻多前提知識不太理解的,所以實際結果跟自己的想法有不少出入,這邊先已記錄為主,之後慢慢修。

雖然雲看起來很單純,不過其實一朵雲就可以包含上百萬個粒子。除此之外還需要處理光線、密度、體積位置等等特別麻煩的計算。一般來說直接用 Skybox 的圖直接做成遠景是最省效能的方式。

不過這邊就是特別要這樣做來理解相關的技術,因為這些對以後如果要實作特效這類的 shader 還有優化都有幫助。例子如下

技術 對特效的用途 常見效果
Noise / Value Noise 製造自然的不規則變化 火焰、煙、霧、魔法、溶解
FBM 疊加不同尺度細節 雲、煙、火、地形、能量
Density Field 描述「空間中有多少東西」 雲、煙、霧、火、爆炸
Ray Marching 在 3D 空間中取樣效果 體積霧、雲、SDF、黑洞、能量體
Beer-Lambert 模擬光穿過介質被吸收 煙、霧、水、雲、玻璃感
Light Marching 計算體積內部陰影 雲、煙、爆炸
Phase Function 控制體積散射方向 雲、霧、God Ray
Height Mask 控制效果垂直分布 地面霧、火焰、瀑布霧氣
Coverage / Threshold 控制效果出現多少 雲量、火焰區域、Dissolve

當然這些計算就需要用到 Conpute shader 來加快計算的速度,這會是下一篇介紹的內容。

參考資料

Real-time dreamy Cloudscapes with Volumetric Raymarching - The Blog of Maxime Heckel


上一篇
Day 16:Pass / Rendering Pipeline
下一篇
Day 18:Compute Pipeline 介紹
系列文
因為 AI 看不懂老舊程式,只好乖乖從零開始學 DirectX 12 與 HLSL23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言