问题标签 [ssao]

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 回答
221 浏览

webgl - 多次通过SSAO边界神器

我正在使用 WebGL 中的多个通道来对我的渲染应用一些视觉增强。

我正在乒乓球两个纹理(取自这里:WebGL Image Processing Continued),这基本上是我的工作流程:

  1. 绘制几何图形并将深度值存储在纹理缓冲区中
  2. 应用 SSAO 通行证(基于来自Rabbid76的这个 Fiddle
  3. 最后,我将纹理渲染到屏幕上

现在,我无法理解为什么最终图像的某些部分周围有黑色边框。我试图微调一些 SSAO 参数,但我无法摆脱那个伪影,所以,只是猜测,我现在相信这个黑色边框是由于我的纹理缓冲区的错误混合设置造成的。

这实际上是深度通道中的代码:

我也试过这样:

...但不会导致我得到任何结果。

在下图中,这件神器显然是一条围绕着斯坦福龙的细黑线:

SSAO

由于我完全迷失了这个问题,有人可以指出我正确的方向吗?

我的问题:我需要绘制一个具有透明背景的几何图形 - 这是正确的混合模式,当渲染到后台缓冲区并乒乓球两个纹理以应用多种效果时?

0 投票
2 回答
1227 浏览

opengl-es - SSAO 深度后处理期间的抗锯齿

我需要用非常精细的细节来增强一些机械部件的视觉感知,所以我现在正在玩 screen.space 环境光遮蔽的不同实现。

到现在为止,我一直在前向渲染中将我的几何图形直接绘制到屏幕上,方法是使用gl.TRIANGLES双倍的画布分辨率和抗锯齿功能,例如,假设我的画布样式是 800x600 像素,然后我的画布宽度/高度设置为 1600x1200 . 只有将屏幕抗锯齿与如此高分辨率一起使用,我才能获得所需的视觉质量。

通过使用渲染缓冲区,由于缺少抗锯齿,即使以双倍分辨率渲染,我也无法接近所需的质量。我尝试在额外的后处理步骤中实现许多不同的抗锯齿技术,但无论如何我无法获得干净、流畅的线条。这是我的意思的一个示例:查看图像底部的长而略微旋转的部分。

渲染缓冲区中缺少抗锯齿

有什么方法可以通过在屏幕空间后处理期间绘制后缓冲区来获得干净、抗锯齿的线条?任何关于其他策略/技术的额外提示将不胜感激。

是否有人成功实施——仅举一个例子——FXAA 或类似的东西,在 SSAO 过程中,以获得平滑的抗锯齿长对角线,没有锯齿?


这是与上图相关的片段着色器:

编辑:

下面我将使用 John Chapman 在这个伟大的SSAO 教程中描述的 SSAO 技术。

左边是四倍分辨率,右边是全分辨率,带有分离的高斯模糊。

比较

请注意,使用一些经典的更“有机”或“弯曲”的模型(例如茶壶斯坦福龙快乐佛陀)不会令人不安。这些人工制品在规则的几何长物体、典型的机械或建筑形状中很明显。

有没有什么方法可以增强深度感知,通过保持质量和保留高频细节,而不使用四倍的画布分辨率?

编辑2:

最终结果在视网膜显示器上的全画布尺寸下看起来非常好,例如在 iPad 上,它的分辨率为每英寸 264 像素。但是,锯齿状线条在桌面显示器上清晰可见且令人不安,通常为 70 或 92 DPI。

我发现了这篇文章:来自 Íñigo Quílez 的多分辨率环境光遮蔽,其中还包含一些关于高频遮蔽的提示 - 程序遮蔽以增强微小细节,但我无法理解这是否也适用于直线几何形状。有人已经对此进行了实验吗?

编辑3:

这是迄今为止我找到的关于这个主题的最有用的参考资料:GPU Gems 2中的Fast Prefiltered Lines。有人已经将这里描述的技术与 SSAO 一起实现了吗?

0 投票
0 回答
264 浏览

java - LibGDX 3d 实现 SSAO

有没有办法在 LibGDX 的 3d 场景中实现 SSAO?

我的项目扩展了 ApplicationAdapter 并使用 ModelBatch 来呈现 ModelInstances。

谢谢

0 投票
1 回答
316 浏览

c++11 - Having some wierd artifacting and odd triangle shadows with SSAO Opengl Implmentation

I have been working on implementing SSAO into the engine I am writing, and a major problem has arrived. Everything was going quite well until I realized that my SSAO was not working correctly. There are two things that I can find that are wrong with my SSAO and I am unable to figure out how to remedy them.

My shader code is at the end of this post, before that I will be describing the problems with images.

Firstly, as seen in the below screenshot, there are some wierd artifacts showing up based on the angle of viewing. So far I am assuming the way I am implementing the View matrix is wrong. I have done a lot of research about how this all should work and I understand it in theory. However, in practice things are not changing as I would expect. Strange artifacting on ssao shader.

Secondly, whenever I get close to the blocks, I get very odd triangle shadows that appear around the edges of the screen, as shown in the next screenshot. [![Odd triangle shadows around screen][2]][2]

These two images show the main issues I am having. I am using a deferred type Renderer to render the geometry to a few textures (Position, normals, color) the importing these textures and using them to manipulate the final output. The first two codeblocks are the vertex and fragment shaders respectively for translating the geometry to textures.

Vertex Shader #version 430 core

Fragment Shader

As you can see, I am translating everything from world space to view space before I write them to the textures. I would much prefer to keep them in world space but when I do, the entire screen looks white with occasional hints of shadows, but the background swaps between white and black depending on camera angle.

Next are my SSAO shaders, In order to implement these I followed a few tutorials, so they probably look familiar. If the tutorial was correct, the next two shaders should work correctly but they are not.

Vetex shader that just creates a quad, and applies the final texture to it. #version 430 core

Fragment shader for SSAO

That is all the information I can think to provide initially. Any help you guys can provide would be immensely helpful! If any other information would help, please let me know and I will be happy to provide.

EDIT: I figured out that one of my issues was the way that I was accessing the 1D texture above. This made all the kernel samples very strange. I fixed that and now I am getting something like the image below, where half the screen is darker and half the screen is lighter on one side and darker on the other. The contrast line moves with the camera. Wierd line

Any help with this issue would be immensely appreciated!

0 投票
1 回答
324 浏览

opengl - SSAO 和阴影映射 | 阴影不适用于 SSAO

我们引擎中的 SSAO 似乎工作正常,但是我无法让 SSAO 与阴影贴图一起工作。这是应用阴影时我当前遇到的错误的屏幕截图....

应用了阴影
应用了阴影

而且,根据相机视图和相机位置,有时会出现随机阴影......

取决于相机视图和位置的随机阴影
取决于相机视图和位置的随机阴影

这是gbuffer顶点着色器..

这是灯光着色器..

纹理在光通道中绑定如下..

最后,这里是lightSpaceMatrix的计算。。

任何想法为什么会发生这种情况?如何让阴影与 SSAO 一起使用?

任何帮助深表感谢。

0 投票
1 回答
181 浏览

opengl - SSAO 工作但有一个奇怪的红色覆盖

ssao 可以工作,但是由于 ssao 只使用红色通道,所以会有一个奇怪的红色覆盖,当然这如下图所示。

红色 SSAO 问题
红色 SSAO 问题

但是,当我执行glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 红色消失了,但 ssao 也消失了。

执行 glClear() 后的结果。没有SSAO了
执行 glClear() 后的结果。 没有SSAO了

这是您需要的所有代码...

几何密码..

SSAO 密码..

GBuffer 顶点着色器..

GBuffer 片段着色器...

光影...

需要更多代码只需询问。感谢您提供的任何帮助

编辑 问题已修复,是由于立方体贴图反射,现在一切正常

0 投票
1 回答
276 浏览

three.js - 平滑网格上的 Three.js SSAO 产生平面阴影结果

我正在使用 Three.js r97,在我的场景中,我有一个使用 BufferGeometry 和有效法线的网格。当我设置 material.flatShading = false 时,我看到一个平滑的网格,但是当我将 SSAO 后处理应用到这个网格时(https://threejs.org/examples/webgl_postprocessing_ssao.html),我可以看到网格三角形,好像它的原始材质 flatShading 设置为 true。我是否缺少可以设置(在深度材质或 SSAO 着色器本身中)的参数以使 SSAO 不显示原始网格三角形,但要平滑?SSAOPass 使用的 depthMaterial 默认具有 flatShading = false ,但在这种情况下似乎并不重要。请看下面的图片。如果需要,我很乐意提供更多细节,因为我已经在这个问题上停留了好几天,现在甚至不确定它是否可以完成,除了通过使用半径、aoClamp 和 lumInfluence 参数使 SSAO 三角形不那么微妙.

网格 - 平面着色(material.flatShading = true): 在此处输入图像描述

网格 - 平滑着色(material.flatShading = false): 在此处输入图像描述

网格 - 平滑着色 + SSAO: 在此处输入图像描述

0 投票
0 回答
1451 浏览

c++ - OpenGL:屏幕空间环境光遮蔽 (SSAO)

我按照屏幕空间环境光遮蔽 (SSAO) 的教程进行操作,但似乎有些东西没有按应有的方式工作。

在此处输入图像描述

正如您从屏幕截图中看到的,在环境光遮蔽最明显的较暗区域中有一些图案。

我怀疑示例内核有问题,但我严格按照教程进行操作。唯一的区别是我还考虑调整窗口大小和相机的移动。

这些是相关的代码片段。

SSAO 顶点着色器

SSAO 片段着色器

内核配置

==================== 更新====================

我想我找到了问题所在。调整窗口大小时,我没有更新 NoiseScale。

这是结果:

在此处输入图像描述

但是现在性能很差。使用 64 个样本内核和 4x4 噪声矩阵,我得到 3-4 fps 的帧速率。

我怎样才能提高性能?谢谢!

0 投票
1 回答
558 浏览

opengl - OpenGL - 奇怪的 SSAO 工件

我按照Learn OpenGL中的教程来实现 Screenspace Ambient Occlusion。除了窗口顶部和底部的一个奇怪的工件外,大部分情况看起来都还不错。

问题在移动相机时更为明显,当图像的顶部似乎印在底部时,反之亦然,如本视频所示。

在此处输入图像描述

当站在靠近墙壁并上下看时,伪影会恶化,所以可能是 Znear 值起作用?与其他演示相比,我的场景的规模确实很小,Znear 和 Zfar 是0.01f并且1000所示走廊的宽度约为1.2f.

我已经阅读了常见的 SSAO 工件,但没有发现任何类似的东西。

0 投票
0 回答
53 浏览

c++ - 如何将 SSAO 应用于天空盒?

根据我对 OpenGL 的有限经验。
我想将 SSAO 应用于天空盒,但 nanosuit(我使用的 OBJ 对象)不显示蚂蚁纹理(颜色)。我的错误例子

我在网上找了很久。但是没有用。请帮助或尝试提供一些想法如何实现这一目标。 
这是我的一些代码:
main.cpp中的一些

提前致谢。