问题标签 [multisampling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4786 浏览

opengl - 如何将多重采样深度缓冲区解析为深度纹理?

我在将 msaa 深度缓冲区解析为深度纹理时遇到问题。我为我的颜色纹理和深度纹理创建了 glTexImage2d,并将它们绑定到“resolve”(非 msaa)帧缓冲区。然后我创建并绑定另一个帧缓冲区并创建我的多重采样渲染缓冲区(颜色和深度)。我知道要从多重采样渲染缓冲区中获取我的颜色纹理信息,我只是将写入缓冲区作为我的颜色纹理帧缓冲区,将读取缓冲区作为我的 msaa 帧缓冲区。我的问题是如何将多重采样深度缓冲区映射到深度纹理。

0 投票
1 回答
3926 浏览

opengl - 显式多重采样与 OpenGL 中的常规多重采样有何不同

我正在阅读这篇关于 MSAA 延迟着色的教程,来自 28byteslater.com。

它说在显式多重采样中我们可以访问特定的样本。

例如,我们不能对绑定到的常规纹理做同样的事情GL_TEXTURE_2D_MULTISAMPLE吗?

这是我之前用来访问单个样本的着色器代码(不使用显式多重采样):

我在显式多重采样中看到的唯一不同之处是它们texelFetchRenderbuffer()在着色器中使用并且纹理绑定到GL_TEXTURE_RENDERBUFFER_NV. 另外,如果我没记错的话,它不可能在着色器中使用 RenderBuffer,现在我们可以了吗?

0 投票
1 回答
1391 浏览

textures - 如何在 glsl 片段着色器中对原生分辨率纹理进行采样

我正在尝试使用 2d 纹理作为查找表来索引更大的纹理。然后将颜色值纹理映射到四边形。我遇到的问题是,当我对其进行采样时,较大的纹理似乎小于其原始分辨率。例如,我有一个大的 4k x 4k 纹理。查找纹理对大纹理的 1k x 1k 区域进行采样。然后它将结果纹理映射到填充视口的四边形,它也是 1k 宽 x 1k 高。我希望在纹理四边形和原始 4k x 4k 纹理的 1k x 1k 部分之间仍能看到 1:1 映射。但是,纹理四边形非常混叠。看起来好像 4k x 4k 纹理被缩减为 1k x 1k 纹理,而我的查找图对该纹理的 512 x 512 部分进行了采样。

换句话说,看起来好像我是从已调整大小以适应 1k x 1k 视口的纹理进行采样,而不是从原生 4k x 4k 纹理中采样。我为什么要解决这个问题有问题吗?

这是我的顶点着色器:

0 投票
1 回答
2165 浏览

r - 每个因子水平的随机分层样本

我有两个因素的数据集:Environments(4 个级别),Individuals(每个环境中 500 个)和响应变量YD。作为我分析的一部分,我必须通过以下方式从每个环境中随机抽取 100 个人:

  1. 在所有四个环境中相同的 100 个人(100 个人)
  2. 每个环境不同的 100 个人(100*4=400 个人)
  3. 2 个环境中相同的 100 个,其他 2 个环境中的另外 100 个(2*100=200 个人)

我已经使用几行代码解决了这个问题,但是我希望有人能帮助我生成一个 R 函数来做到这一点,这在其他情况下将非常有用。

这是具有类似结构的示例数据集:

0 投票
2 回答
14660 浏览

c++ - 如何在 OpenGL FBO 中使用多重采样

我正在尝试为 FBO 启用多重采样和 alpha-to-coverage。使用默认的帧缓冲区,我所要做的就是调用glEnable(GL_MULTISAMPLE)glEnable(GL_SAMPLE_ALPHA_TO_COVERAGE). 但是,我无法使用我自己的 FBO 达到相同的效果。

我的目标:将场景绘制到 FBO,就像将场景绘制到具有上述属性的默认帧缓冲区一样。从那里我希望能够将图像用作未来通过着色器的纹理。

这有效:用于制作没有多重采样/alpha 覆盖、1 个颜色附件、1 个深度附件的 FBO 的代码:

这行不通。尝试制作多采样 FBO 的代码:

我已经尝试过浏览 OpenGL wiki,尽管它不完整(各种未完成的标题使它看起来不专业)。glGetError从不抱怨。我已经尝试过解决这个问题,但我要么得到黑屏,要么得到一个满是垃圾像素的屏幕。

主要问题:为了让多重采样和 alpha-to-coverage 与 FBO 一起工作,我需要考虑/更改哪些内容以及在何处(FBO 创建、纹理、着色器)?

0 投票
1 回答
451 浏览

c++ - 使用带有多重采样延迟渲染中断的 sampler2DShadow

如标题所述,使用 sampler2DShadow 会导致我的多重采样 FBO 的光照着色器出现错误,但由于使用标准延迟渲染设置的配置非常相似,但没有多重采样,我无法检测到该问题,这工作正常。

openlGL 中的 sampler2DShadow 和多重采样是否存在兼容性问题,或者我应该使用一些替代方案?

着色器编译良好。

代码运行良好,直到我运行这一行:

并检索结果。然后我得到 GL_INVALID_OPERATION。

阴影贴图来自定向光(深度贴图有效且可见)并使用 GL_COMPARE_R_TO_TEXTURE,设置为标准纹理 (GL_TEXTURE_2D)。

多重采样延迟 FBO 纹理使用 GL_TEXTURE_2D_MULTISAMPLE。

我正在使用 glsl 330(openGL 3.3 核心配置文件)。

更新

我认为问题与从多采样片段着色器中的位置图获取世界位置有关。

标准方式:

多采样方式:

(我省略了其他采样器。)

我猜我越界了,这在尝试访问 sampler2DShadow 时会引发错误(pCoord 是使用 worldPos 计算的)。

现在要弄清楚如何让这个多重采样的 worldPos 得到与标准方式相同的结果???

标准方式 (mDepthVP = mat4 (light's depth view prog):

0 投票
1 回答
1904 浏览

opengl - SDL 多重采样和 OpenGL

为了启用多重采样,我在我的项目中使用以下代码:

我也需要打电话glEnable(GL_MULTISAMPLE);吗?

如果我不调用它,我看不出有什么区别。

0 投票
0 回答
2344 浏览

qt - Multisampling using Qt

For some time I was trying to enable multisampling on QGLWidget in order to smooth endges of cuboids that I render but with no success. Here are the code parts that do the work.

1)I am passing a specified format to constructor of GLWidget (which inherits QGLWidget) in order to enable multisampling and set number of samples

GLWidget *widget is a member of mainwindow class.

2) I am enabling multisampling in initializeGL() method and test if multisampling works

Even though setSamples is set to 4 qDebug prints

Nothing actually happens the cuboids still have jagged edges, lines are not smooth as well

3) Here is how cuboids are rendered

GL_LINE_LOOP is used to create frames around cuboids and GL_QUADS for cuboid faces

I am working under Linux Mint, using Radeon HD 7790.

0 投票
1 回答
2197 浏览

c++ - 在 Opengl ES 2 (ios) 中启用抗锯齿

我在 IOS 中启用多重采样时遇到问题。

我指的是这个指南

如果您向下滚动到

清单 4-5 创建多重采样缓冲区

你可以清楚地看到我们需要(当然)一个解析缓冲区。但是,它在第​​一步中没有显示任何类型的初始化。我只需要

我应该什么时候初始化我的帧缓冲区对象?

另外,我不清楚最后一步。

我到底应该在哪里做这个?它完成了什么?我猜在我的 fbo 和 vbo 的抽奖电话之后,但我不太确定。

有没有人可以找到某种示例项目的链接?我用谷歌搜索但我找不到任何:(

最后,我使用浮动纹理来渲染 HDR 图像。我必须在此指令中保留 GL_RGBA8_OES 吗?

如果此时我已经渲染到纹理,我还不是很清楚。

提前致谢!

0 投票
0 回答
110 浏览

ios - 为什么在我的应用上启用多重采样会使其渲染速度更快?

我处于一个非常尴尬的情况,当我在我的 iOS 应用程序中启用多重采样时,我看到性能显着提升。显然我知道多重采样会降低性能,但这一次它的行为与我的预期完全相反。

我通过将 GLKView.drawableMultisample 设置为 GLKViewDrawableMultisample4X 来启用多重采样。我清楚地看到它提供的抗锯齿效果,所以我没有错误地混淆这两种状态。

当我启用多重采样时,我可以获得两倍的帧速率,有时甚至更高。首先,我认为 XCode 中显示的 FPS 可能是错误的。然后我添加了自己的 FPS 计算代码,得到了相同的结果。我还注意到,在启用多重采样、三角形数量完全相同、着色器相同的情况下,Tiler Utilization 从 ~4-5% 上升到 ~12-15%。

这使得认为其他地方可能存在错误。控制台中没有任何内容(没有警告或错误)。我完全没有线索。有没有人见过这个?

谢谢