问题标签 [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.
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 矩阵从光线或相机的角度计算顶点,所以我认为我不需要发布它们。
此代码用于初始化和渲染:
它没有优化,但现在可以。
opengl - 检查片段是否在指定区域内
考虑以下场景。
我将 pMin 和 pMax 从世界空间转换为视口空间。由 pMin 和 pMax 界定的区域跟随用户鼠标在平面上滑动(较大的矩形)。
片段着色器内部是否有办法确定片段是否位于内部区域内?我尝试与 gl_FragCoord.x 和 gl_FragCoord.z 进行比较,但它没有产生正确的结果。
在级联阴影映射中,阴影贴图的选择基于片段的 z 值以及它是否位于计算出的平截头体分割 z 值内。我正在尝试做同样的事情,只是我希望我的查找也考虑 x 坐标。
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
UPDATED: So i found another solution. You can use circle mesh for shadows instead of quad and don't let them overlap.
c++ - 阴影贴图未正确投影
我在我的 OpenGL 图形引擎中实现阴影映射时遇到了麻烦。
在第一阶段,我从光线的角度将阴影贴图渲染到帧缓冲区对象(附加了深度纹理)中:
我使用函数drawSceneTree()绘制所有场景,并使用函数setTextureMatrix()将光照矩阵存储到OpenGL TEXTURE7中,内容是这样的:
然后我从相机的角度渲染场景,并使用着色器渲染阴影:
setupMatrices() 函数设置投影和模型视图矩阵。我使用函数 BindForReading(7) 将 shadowMapFBO 绑定到 OpenGL TEXTURE7 中,其内容为:
最后,顶点和片段着色器是这些:
顶点:
分段:
我将游戏角色的阴影投射到场景的所有对象中。我把它记录在一个gif中:
https://dl.dropboxusercontent.com/u/658766/captura.gif
PS:出于调试目的,阴影贴图也在屏幕上渲染,位于右上角。
c - 物体不会在其他物体上投射阴影
我在 Orwell Dev-C++ 5.4.0 上用 GLEW 和 GLFW 制作了一个 OpenGL 程序,它显示了块。我添加了环境光、漫反射光和镜面光,现在也添加了阴影。我使用了深度纹理。但是现在,方块不会在其他方块上投射阴影,而只会投射在它们自己身上!
这是我的源代码的重要部分:
顶点着色器“openglSuperTutorials12.vss”:
片段着色器“openglSuperTutorials12.fss”:
其他着色器(“openglSuperTutorials12_depth.vss”和“openglSuperTutorials12_depth.fss”)只是带有“mvpMatrixDepth”的简单直通着色器。
我必须改变什么才能让光线在其他物体上投射阴影?
java - 体素引擎上的立方体法线产生奇怪的结果
我正在尝试将法线添加到我的体素引擎 16x16 立方体块中。当我渲染所有内容时,我会得到奇怪的结果。我不确定我是否错误地放置了我的法线,或者如果使用照明实现简单的阴影将无法正常使用它。
以下是我的每个立方体的顶点以及各自的法线。
这是我运行程序时的样子,
看起来光的计算好像它周围的每个块都不存在一样。我该如何纠正?当块像图片中一样平坦时,结果应该看起来无缝。
unity3d - Unity 阴影仅在全屏时闪烁
所以我有一个统一的项目,只有硬阴影。在我的电脑上,一切正常,但是当我将它导出到另一台电脑(实际上是一台更高端的游戏电脑)时,阴影会闪烁。
此错误似乎仅在超过 1600 x 900 后才会出现在他们的计算机上。
我已经尝试了 http://answers.unity3d.com/questions/23919/terrain-flickering-due-to-real-time-shadows.html中的所有解决方案, 但这些都不起作用。我也尝试过烘焙光照贴图,但这也不起作用。
是否可以更改设置以使闪烁停止,甚至可以编写一些代码?到目前为止,我的任何尝试都没有奏效。
我们尝试关闭所有阴影,但只关闭一个,阴影仍然闪烁。
这也不应该是硬件问题,因为笔记本电脑使用的是Nvidia GeForce GTX 675M,它应该支持 Unity 中的阴影。
我正在实施的当前临时解决方案如下所示:
这会删除该大小之后的阴影,但无论如何我希望能够使用阴影,所以如果你能找到问题,请发布。
three.js - 三个 JS - 投射阴影
我试图让球的影子出现在地板上,但它似乎不起作用。这是我声明渲染器、相机、灯光和对象的代码:
有谁可以告诉我我错过了什么?谢谢
java - libGDX 3D 阴影伪影
我在使用 libgdx 3d 阴影时遇到了一些问题。在我的游戏中,我实现了实验性的 DirectionalShadowLight。一切都在桌面上运行良好,但是当我在 android 上运行它时,地面上有很多工件。
图片(左安卓,右桌面):
我几乎直接从 libgdx 的 github 存储库中的测试中获取了渲染代码。
没什么大不了的。还考虑到它可以在桌面上运行,我认为影子实现本身有问题。我能做些什么来解决这个问题吗?考虑到我一生中从未接触过着色器。一些简单的黑客可能?如果不是,也许有人可以为 libgdx 推荐其他工作影子实现?
谢谢你。
编辑:附加代码:
c++ - DirectX9 和 HLSL 的阴影映射问题
我正在尝试自学阴影映射以将其集成到我的游戏中,并且我目前正在使用本教程(目前没有软着色器):
我已经成功地将大部分代码实现到我的游戏中。我可以形成为阴影贴图创建深度缓冲区所需的矩阵,并让它渲染,这样我就知道它看起来是正确的。然后我将它输入到最终的渲染循环中,这就是我遇到问题的地方。我似乎无法正确实现最终的矩阵计算,或者我在此过程中做错了什么。希望我基本上离这项工作只有一步之遥,但我的矩阵计算似乎不正确,我希望是这样,它不是实现的另一部分。
这是初始化代码(这里没有已知问题):(为简化起见已删除)
这是为深度缓冲区渲染设置的初始化代码(此处没有已知问题):(为简化起见已删除)
所有这些代码都成功创建了深度图并将其放入g_pShadowMap
这是用于渲染深度图的 HLSL 代码(此处没有已知问题):(为简化起见已删除)
我将深度图的图像保存到一个文件中并查看它,因为值是 0.5 和更大的图像是白色的,但是如果我将深度值除以 100,我可以更准确地看到深度图像,它是从角色上方 20 个单位正确渲染自上而下的光源,按计划面向 +x 方向。我不确定存储在地图中的 z 距离是否需要一定的比例,但同样,图像是白色的,除非我将 z 值除以 100 以查看我的“蓝色”深度图。(我不使用分割的值作为我的最终图像)。
这是我的地形最终渲染的代码(这是最有可能出现问题的地方):
现在对于最终的 HLSL 渲染代码,我假设我没有正确处理阴影贴图的矩阵......
任何帮助将不胜感激。我只能假设我没有正确计算阴影贴图上的矩阵。该示例使用 LH 投影,而我使用 RH 投影。另外,由于我已经设置了我的游戏矩阵,我没有使用示例D3DXMatrixOrthoLH()
调用来计算我的最终结果matLightViewProj
,我不确定是否需要。我相信我已经发布了这个问题的所有相关代码。再次,我将非常感谢任何帮助,它已经困扰了我好几天了。