這個煙花的例子跟上面的很像, 都是通過Cascade控制DynamicParameter節點(視頻)
使用簡單的StaticMesh來做環境特效, 比如塵埃, 用類似的做法可以省去GameThread的更新開銷
Spline Thicken通常被Epic的特效和環境美術用來模擬彎曲的圓柱體
00:19
很多Gears5裏的特效都是使用VertexShader來完成的, 降低了CPU的開銷
空間信息怎麼辦?
蓋斯特納波經常用來做海洋模擬, 就是多個不同步長的正弦波做疊加
使用frac來做波形的重複傳播
把上面那個重複的0~1的值跟Sin函數進行疊加
00:47
視頻裏演示了這次分享中和許多技術. MPC可以在不同材質間共享全局參數, 比如波長, 水花, 泡沫等的時間參數
加入一個Phase參數控制兩個波形之間的距離, 可以是常量也可以是變數.
DistanceField(距離場)可以告訴你跟一個最近表面的距離, 那可以用DistanceField來控制PhaseOffset, 用於模擬水波靠近岩石的效果
UE4工程中需要開啟DistanceField, 材質中可以使用DistanceToNearestSurface節點來獲取離最近表面的距離, 這些信息是保存在相機周圍的Volumn Texture(3D體積紋理)裏
反轉0~1的值, 把距離轉換成Mask
一個PhaseOffset的例子
把DistanceFieldGradients與波形方向結合在一起
DistanceFieldGradients看起來像NormalMap, 代表了離最近表面的方向
跟方向做點積
美術通常用Flowmaps來保存流動的方向
這是Fortnite裏的河流, 在邊緣的地方結合了DistanceField和NormalMap來改變流向, 用來模擬水流經過鵝卵石的效果
又一個例子, 演示DistanceField改變flowmap的方向
這是材質節點, 把NormalMap從Tangent轉到Flow空間
總結Analytical Simulation的優勢: 性能好, 適合做環境特效什麼的
補充了一個LaggedWave實現
使用Vector Noise中的Curl Noise可以加入很多三維空間的隨機效果, 不過需要節省著點用
使用UE4中的ScaleUVsbyCenter對Flowmap進行縮放, 用來模擬泡沫從岩石上落下的效果
推薦閱讀: