问题标签 [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 投票
3 回答
4650 浏览

xna - Screen Space Ambient Occlusion XNA 3.1 示例中的 SSAOeffect.fx 在 XNA 4.0 中不起作用

我正在尝试将 Screen Space Ambient Occlusion 示例从 XNA 3.1 转换为 XNA 4.0。我已经修复了源代码中的所有问题,除了着色器文件中的这个奇怪问题。按照 Shawn Hargreaves 的博客的指导,我已经解决并修复了着色器的所有明显问题,但是当它编译时它使用了 620 个指令槽,这远远超过了 512 个指令槽的限制。这怎么可能在 XNA 3.1 中起作用,但在 XNA 4.0 中却不行?

3.1 文件副本的更改非常小,仅包括重命名几个函数。下面是当前形式的完整着色器源。对于减少编译到的指令槽数量的任何帮助,我将不胜感激。


0 投票
1 回答
14396 浏览

opengl - OpenGL GLSL SSAO 实现

我尝试根据此处找到的 R5 演示实现屏幕空间环境光遮蔽 (SSAO):http: //blog.nextrevision.com/ ?p=76

事实上,我尝试调整他们的 SSAO - 线性着色器以适应我自己的小引擎。

1)我计算视图空间表面法线和线性深度值。 我使用以下着色器将它们存储在 RGBA 纹理中:

顶点:

分段:

对于我的线性深度计算,我参考了:http ://www.gamerendering.com/2008/09/28/linear-depth-texture/

这是正确的吗?纹理似乎是正确的,但也许不是?

在此处输入图像描述

2) 实际的 SSAO 实现: 如上所述,原文可以在这里找到:http: //blog.nextrevision.com/ ?p=76

或更快:在pastebin http://pastebin.com/KaGEYexK

与原始纹理相比,我只使用 2 个输入纹理,因为我的一个纹理同时存储了 RGB 和线性深度作为 Alpha 的法线。

我的第二个纹理,随机正常纹理,如下所示: http ://www.gamerendering.com/wp-content/uploads/noise.png

我使用几乎完全相同的实现,但我的结果是错误的。

在详细介绍之前,我想先澄清一些问题:

1)ssao着色器使用projectionMatrix,它是逆矩阵。

由于它是通过正交投影渲染到屏幕对齐四边形上的后处理效果,因此 projectionMatrix 是正交矩阵。正确还是错误?

2) 具有组合的法线和深度纹理,而不是两个单独的纹理。

在我看来,这是 R5 实现与我的实现尝试之间的最大区别。我认为这应该不是一个大问题,但是,由于不同的深度纹理,这最容易引起问题。

请注意 R5_clipRange 看起来像这样

原来的:

我不得不承认我不理解代码片段。我的深度存储在我的纹理的 alpha 中,我认为这样做就足够了

正确还是错误?

0 投票
1 回答
328 浏览

ssao - 如何为 Horde3d 实现环境光遮蔽 (SSAO)?

我已经阅读了几篇关于 ssao 效应的博客文章,但到目前为止,我不知道从哪里开始我的初学者关于 GPU 编程的整个事情。有谁能够帮助我?

0 投票
1 回答
2551 浏览

three.js - 三.js 和 ssao

我无法设法将 ssao 与three.js 一起使用。我试图遵循 webgl_postprocessing_dof.html 示例:这是函数 initPostprocessing

和渲染功能:

也许我误解了什么。

0 投票
2 回答
2530 浏览

three.js - 渲染多个场景,只有 1 个使用 SSAO [Three.js]

在我对 Three.js 的持续试验中,我碰到了另一面似乎无法翻越的墙。

我正在尝试在具有 SSAO 后期处理效果的前景场景下方渲染背景场景(其中有地板)。背景场景不应应用任何后期处理。

我尝试了多种方法(使用面具等),但我似乎无法破解这一点。我看到的主要问题是 SSAO 场景的背景不透明,因此没有显示背景场景。我仍然不相信即使解决了透明度问题,事情也会按预期进行。

这就是没有SSAO后处理的情况:http: //jsfiddle.net/uJbPe/1/

这就是启用 SSAO 后处理的当前情况:http: //jsfiddle.net/7hfdC/6/

知道我做错了什么吗?

0 投票
1 回答
11246 浏览

three.js - 如何使用three.js SSAO 着色器?

我正在尝试使用 SSAO 后处理着色器渲染场景。没有任何错误,但我看不出使用和不使用 SSAO 通道渲染的场景之间有什么区别。我像这样初始化渲染器:

在渲染函数中,我像这样渲染场景:

正如我之前所说,一切似乎都运行良好,但屏幕上没有可见的 AO 效果。也许我只是使用了错误的参数值?我已经确保通过将 depthTarget 渲染到屏幕来更新深度通道。如果我打开 effectSSAO.uniforms.onlyAO.value,我会得到一个非常“平坦”的实际场景(包括纹理)的褐色渲染,但仍然没有 AO。有人可以给我一个建议下一步该尝试什么吗?

0 投票
4 回答
572 浏览

three.js - 仅在 MacBook Pro (Retina) 上的 Three.js 中带有 SSAO 的人工制品

我目前正在使用Three.js 示例中提供的 SSAO 着色器。除了我的 MacBook Pro Retina 之外,它在我的大多数机器上都能完美运行。直到几周前,MBP 才完美呈现 SSAO(可能在 MBP 上进行固件升级之后)。

就目前而言,MBP 渲染 SSAO 场景时,屏幕上会出现大量闪烁的伪影,如下所示:

场景代码在这里 在此处输入图像描述

在这里找到的场景 在此处输入图像描述

同样的代码在其他机器上也能完美呈现。我在其他 MBP 上看到过这个问题,所以我相信这不是一个问题。

除了固件更新之外,我没有在这个 MBP 上在它工作和出现伪像之间进行任何更改(代码是相同的)。

如果我移除 SSAO 效果,那么场景渲染完美。

有任何想法吗?

0 投票
0 回答
391 浏览

google-chrome - SSAO - 为什么只是边缘高亮

我目前正在尝试实施 SSAO。但我目前的结果似乎更像是一个边缘突出而不是真正的 ssao。请注意,我还没有模糊结果。但我想如果我模糊这条细线,它几乎会消失。我玩了不同的半径等,但没有任何改变。:(

这是我的线性深度纹理(注意远为 1000,这就是为什么这么暗)和我的正常纹理。

线性深度和法线

当前结果

最后是我的 ssao 着色器:http: //jsfiddle.net/Peters_Stuff/Bqx8X/

这就是我生成示例内核的方式:

0 投票
1 回答
2746 浏览

opengl - SSAO 随摄像机角度发生巨大变化

我一直在 OpenGL 中工作 SSAO。我决定在 OpenGL 中为我的延迟渲染器实现本教程中的 SSAO。不幸的是,我一直无法让它正常工作。SSAO 变暗的区域会根据相机的位置而发生很大变化。我知道当相机移动时 SSAO 的输出可能会有一些变化,但这比我在其他 SSAO 实现中观察到的要大得多。

这是片段着色器代码

positionFromDepth()功能:

occlude()功能:

我感觉问题可能出在positionFromDepth()函数中,除了我对渲染器的照明阶段使用相同的代码,效果很好(我认为)。我已经检查了这段代码一千次,但没有发现任何明显错误的地方。我尝试了 、 、 和 的各种值biasradius但这intenisty似乎scale不是问题。我担心我的法线或位置是错误的,所以这里有一些它们的屏幕截图:

重建位置: 在此处输入图像描述 和正常缓冲区: 在此处输入图像描述

我将包含遮挡缓冲区的图像,但问题仅在相机移动时才最明显,而图像无助于显示。

有谁知道这里有什么问题?

0 投票
1 回答
1594 浏览

opengl-es - SSAO 文物三

我真的很难解决我的 SSAO 着色器的问题,并且可以拼命地使用一些帮助。基本上,着色器似乎适用于某些对象,但在其他对象上看起来非常糟糕。从下面您可以看到球体看起来是正确的,但立方体似乎在法线上进行了不应该遮挡的遮挡。这是一个屏幕截图:

注意立方体的边缘

我的着色器基于本教程: http ://devmaster.net/posts/3095/shader-effects-screen-space-ambient-occlusion

在我的渲染链中,我渲染了 2 个渲染目标,这些目标稍后会在一些后期处理效果中使用。其中之一存储位置和深度。另一个存储法线。两个目标都是浮动纹理。

这是每个步骤的屏幕截图。

法线、深度、位置

这是我的位置/深度着色器:

顶点着色器:

片段着色器:

这是普通的着色器:

顶点着色器:

片段着色器:

这是我的 SSAO 片段着色器: