【问题标题】:Shader-coding: nonlinear projection models着色器编码:非线性投影模型
【发布时间】:2014-04-26 15:29:04
【问题描述】:

据我了解,标准投影模型在相机前面放置一个假想的网格,并且对于场景中的每个三角形,确定其 3 个角投影到哪个 3 个像素上。为这些点中的每一个确定颜色,然后片段着色器使用插值填充其余部分。

我的问题是:是否可以控制此投影模型?例如,创建我自己的自定义扭曲 uv-grid?甚至只是提供我自己的算法:

xyPixelPos_for_Vector3( Vector3 v ) {...}

我在 Unity3D 中工作,所以我认为这限制了我使用 cG 或 openGL。

我曾经写过一个 GLES2 着色器,但我不记得曾经执行过任何类型的“光线命中四边形”类型测试来解析空间中特定 3D 点的像素位置。

【问题讨论】:

    标签: unity3d shader projection


    【解决方案1】:

    我将假设您想要基于由顶点定义的 3d 图元来渲染 3d 图像。这不是使用 OpenGL 渲染图像的唯一方法,但它是最常见的。您描述的技术听起来更像是光线追踪。

    OpenGL 的典型工作原理:

    我不会说 OpenGL 创建了一个虚构的网格。相反,它所做的是获取每个顶点的位置,并使用线性代数(矩阵)将它们转换为不同的空间。

    如果你想开始玩这个,最好阅读一下矩阵,了解显卡在做什么。

    您可以通过制作顶点着色器轻松开始扭曲顶点的位置。但是,涉及一些设置。请参阅 Lighthouse 教程 (http://www.lighthouse3d.com/tutorials/glsl-tutorial/hello-world-in-glsl/) 以开始使用它!您还需要阅读他们关于照明的教程 (http://www.lighthouse3d.com/tutorials/glsl-tutorial/lighting/),以创建一个包含照明模型的功能齐全的顶点着色器。

    谢天谢地,一旦设置了着色器,您就可以根据自己的喜好扭曲整个场景。请记住在正确的“空间”中进行扭曲。世界坐标与眼睛坐标有很大不同!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      相关资源
      最近更新 更多