问题标签 [shadows]

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

opengl - OpenGL Variance Shadow Mapping 倒置衰减

我正在尝试使用 OpenGL API 实现方差阴影贴图技术。我一直在使用教程(Fabien Sanglard's Soft shadows with VSM)并遵循每一步,但我的阴影贴图看起来有点奇怪。我注意到的主要事情是,当我在光(透视)投影矩阵的剪裁平面附近改变时,它开始看起来很奇怪。

例如,这是它在 1.0f 上接近剪裁http://postimg.org/image/rupf6wqcx/的样子(这个结果被认为是好的)

这是 0.1f 值http://postimg.org/image/fox04z14z/

请注意,灯的位置保持不变。

我一直试图找出问题所在,连续 3 天没有结果。你能帮我解决这个问题吗?

这是阴影片段着色器的代码。

以及来自实际渲染通道片段着色器的阴影映射部分

顶点着色器非常简单,使用 MVP 矩阵从光线或相机的角度计算顶点,所以我认为我不需要发布它们。

此代码用于初始化和渲染:

它没有优化,但现在可以。

0 投票
1 回答
742 浏览

opengl - 检查片段是否在指定区域内

考虑以下场景。 场景

我将 pMin 和 pMax 从世界空间转换为视口空间。由 pMin 和 pMax 界定的区域跟随用户鼠标在平面上滑动(较大的矩形)。

片段着色器内部是否有办法确定片段是否位于内部区域内?我尝试与 gl_FragCoord.x 和 gl_FragCoord.z 进行比较,但它没有产生正确的结果。

在级联阴影映射中,阴影贴图的选择基于片段的 z 值以及它是否位于计算出的平截头体分割 z 值内。我正在尝试做同样的事情,只是我希望我的查找也考虑 x 坐标。

0 投票
1 回答
951 浏览

3d - libgdx fake 3d shadows

I'm writing 3d game with libgdx, and want to add fake 2d shadows on bottom of models. Now I'm using 2 planes with shadow texture and draw them a bit upper then floor planes. Everything is going ok, but when 2 shadow planes overlaps, there is a weird graphical artifact, because shadow planes have same Y(vertical) coordinate. What i need to do to avoid this? Maybe some texture on floor plane projection? If so - how?

example image http://itmages.ru/image/view/1497735/17ea1cdd

UPDATED: So i found another solution. You can use circle mesh for shadows instead of quad and don't let them overlap.

enter image description here

0 投票
1 回答
250 浏览

c++ - 阴影贴图未正确投影

我在我的 OpenGL 图形引擎中实现阴影映射时遇到了麻烦。

在第一阶段,我从光线的角度将阴影贴图渲染到帧缓冲区对象(附加了深度纹理)中:

我使用函数drawSceneTree()绘制所有场景,并使用函数setTextureMatrix()将光照矩阵存储到OpenGL TEXTURE7中,内容是这样的:

然后我从相机的角度渲染场景,并使用着色器渲染阴影:

setupMatrices() 函数设置投影和模型视图矩阵。我使用函数 BindForReading(7) 将 shadowMapFBO 绑定到 OpenGL TEXTURE7 中,其内容为:

最后,顶点和片段着色器是这些:

顶点:

分段:

我将游戏角色的阴影投射到场景的所有对象中。我把它记录在一个gif中:

https://dl.dropboxusercontent.com/u/658766/captura.gif

PS:出于调试目的,阴影贴图也在屏幕上渲染,位于右上角。

0 投票
0 回答
245 浏览

c - 物体不会在其他物体上投射阴影

我在 Orwell Dev-C++ 5.4.0 上用 GLEW 和 GLFW 制作了一个 OpenGL 程序,它显示了块。我添加了环境光、漫反射光和镜面光,现在也添加了阴影。我使用了深度纹理。但是现在,方块不会在其他方块上投射阴影,而只会投射在它们自己身上!

这是我的源代码的重要部分:

顶点着色器“openglSuperTutorials12.vss”:

片段着色器“openglSuperTutorials12.fss”:

其他着色器(“openglSuperTutorials12_depth.vss”和“openglSuperTutorials12_depth.fss”)只是带有“mvpMatrixDepth”的简单直通着色器。

现场截图

我必须改变什么才能让光线在其他物体上投射阴影?

0 投票
1 回答
214 浏览

java - 体素引擎上的立方体法线产生奇怪的结果

我正在尝试将法线添加到我的体素引擎 16x16 立方体块中。当我渲染所有内容时,我会得到奇怪的结果。我不确定我是否错误地放置了我的法线,或者如果使用照明实现简单的阴影将无法正常使用它。

以下是我的每个立方体的顶点以及各自的法线。

这是我运行程序时的样子, 带有法线的奇怪阴影

看起来光的计算好像它周围的每个块都不存在一样。我该如何纠正?当块像图片中一样平坦时,结果应该看起来无缝。

0 投票
0 回答
680 浏览

unity3d - Unity 阴影仅在全屏时闪烁

所以我有一个统一的项目,只有硬阴影。在我的电脑上,一切正常,但是当我将它导出到另一台电脑(实际上是一台更高端的游戏电脑)时,阴影会闪烁。

此错误似乎仅在超过 1600 x 900 后才会出现在他们的计算机上。

我已经尝试了 http://answers.unity3d.com/questions/23919/terrain-flickering-due-to-real-time-shadows.html中的所有解决方案, 但这些都不起作用。我也尝试过烘焙光照贴图,但这也不起作用。

是否可以更改设置以使闪烁停止,甚至可以编写一些代码?到目前为止,我的任何尝试都没有奏效。


我们尝试关闭所有阴影,但只关闭一个,阴影仍然闪烁。

这也不应该是硬件问题,因为笔记本电脑使用的是Nvidia GeForce GTX 675M,它应该支持 Unity 中的阴影。


我正在实施的当前临时解决方案如下所示:

这会删除该大小之后的阴影,但无论如何我希望能够使用阴影,所以如果你能找到问题,请发布。

0 投票
1 回答
953 浏览

three.js - 三个 JS - 投射阴影

我试图让球的影子出现在地板上,但它似乎不起作用。这是我声明渲染器、相机、灯光和对象的代码:

有谁可以告诉我我错过了什么?谢谢

0 投票
1 回答
1975 浏览

java - libGDX 3D 阴影伪影

我在使用 libgdx 3d 阴影时遇到了一些问题。在我的游戏中,我实现了实验性的 DirectionalShadowLight。一切都在桌面上运行良好,但是当我在 android 上运行它时,地面上有很多工件。

图片(左安卓,右桌面):

我几乎直接从 libgdx 的 github 存储库中的测试中获取了渲染代码。

没什么大不了的。还考虑到它可以在桌面上运行,我认为影子实现本身有问题。我能做些什么来解决这个问题吗?考虑到我一生中从未接触过着色器。一些简单的黑客可能?如果不是,也许有人可以为 libgdx 推荐其他工作影子实现?

谢谢你。

编辑:附加代码:

在此处输入图像描述

0 投票
1 回答
1717 浏览

c++ - DirectX9 和 HLSL 的阴影映射问题

我正在尝试自学阴影映射以将其集成到我的游戏中,并且我目前正在使用本教程(目前没有软着色器):

http://www.gamedev.net/page/resources/_/technical/graphics-programming-and-theory/soft-edged-shadows-r2193

我已经成功地将大部分代码实现到我的游戏中。我可以形成为阴影贴图创建深度缓冲区所需的矩阵,并让它渲染,这样我就知道它看起来是正确的。然后我将它输入到最终的渲染循环中,这就是我遇到问题的地方。我似乎无法正确实现最终的矩阵计算,或者我在此过程中做错了什么。希望我基本上离这项工作只有一步之遥,但我的矩阵计算似乎不正确,我希望是这样,它不是实现的另一部分。

这是初始化代码(这里没有已知问题):(为简化起见已删除)

这是为深度缓冲区渲染设置的初始化代码(此处没有已知问题):(为简化起见已删除)

所有这些代码都成功创建了深度图并将其放入g_pShadowMap

这是用于渲染深度图的 HLSL 代码(此处没有已知问题):(为简化起见已删除)

我将深度图的图像保存到一个文件中并查看它,因为值是 0.5 和更大的图像是白色的,但是如果我将深度值除以 100,我可以更准确地看到深度图像,它是从角色上方 20 个单位正确渲染自上而下的光源,按计划面向 +x 方向。我不确定存储在地图中的 z 距离是否需要一定的比例,但同样,图像是白色的,除非我将 z 值除以 100 以查看我的“蓝色”深度图。(我不使用分割的值作为我的最终图像)。

这是我的地形最终渲染的代码(这是最有可能出现问题的地方):

现在对于最终的 HLSL 渲染代码,我假设我没有正确处理阴影贴图的矩阵......

任何帮助将不胜感激。我只能假设我没有正确计算阴影贴图上的矩阵。该示例使用 LH 投影,而我使用 RH 投影。另外,由于我已经设置了我的游戏矩阵,我没有使用示例D3DXMatrixOrthoLH()调用来计算我的最终结果matLightViewProj,我不确定是否需要。我相信我已经发布了这个问题的所有相关代码。再次,我将非常感谢任何帮助,它已经困扰了我好几天了。