问题标签 [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.
c++ - 为什么相同的代码在笔记本电脑显示器和外接显示器上的工作方式不同
我正在使用learnopengl的 SSAO 代码,但我的笔记本电脑显示器 ( LM ) 和外接显示器 ( EM ) 之间的结果不同。
EM 结果(良好):
LM 结果(坏):
当我将结果窗口从 LM 拖到 EM 时,窗口不会改变,反之亦然。
另外,我用
设置视口大小[原因],我得到了
- EM : screenWidth = 800, screenHeight = 600 (等于窗口大小)
- LM:屏幕宽度 = 1600,屏幕高度 = 1200
虽然我将笔记本电脑显示器视口大小设置为 (800, 600),但结果很好:
视口大小 (800*600) LM 结果
当我不使用 SSAO 或做一些简单的任务(天空盒、加载模型等)时,结果是一样的。
我的笔记本电脑显示器是:
我的外接显示器是:
关于如何实现这一目标的任何想法?
opengl - 带网格的 SSAO 结果纹理
我尝试使用本教程实现 SSAO:https ://learnopengl.com/Advanced-Lighting/SSAO ,在我实现所有代码后,我发现如果我在角色上使用 SSAO,虽然我可以正确获取遮挡值,但是我可以在我的角色上看到很多这样的网格:
这个结果已经在 SSAO 模糊之后,并且我尝试增加样本半径,这可以减少网格情况,但不适用于其他对象:我尝试用谷歌搜索这个issue(ssao grid),发现一些游戏论坛讨论这个问题,一些游戏比如bf5(我认为是战场5)在SSAO功能开启的情况下有这个网格问题。
所以,我的问题是,有没有办法可以用 SSAO 消除网格,或者我不应该在角色模型上使用 SSAO,只在建筑物或墙壁上使用它,在此先感谢。
c++ - 这个 SSDO 演示的 GLSL 版本要求是否自相矛盾?
我尝试从这里运行 SSDO 演示代码,但在我花了数小时寻找解决方案后,遇到了一些让我更加困惑的问题。尽管如此,现在我几乎可以肯定问题出在GLSL 版本上。
注意:
- 该演示使用
glew
和glut
。 - 我的环境是 15" MacBook Pro 2018 上的 Parallels Desktop 支持的 Windows 10 pro 上的 Microsoft Visual Studio Community 2019。
阶段1
在对代码进行任何修改之前,我收到了一堆错误消息:
其他着色器的消息也类似。
相应地,上面显示的错误消息与create_direct_light_buffer.frag
:
显然我搜索了texelFetch2D
,但只获得了非常有限的信息。然而,根据此信息,我暂时假设将其替换为texelFetch
会有所帮助,这需要GLSL 版本不少于 1.30,根据此页面。
第二阶段
所以我#version 130
在最开始添加了create_direct_light_buffer.frag
,错误信息变成了:
然后我接受了@flyx的建议,添加main
到指定版本的函数中:
我开始迷路了。
第三阶段
错误消息变成:
这些警告似乎与 . 无关create_direct_light_buffer.frag
,而且我找不到任何关于它们的问题和解决方案,所以我就放他们走了。
当我试图找出varying
错误时,我发现了这篇文章,声称它varying
已被GLSL 版本 1.30in
或out
自GLSL 版本取代。
这是标题中的冲突。
我的期望
- 演示完全正确吗?
- 如果可以运行项目,我该怎么办?
由于我是 OpenGL 的新手,如果有人可以下载源代码并在他/她自己的计算机上尝试并告诉我如何解决,我将非常感激。
否则,如果一些经验丰富的专家可以就可能出现的问题或如何解决此问题给我一些一般性建议,我将同样感激。
opengl - Opengl:SSAO 与阴影映射
文学上写过一篇关于 SSAO 的文章的每篇教程都以“剂量准确地产生现实的结果”结尾。我们可以通过阴影映射获得更准确的阴影,而无需额外的内存来存储充满随机向量的纹理[或统一数组]以进行采样或额外的模糊通道以减少条带,那么为什么还要使用 SSAO?
我还看到了一些结合 SSAO 和阴影贴图的教程,这对我来说似乎有点矫枉过正。这两种技术都是为了产生阴影对吧?
glsl - 如何防止远距离过度的SSAO
我几乎按照 John Chapman 的教程在这里使用 SSAO ,事实上,使用 Sascha Willems Vulkan 示例。一个区别是片段位置与线性深度一起直接保存到 G-Buffer(因此有 x、y、z 和 w 坐标,w 是线性深度,在 G-Buffer 着色器中计算。深度计算如下这个:
我的场景通常由一个大而平坦的地板组成,中间有一个模型。大我的意思是比远剪辑距离大得多。
在高深度值下(即在我的示例中的地平线处),SSAO 会在本应没有遮挡的地方生成遮挡 - 除了完全平坦的表面之外什么都没有。除了这种遮挡,还有一些条带。
关于如何防止这些遮挡发生的任何想法?
opengl - 有没有人和我一样经历过关于 OpenGL 中的 ssao 的情况?
大多数着色器代码都遵循 LearnOpenGL 的指令。我可以确保传入着色器的 g 缓冲区和噪声数据是正确的。这似乎是某种错位,但我真的无法弄清楚为什么会发生这种情况。
c++ - SSAO 中的 OpenGL 阴影映射
我正在从网站https://learnopengl.com/学习 OpenGL ,并且对延迟渲染中的阴影映射有疑问。
阴影贴图在前向渲染中有效,但是当我将其切换到 SSAO 模式时,阴影贴图不会像在前向渲染中那样显示。
创建 gBuffer FBO
绘制模型
绘制四边形
片段着色器
前向渲染中的阴影贴图
SSAO 中的阴影贴图
我想我错过了创建帧缓冲区的一些步骤,但不确定如何修复它。