Skip to content
myl2232 edited this page Oct 28, 2020 · 6 revisions

DCGWater是一款水的插件。提供了反射,折射,水沫,波动等效果。

  • 用到了深度,用来判断海岸,制作近处的水沫,远处就比较清亮。用来三个贴图,反射、法线、移位。屏幕空间位置projPos得到了partZ,深度图中的位置SceneZ,从而用SceneZ-PartZ用来判断水面有效范围。岸边是有shoreForm的水沫,可以控制它的范围,由水面可视中心扩散到岸边,岸边的水沫最深。反射图提供了n.v下的fresnel亮度,它同shoreform是相反的作用,即没有水沫的地方是体现反射亮度的地方。

  • 至于移位贴图,主要作用是制造水沫和反射的交替效果,可以多次移位采样叠加来参与最终计算。

  • 至于波动,通过unity_WorldToObject计算wave,控制uv波动的频率、幅度。法线图采样两次混合之后的r、g通道作为提供给后续计算的normal方向。

  • 注:常用的_ProjectionParams实际是 Vector4f(device.GetInvertProjectionMatrix() ? -1.0f : 1.0f, projNear, projFar, invFar,一般用_ProjectionParams.g来参与屏幕坐标或深度坐标的计算。

Clone this wiki locally