预计的网格水位细节

问题描述 投票:1回答:2

我正在尝试使用C ++和DirectX11实现海洋场景。目前,我有一个投影网格,Gerstner波浪和基本的阴影。我的问题是,当我将相机水平对准目标时,即使在高顶点数的情况下,也可以看到远处的水平面,投影网格变得不足。这些屏幕截图说明了问题:

shaded water surface

wireframe water surface

我知道问题的原因在于投影网格的概念(该网格在相机附近是详细的,距离相机很远),但是必须有最佳实践来解决此问题。

有什么想法吗?

c++ 3d geometry directx-11 hlsl
2个回答
1
投票

[Benedikt Bitterli和joojaa在这里回答了我的问题:https://computergraphics.stackexchange.com/questions/1681/projected-grid-water-horizon-detail

我现在选择了最懒的解决方案。我从顶点着色器中距相机的距离计算衰减因子,然后逐渐平整距离中的波。

功能:

float CalculateWaveAttenuation(float d, float dmin, float dmax)
{
    // Quadratic curve that is 1 at dmin and 0 at dmax
    // Constant 1 for less than dmin, constant 0 for more than dmax
    if (d > dmax) return 0.f;
    else
    {
        return saturate((1.f / ((dmin-dmax)*(dmin-dmax))) * ((d-dmax) * (d-dmax)));
    }
}

以下是结果:

shadedwireframe


0
投票

您应该尝试在片段着色器而不是顶点着色器中实现“基本着色”算法。


0
投票

您需要多少波才能看到此影像?通常,您能否提供一些有关如何调整Gerstner波浪参数以获得逼真的外观的提示?

© www.soinside.com 2019 - 2024. All rights reserved.