问题标签 [shadow-mapping]

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

java - OpenGL ES 2.0 - 渲染深度缓冲区

我已经阅读了一些教程并试图围绕 OpenGL ES 2.0。在尝试创建深度缓冲区时,我的 JVM 崩溃了。顺便说一句,我正在使用 LibGDX 框架。

我不知道做什么glTexImage2D,我想它应该生成深度纹理。

下一行使 JVM 崩溃

下一行导致NullPointerException

我不知道我应该把什么作为glTexImage2D最后一个参数。我已经看到了他们放置的 iOS 示例NULL

其余代码

请指出正确的方向,或者每当我在假设中犯了错误时。

最好有教程,我在 OpenGL ES 2.0 中没有找到太多关于阴影贴图的信息

0 投票
0 回答
401 浏览

directx-10 - 深度模板和阴影资源为空

在花了大约 3 天的时间试图让阴影贴图工作后,我在将阴影贴图传递给着色器时遇到了一些麻烦。

首先我初始化深度模板和资源视图,然后我绘制(我相信)到深度模板。我发现的问题是深度模板从来没有与之关联的任何数据。

Pix 在资源视图或深度模板中没有显示任何数据,我无法将深度模板的图像保存到文件中(我来自非阴影深度模板)。我可以调用 DrawSceneShadow() 并将其渲染到渲染目标并得到我想要的。

感谢您提供任何帮助。

初始化

渲染场景

0 投票
1 回答
1908 浏览

opengl - 延迟渲染中的阴影贴图投影 (OpenGL 3.3)

我有一个有效的 G 缓冲区(颜色、法线、深度),对于每个聚光灯,我都有从灯光的角度看的深度图。问题出在光照贴图阶段,我无法让它工作。你能指出这里有什么问题吗?

这是我对这个过程的“理解”:

0 投票
1 回答
2025 浏览

opengl - 2d 阴影映射

我一直想知道如何用openGL实现它:

例子

  1. 我有一张地图,有平坦的地板和墙壁。这里的一切都是 2d 的,没有 3d 几何,只有 2d 组成地图的 poligons。

  2. 使用我投射阴影的多边形的顶点来定义可视区域。

  3. 阴影定义了视野,但由于有墙壁的单元格挡住了视野,它们也变暗了。我可以在阴影顶部绘制墙壁,但这样做会在视野之外显示均匀的墙壁。

有人建议我用阴影贴图来解决这个问题。我应该将 2D 场景渲染为 4 个不同的 1D 纹理,这些纹理保持到第一个碰撞表面的距离深度。问题是我不知道如何将 2d 场景的投影渲染到 1D 纹理中。例如,如果我使用: gluLookAt (x, y, 0.0, 0.0, x , y+1, 0.0, 0.0, 1.0);

要渲染顶视图,结果仍然是 2D。此外,由于所有顶点都位于同一平面上,因此不会渲染任何内容,因此所有表面都将与相机正交。

您对如何进行这些 2D 到 1D 投影有任何提示或想法吗?我一直在用谷歌搜索像这样的场景,但它们都在 3D 环境中。

0 投票
1 回答
1849 浏览

opengl - OpenGL阴影贴图

我正在尝试做一个基本的阴影贴图,但由于某种原因,它不能正确渲染。

问题视频

我使用平面着色器渲染房子:

请注意,我只渲染房子。我不在深度缓冲通道中渲染地板。

在此之后,我使用以下着色器对渲染代表地板的四边形:

和片段着色器:

然后我再次用颜色画房子和......地板:

有没有人见过这种行为?知道有什么问题吗?顺便说一句,灯光的坐标直接将它放在房子的顶部,因此阴影应该直接位于地板上的房子下方(但它最终会侧身)。

以下是我如何生成阴影 FBO 的参考:

0 投票
0 回答
657 浏览

arrays - 使用带有深度分量的 GL_TEXTURE_2D_ARRAY 的不完整附件

我正在尝试使用 opengl 纹理数组来存储大量阴影贴图。不幸的是,我在检查帧缓冲区时总是收到“附件不完整”错误。我尝试像在 nvidia 的级联阴影映射示例中那样设置我的纹理数组(请参阅 NVIDIA 的级联阴影映射示例)。

所以这里有一些代码:

  1. 创建纹理:

    /li>
  2. 创建 FBO:

    /li>
  3. 将阴影贴图绘制到图层中:

    /li>

系统规格:

带有 Nvidia 驱动程序 304.60 和 GTX 560 Ti 的 Debian Squeeze 64 位。旧驱动程序版本是由于较新版本中的着色器编译器错误。

0 投票
1 回答
476 浏览

directx - 由默认创建的深度模板缓冲区引起的问题

我正在从阴影贴图上的 DirectX SDK 示例中学习。这个示例在初始化期间创建了一个模板表面,并说:

这是什么意思?我试图评论创建和操作模板缓冲区的语句,然后我得到了相当不稳定的结果:如果我让窗口更大,阴影效果很好,而当我让窗口更小时,阴影停止移动。有人可以向我解释吗?非常感谢!!!

0 投票
0 回答
166 浏览

opengl - 阴影贴图太大

着色器贴图纹理中一切正常,但已缩放(太大)。

坐标纹理:

mat4 偏差 = mat4(0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.5, 0.5, 0.5, 1.0);

ShadowCoord = 偏差 * projMatrix * viewModelMatrix * vec4(position,1);

为什么在另一个例子中,textureMap 坐标是:

ShadowCoord = 偏差 * projMatrix * viewModelMatrix * ViewMatrixInverse;

还有一个:

ShadowCoord = 偏差 * projMatrix * viewModelMatrix * ModelMatrixRenderObject * vec4(position,1);

有谁可以解释这些差异?为什么我的纹理贴图被缩放?

0 投票
0 回答
168 浏览

graphics - 阴影贴图摆动

我一直在研究全向阴影贴图,并在这个问题上停留了一段时间。基本上,当相机移动或旋转时,阴影似乎会摆动。我在这里做了一个视频:

http://youtu.be/w8IAdNPglAc

这个问题在屏幕底部的墓碑上大约一半时最明显。

该项目是在延迟渲染器中实现的,起初我认为问题在于将纹素与像素对齐,但我读到自从directx 10(我正在使用)以来,这不再是一个问题。有人还建议我在渲染调用后更新相机,所以它落后了一帧,但这不是问题。

任何帮助将不胜感激。

我不想从发布大量代码开始。如果有什么需要我可以贴出来。

0 投票
1 回答
1406 浏览

opengl - 提高点光源的阴影贴图性能?

我正在使用阴影贴图制作点光源,目前我使用六个深度贴图纹理完成了它,每个纹理单独渲染并应用于光照贴图。这工作得很好,但性能成本很高。

现在,为了通过减少深度贴图着色器和光照贴图着色器之间的 FBO 更改和着色器交换来提高性能,我正在考虑几种方法。第一个涉及拥有一个比阴影贴图大六倍的纹理,并“一次”渲染所有点光深度图,然后使用此纹理在一次调用中布置光照贴图。是否可以只渲染部分纹理?

为了详细说明第一个示例,它将是这样的:

我认为的第二种方法是使用 3D 纹理而不是部分渲染,但我仍然有一个类似的问题:我可以只渲染 3D 纹理的某个“层”而保留其他层吗?