我想制作软边水。所以我制作一个渲染目标来保持场景的深度,然后我渲染水几何。
让水alpha = ( SceneDepth - WaterDepth ) * Scale
非常感谢!
答案 0 :(得分:1)
我最近一直在研究类似的问题。
我使用透明度软化水的边缘。
为了利用水的深度来确定alpha值,我使用HLSL smoothstep和clamp函数返回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);