【问题标题】:Lens shader / Image disortion镜头着色器/图像失真
【发布时间】:2011-11-06 01:12:33
【问题描述】:

嗯,我目前有一个 3d 场景,上面只有一个带有纹理的四边形(绘画)。在这幅画和“相机”之间,我放置了另一个四边形,我想表现得像一个光学镜头:扭曲“下方”的图片 如何最好使用着色器和一些像素缓冲区来实现它?

【问题讨论】:

    标签: opengl graphics glsl effects


    【解决方案1】:

    这是我不久前发现的一个示例,它的功能与您想要的非常相似。 http://www.paulsprojects.net/opengl/refract/refract.html

    您可能需要稍微修改代码以实现您想要的反转效果,但这会让您走上正确的道路。

    编辑: 顺便说一句,您不需要第二张图像(倒置的小矩形)。只需使用单个背景图像和着色器。

    【讨论】:

    • “倒置的小矩形”只是着色器制作的第一步,旨在说明我将首先归档的内容
    【解决方案2】:

    在这幅画和“相机”之间,我放置了另一个四边形,我想表现得像一个光学镜头:

    这是一个棘手的问题。首先必须了解 OpenGL 是一种所谓的本地化渲染模型光栅化器,通俗地说,它就像画布上的铅笔和画笔一样工作。

    因此,它的工作方式与光线追踪器等全局场景表示渲染器形成了鲜明对比。光线追踪器实际上是在完全定义的场景上运行的,因此它可以轻松处理诸如折射之类的事情。

    确实,我们必须像艺术家对待工具一样对待 OpenGL。因此,您想要创建的任何光学“效果”都必须通过掌握 OpenGL 提供的工具可能的各种绘图技术来实现。要创建您想要的效果,您必须实施多阶段流程。

    对于折射,您首先将场景渲染为折射对象在所有方向上“看到”(创建动态立方体贴图),然后将此立方体贴图用作栅格化“折射”对象的输入数据,其中着色器用于确定照射到光栅化片段的光线的折射方向。

    顺便说一句:折射适用于任何其他类似的相互作用效果。阴影与 OpenGL 中的折射一样重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多