当前位置: 首页 > 知识库问答 >
问题:

纹理采样:根据LOD值计算偏差值

姬正文
2023-03-14

在GL ES 2.0 Functions texture 2DLod中片段着色器不可用。我需要移植GLSL着色器。

在GL ES 2.0中,我只能使用纹理2D(采样器2D采样器、向量2坐标、浮动偏差)

告诉我如何计算相当于已知值LOD(详细程度)的偏差值?

//Example GLSL:
float lod=u_lod;
textureLod(sampler, (uInverseViewMatrix * vec4(r, 0.0)).xy, lod);

//I need GL ES 2.0:
float lod=u_lod;
float bias=?  <-----calc bias from lod
texture2D(sampler,(uInverseViewMatrix * vec4(r, 0.0)).xy,bias)

共有1个答案

苏宏逸
2023-03-14

你想要的是不可能的。

LOD偏差就是:偏差。它被添加到LOD中,LOD是根据texture2D自动计算的。

textureLOD不是这样工作的。它选择一个特定的LOD,它不是基于任何人自动计算的任何内容。

唯一的方法是自己执行自动LOD计算,然后尝试计算该值与实际需要的LOD之间的偏差,然后使用纹理2D应用该偏差。我会告诉你怎么做,但这需要函数dFdxdFdy,它们不在OpenGL ES 2.0中。所以你不能。

但是不要感到难过,因为即使你能,它也不会起作用。另一个问题是LOD偏差被限制在特定范围内。请注意,您在ES 2.0规范中找不到这一点,但没关系;您也找不到任何关于如何将该偏差应用于为mipmap计算的lambda的语言。是的,真的;继续搜索它。您得到的最接近的是GLSL ES规范,但OpenGL ES规范没有说明如何将偏差应用于lambda。

所以是的,这是不可能的。

 类似资料:
  • 我对如何将纹理绑定到GLSL中的插槽有点困惑。以下是我的着色器: 当我设置矩阵时,我需要查询统一位置,然后手动设置该位置的值,执行如下操作: 然而,据我所知,我不需要这样做来初始化我的纹理采样器。在设置时,我似乎只需要这样做: 所以,我的问题是,为什么我不需要对纹理进行与矩阵相同的处理?OpenGL运行时如何“知道”我绑定的纹理应该是我定义的采样器?如果我想拥有多种纹理,我该怎么做呢?

  • 我的数据与此类似: 我需要计算基于名称组的差异列的标准偏差。 我试过了 和 但两者都为传递给的变量提供了KeyError。我试图用以下方法解决它: 但错误仍然存在。 提前谢谢。

  • 问题内容: 问题: 我想做的是通过连续减少基础数字逐步减少a中的值。 我不知道的术语这个-我想我可以做的东西和,但我觉得我自己领先于白费力气有… 起始代码: 所需的输出: 理由: 从-的底数开始-中的每个值都减去余量,这是津贴额本身,因此发生以下步骤: 从100开始,我们可以将其完全删除,因此变为,我们现在保留为 下一个值是并且我们仍然可用,因此它再次变为并且我们已经离开。 下一个值是-我们只剩下

  • 主要的cpp 附言 输入布局(顶点属性)工作正常。TexIndex已正确传输。1.0f和0.0f 但问题是 //片段着色器 两者都返回相同的纹理颜色,但它实际上与test1的纹理不同。png和test2。巴布亚新几内亚。我的代码有什么问题? 我试着跟随@rabbi76的答案 已应用颜色,但仍从同一纹理采样。看起来有点像glActiveTexture(i);没用。 ps.test1。png和test

  • 问题内容: 使用Python,假设我正在运行已知数量的项目,并且能够计时处理每个项目要花费的时间,以及运行所花费的总时间以及到目前为止所处理项目的数量。我目前正在计算飞行中的平均值,但是如果说单个项目花费的时间特别长(几秒钟而不是几毫秒),则可能会导致偏差。 我想展示一个运行中的标准偏差。如何在不保存每个记录的情况下执行此操作? 问题答案: 我使用的是Welford方法,它给出的结果更准确。该链接

  • 我尝试使用< code>rowSds()来计算每一行的标准偏差,这样我就可以选择具有高标准偏差的行来绘制图表。 我的数据帧名为<code>xx 我试图计算每一行的标准偏差,并辅助sd列名: 我得到这个错误: 知道在计算SD时如何省略吗?我的语法正确吗?