问题标签 [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.
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 文件副本的更改非常小,仅包括重命名几个函数。下面是当前形式的完整着色器源。对于减少编译到的指令槽数量的任何帮助,我将不胜感激。
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 中,我认为这样做就足够了
正确还是错误?
ssao - 如何为 Horde3d 实现环境光遮蔽 (SSAO)?
我已经阅读了几篇关于 ssao 效应的博客文章,但到目前为止,我不知道从哪里开始我的初学者关于 GPU 编程的整个事情。有谁能够帮助我?
three.js - 三.js 和 ssao
我无法设法将 ssao 与three.js 一起使用。我试图遵循 webgl_postprocessing_dof.html 示例:这是函数 initPostprocessing
和渲染功能:
也许我误解了什么。
three.js - 渲染多个场景,只有 1 个使用 SSAO [Three.js]
在我对 Three.js 的持续试验中,我碰到了另一面似乎无法翻越的墙。
我正在尝试在具有 SSAO 后期处理效果的前景场景下方渲染背景场景(其中有地板)。背景场景不应应用任何后期处理。
我尝试了多种方法(使用面具等),但我似乎无法破解这一点。我看到的主要问题是 SSAO 场景的背景不透明,因此没有显示背景场景。我仍然不相信即使解决了透明度问题,事情也会按预期进行。
这就是没有SSAO
后处理的情况:http: //jsfiddle.net/uJbPe/1/
这就是启用 SSAO 后处理的当前情况:http: //jsfiddle.net/7hfdC/6/
知道我做错了什么吗?
three.js - 如何使用three.js SSAO 着色器?
我正在尝试使用 SSAO 后处理着色器渲染场景。没有任何错误,但我看不出使用和不使用 SSAO 通道渲染的场景之间有什么区别。我像这样初始化渲染器:
在渲染函数中,我像这样渲染场景:
正如我之前所说,一切似乎都运行良好,但屏幕上没有可见的 AO 效果。也许我只是使用了错误的参数值?我已经确保通过将 depthTarget 渲染到屏幕来更新深度通道。如果我打开 effectSSAO.uniforms.onlyAO.value,我会得到一个非常“平坦”的实际场景(包括纹理)的褐色渲染,但仍然没有 AO。有人可以给我一个建议下一步该尝试什么吗?
three.js - 仅在 MacBook Pro (Retina) 上的 Three.js 中带有 SSAO 的人工制品
我目前正在使用Three.js 示例中提供的 SSAO 着色器。除了我的 MacBook Pro Retina 之外,它在我的大多数机器上都能完美运行。直到几周前,MBP 才完美呈现 SSAO(可能在 MBP 上进行固件升级之后)。
就目前而言,MBP 渲染 SSAO 场景时,屏幕上会出现大量闪烁的伪影,如下所示:
同样的代码在其他机器上也能完美呈现。我在其他 MBP 上看到过这个问题,所以我相信这不是一个问题。
除了固件更新之外,我没有在这个 MBP 上在它工作和出现伪像之间进行任何更改(代码是相同的)。
如果我移除 SSAO 效果,那么场景渲染完美。
有任何想法吗?
google-chrome - SSAO - 为什么只是边缘高亮
我目前正在尝试实施 SSAO。但我目前的结果似乎更像是一个边缘突出而不是真正的 ssao。请注意,我还没有模糊结果。但我想如果我模糊这条细线,它几乎会消失。我玩了不同的半径等,但没有任何改变。:(
这是我的线性深度纹理(注意远为 1000,这就是为什么这么暗)和我的正常纹理。
最后是我的 ssao 着色器:http: //jsfiddle.net/Peters_Stuff/Bqx8X/
这就是我生成示例内核的方式:
opengl - SSAO 随摄像机角度发生巨大变化
我一直在 OpenGL 中工作 SSAO。我决定在 OpenGL 中为我的延迟渲染器实现本教程中的 SSAO。不幸的是,我一直无法让它正常工作。SSAO 变暗的区域会根据相机的位置而发生很大变化。我知道当相机移动时 SSAO 的输出可能会有一些变化,但这比我在其他 SSAO 实现中观察到的要大得多。
这是片段着色器代码
positionFromDepth()
功能:
和occlude()
功能:
我感觉问题可能出在positionFromDepth()
函数中,除了我对渲染器的照明阶段使用相同的代码,效果很好(我认为)。我已经检查了这段代码一千次,但没有发现任何明显错误的地方。我尝试了 、 、 和 的各种值bias
,radius
但这intenisty
似乎scale
不是问题。我担心我的法线或位置是错误的,所以这里有一些它们的屏幕截图:
重建位置: 和正常缓冲区:
我将包含遮挡缓冲区的图像,但问题仅在相机移动时才最明显,而图像无助于显示。
有谁知道这里有什么问题?
opengl-es - SSAO 文物三
我真的很难解决我的 SSAO 着色器的问题,并且可以拼命地使用一些帮助。基本上,着色器似乎适用于某些对象,但在其他对象上看起来非常糟糕。从下面您可以看到球体看起来是正确的,但立方体似乎在法线上进行了不应该遮挡的遮挡。这是一个屏幕截图:
我的着色器基于本教程: http ://devmaster.net/posts/3095/shader-effects-screen-space-ambient-occlusion
在我的渲染链中,我渲染了 2 个渲染目标,这些目标稍后会在一些后期处理效果中使用。其中之一存储位置和深度。另一个存储法线。两个目标都是浮动纹理。
这是每个步骤的屏幕截图。
这是我的位置/深度着色器:
顶点着色器:
片段着色器:
这是普通的着色器:
顶点着色器:
片段着色器:
这是我的 SSAO 片段着色器: