gpt4 book ai didi

hlsl - 着色器中的高度图不起作用

转载 作者:行者123 更新时间:2023-12-02 05:17:35 25 4
gpt4 key购买 nike

我正在尝试实现基于 GPU 的几何裁剪贴图,但在将简单的高度图应用于我的地形时遇到问题。对于高度图,我使用表面格式为“single”的简单纹理。我从 Catalinz's XNA blog 获取了纹理.

我想做的只是从顶点世界坐标处的纹理获取单个浮点值,并将该值应用于顶点的 Y 值。我通过着色器应用高度图,因为代码中没有可以应用它的固定网格。到目前为止我尝试过使用 tex2Dlod 函数,但似乎没有输出或输出为 0。Direct X 顶点着色器的代码如下所示:

float4 worldPos = mul(float4(pos.x,0.0f,pos.y, 1.0f), worldMatrix);
float elevation = tex2Dlod(HeightmapSampler, float4(worldPos.x, worldPos.z,0,0));
worldPos.y = elevation * 128;

其中 HeightmapSampler 是高度图纹理的点镜采样器。这是输出,实际上我没有得到任何海拔:

Screenshot

这是我正在使用的高度图:

Heightmap

最佳答案

忘记了纹理坐标以纹理像素为单位,因此将其与纹理像素相乘即可修复它。

float elevation = tex2Dlod(HeightmapSampler, float4(worldPos.x*texel, worldPos.z*texel,0,0));

关于hlsl - 着色器中的高度图不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12243749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com