gpt4 book ai didi

glsl - gl_Position.w 在 Vulkan 中的作用是什么?

转载 作者:行者123 更新时间:2023-12-01 10:21:30 27 4
gpt4 key购买 nike

从 GLSL 顶点着色器输出的变量 gl_Position 必须有 4 个坐标。在 OpenGL 中,似乎 w 坐标用于缩放矢量,通过将其他坐标除以它。 Vulkan中w的作用是什么?

最佳答案

Vulkan 中的着色器和投影与 OpenGL 中的行为完全相同。深度范围(OpenGL 中的 [-1, 1],Vulkan 中的 [0, 1])或坐标系原点(OpenGL 中的左下角,Vulkan 中的左上角)存在细微差异,但原理是完全一样的。硬件仍然相同,它在 OpenGL 和 Vulkan 中以相同的方式执行计算。

4 分量向量有多种用途:

  1. 可以进行不同的变换(平移、旋转、缩放)以相同的方式表示,使用 4x4 矩阵。
  2. 投影也可以用 4x4 矩阵表示。
  3. 可以将多个转换组合成一个 4x4 矩阵。
  4. 您提到的 .w 组件在透视投影期间使用。

所有这些我们都可以用 4x4 矩阵完成,因此我们需要 4 分量向量(因此它们可以乘以 4x4 矩阵)。同样,我写这篇文章是因为上述规则同时适用于 OpenGL 和 Vulkan。

因此,对于 gl_Position 变量的 .w 组件而言,它在 Vulkan 中完全相同。它用于缩放位置向量 - 在透视计算(投影矩阵乘法)期间,原始深度由原始 .w 组件修改并存储在 .z 组件中gl_Position 变量。此外,原始深度也存储在 .w 组件中。之后(作为固定功能步骤)硬件执行透视除法并将存储在 gl_Position 变量中的位置除以其 .w 组件。

在正交投影中,硬件执行的步骤完全相同,但用于计算的值不同。所以透视分割步骤仍然由硬件执行,但它什么也不做(位置被 1.0 潜水)。

关于glsl - gl_Position.w 在 Vulkan 中的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51318119/

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