问题标签 [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.
java - OpenGL ES 2.0 - 渲染深度缓冲区
我已经阅读了一些教程并试图围绕 OpenGL ES 2.0。在尝试创建深度缓冲区时,我的 JVM 崩溃了。顺便说一句,我正在使用 LibGDX 框架。
我不知道做什么glTexImage2D
,我想它应该生成深度纹理。
下一行使 JVM 崩溃
下一行导致NullPointerException
我不知道我应该把什么作为glTexImage2D
最后一个参数。我已经看到了他们放置的 iOS 示例NULL
。
其余代码
请指出正确的方向,或者每当我在假设中犯了错误时。
最好有教程,我在 OpenGL ES 2.0 中没有找到太多关于阴影贴图的信息
directx-10 - 深度模板和阴影资源为空
在花了大约 3 天的时间试图让阴影贴图工作后,我在将阴影贴图传递给着色器时遇到了一些麻烦。
首先我初始化深度模板和资源视图,然后我绘制(我相信)到深度模板。我发现的问题是深度模板从来没有与之关联的任何数据。
Pix 在资源视图或深度模板中没有显示任何数据,我无法将深度模板的图像保存到文件中(我来自非阴影深度模板)。我可以调用 DrawSceneShadow() 并将其渲染到渲染目标并得到我想要的。
感谢您提供任何帮助。
初始化
渲染场景
opengl - 延迟渲染中的阴影贴图投影 (OpenGL 3.3)
我有一个有效的 G 缓冲区(颜色、法线、深度),对于每个聚光灯,我都有从灯光的角度看的深度图。问题出在光照贴图阶段,我无法让它工作。你能指出这里有什么问题吗?
这是我对这个过程的“理解”:
opengl - 2d 阴影映射
我一直想知道如何用openGL实现它:
我有一张地图,有平坦的地板和墙壁。这里的一切都是 2d 的,没有 3d 几何,只有 2d 组成地图的 poligons。
使用我投射阴影的多边形的顶点来定义可视区域。
阴影定义了视野,但由于有墙壁的单元格挡住了视野,它们也变暗了。我可以在阴影顶部绘制墙壁,但这样做会在视野之外显示均匀的墙壁。
有人建议我用阴影贴图来解决这个问题。我应该将 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 环境中。
opengl - OpenGL阴影贴图
我正在尝试做一个基本的阴影贴图,但由于某种原因,它不能正确渲染。
我使用平面着色器渲染房子:
请注意,我只渲染房子。我不在深度缓冲通道中渲染地板。
在此之后,我使用以下着色器对渲染代表地板的四边形:
和片段着色器:
然后我再次用颜色画房子和......地板:
有没有人见过这种行为?知道有什么问题吗?顺便说一句,灯光的坐标直接将它放在房子的顶部,因此阴影应该直接位于地板上的房子下方(但它最终会侧身)。
以下是我如何生成阴影 FBO 的参考:
arrays - 使用带有深度分量的 GL_TEXTURE_2D_ARRAY 的不完整附件
我正在尝试使用 opengl 纹理数组来存储大量阴影贴图。不幸的是,我在检查帧缓冲区时总是收到“附件不完整”错误。我尝试像在 nvidia 的级联阴影映射示例中那样设置我的纹理数组(请参阅 NVIDIA 的级联阴影映射示例)。
所以这里有一些代码:
创建纹理:
/li>创建 FBO:
/li>将阴影贴图绘制到图层中:
/li>
系统规格:
带有 Nvidia 驱动程序 304.60 和 GTX 560 Ti 的 Debian Squeeze 64 位。旧驱动程序版本是由于较新版本中的着色器编译器错误。
directx - 由默认创建的深度模板缓冲区引起的问题
我正在从阴影贴图上的 DirectX SDK 示例中学习。这个示例在初始化期间创建了一个模板表面,并说:
这是什么意思?我试图评论创建和操作模板缓冲区的语句,然后我得到了相当不稳定的结果:如果我让窗口更大,阴影效果很好,而当我让窗口更小时,阴影停止移动。有人可以向我解释吗?非常感谢!!!
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);
有谁可以解释这些差异?为什么我的纹理贴图被缩放?
graphics - 阴影贴图摆动
我一直在研究全向阴影贴图,并在这个问题上停留了一段时间。基本上,当相机移动或旋转时,阴影似乎会摆动。我在这里做了一个视频:
这个问题在屏幕底部的墓碑上大约一半时最明显。
该项目是在延迟渲染器中实现的,起初我认为问题在于将纹素与像素对齐,但我读到自从directx 10(我正在使用)以来,这不再是一个问题。有人还建议我在渲染调用后更新相机,所以它落后了一帧,但这不是问题。
任何帮助将不胜感激。
我不想从发布大量代码开始。如果有什么需要我可以贴出来。
opengl - 提高点光源的阴影贴图性能?
我正在使用阴影贴图制作点光源,目前我使用六个深度贴图纹理完成了它,每个纹理单独渲染并应用于光照贴图。这工作得很好,但性能成本很高。
现在,为了通过减少深度贴图着色器和光照贴图着色器之间的 FBO 更改和着色器交换来提高性能,我正在考虑几种方法。第一个涉及拥有一个比阴影贴图大六倍的纹理,并“一次”渲染所有点光深度图,然后使用此纹理在一次调用中布置光照贴图。是否可以只渲染部分纹理?
为了详细说明第一个示例,它将是这样的:
我认为的第二种方法是使用 3D 纹理而不是部分渲染,但我仍然有一个类似的问题:我可以只渲染 3D 纹理的某个“层”而保留其他层吗?