计算每个像素(2D 图像)的法线向量

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

我正在尝试了解 Core Image Shaded Material 滤镜的工作原理,并尝试使用 Metal 复制其行为。

来自“着色材质”滤镜文档:

该过滤器[...]计算每个像素的法向量。然后,它使用该法线向量在输入着色图像中查找该方向的反射颜色。

然后使用法向量来计算着色图像的查找坐标:

输入着色图像包含半球的图片,它定义了表面的着色方式。法向量的查找坐标是:

(normal.xy + 1.0) * 0.5 * vec2(shadingImageWidth, shadingImageHeight)

image

假设我有一个高度场纹理,如何计算每个像素的法线向量?我不明白如何将 RGB 像素转换为可在上面的公式中使用的 2 分量法向量。

swift graphics metal core-image normals
1个回答
0
投票

我假设法线是通过计算高度场的图像梯度来近似的。

我没有对此进行测试,但看起来您可以使用 CIGaborGradients 过滤器 来计算每个像素的梯度向量,这应该相当于在高场上计算时的法线。

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