gpt4 book ai didi

c++ - 为什么我们应该在 OpenGL 管道的片段阶段进入眼空间坐标?

转载 作者:可可西里 更新时间:2023-11-01 16:36:34 25 4
gpt4 key购买 nike

我目前正在编写一个小型 3D 引擎,我想知道为什么我应该在片段着色器中进入眼空间坐标。为此,我必须将我的相机矩阵放在一个制服中以转换眼睛坐标中的光线位置,以及一个 camera_normal 矩阵以将光线方向放在眼睛坐标中。

为什么每个人都使用这些坐标?我真的没有看到任何优势。

最佳答案

使用 eye-space 有几个原因:

  1. 很方便。这是一个存在的定义明确的空间,并且您无论如何都要在转换位置的过程中进行计算。
  2. 它具有与世界空间相同的比例,但没有世界空间存在的问题。眼睛空间总是(相对)接近于零(因为眼睛在 0 处),因此它是具有显式变换矩阵的合理空间。比例很重要,因为您可以提供在世界空间中计算的距离(如光衰减项)。眼睛空间中的距离不会改变。
  3. 无论如何,您都需要将其转换为线性空间。在像投影后空间这样的非线性空间中进行照明,尤其是衰减时……很棘手。所以你必须在某种线性空间中提供法线和位置,所以它也可能是眼睛空间。
  4. 它需要最少的转换。眼睛空间是投影变换之前的空间。如果您必须反向转换为线性空间(例如延迟渲染),眼睛空间是需要最少操作的空间。

关于c++ - 为什么我们应该在 OpenGL 管道的片段阶段进入眼空间坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6671968/

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