我想做软水。所以我制作了一个渲染目标来保持场景的深度,然后我渲染水几何。
并让水alpha = ( SceneDepth - WaterDepth ) * Scale
看着下面这张图的结果,水的边缘变软了,但看起来很奇怪,就像梯子一样。
那么怎么处理呢?
非常感谢!
我想做软水。所以我制作了一个渲染目标来保持场景的深度,然后我渲染水几何。
并让水alpha = ( SceneDepth - WaterDepth ) * Scale
看着下面这张图的结果,水的边缘变软了,但看起来很奇怪,就像梯子一样。
那么怎么处理呢?
非常感谢!
我最近一直在研究类似的问题。
我使用透明度来软化水的边缘。
为了利用水的深度来确定 alpha 值,我使用 HLSL平滑步长和钳位函数返回介于 0.75f 和 1.0f 之间的不透明度值:
// colour can be whatever your lighting equations compute
float3 colour = (r, g, b);
if ( SeaDepth <= 0.2f )
discard;
float opacity = clamp(
smoothstep( 0.f, 12.f, SeaDepth ),
.75f, 1.f
);
return float4(colour.xyz, opacity);