我刚在我的引擎中实现了一个灯光系统。在下面的截图中,你可以看到在行动一光(黄色方块):漫射光/阴影
要考虑到在光的顶部光照的情况下,其还实施了FOV,将堵塞你的视野之外的任何内容。这就是为什么阴影的左侧看起来如此关闭。
正如您所看到的,灯光的阴影非常“硬”,因为它们甚至不会照亮直接触及范围之外的区域。 为了使灯光看起来更好,我申请一个过滤器对他们来说,这几乎限制了被照亮的范围内,并且也略有还有iLuminate这个限度内的区域:
在黄色的大即使没有直射光线到达,您也可以看到该区域是如何照亮的。
然而,这种解决方案带来了一些不良的副作用。正如你可以在下面的截图中看到,即使没有光在所有到达的区域,将在点亮它太靠近光源:
我想知道是否有什么办法通过适当地使用着色器来实现我要做的事情。 我遇到的主要问题来自我如何绘制这些阴影。
1)首先我把结构放在灯的范围内。
在这一点上,我与顶点的工作,因为他们明确规定阴影投射项目的区域:)
2然后,对于每个对象,我估计他们单独的阴影:
它们的阴影是由CPU完成的,通过calpulating突起为身体的每个顶点。
3)然后GPU绘制这些形状到纹理组成最终的影子:
我发现的问题是,使这个弥漫性阴影效果,我需要最终的影子。如果我要计算步骤2)中的漫射阴影,则实体B和C之间会出现光线间隙。
但是,如果我在步骤3中弥散阴影,则不再具有顶点信息,因为所有我所拥有的信息是3个局部纹理在一个最终纹理中加在一起。
那么,有没有办法做到这一点?我的第一个想法是将变化传递给碎片生成器来计算有多少光进入黑暗区域,但是由于我将在最终的影子上处理这个信息,该信息没有顶点信息,所以我完全失去了什么我应该使用这种方法。
我对这种方法可能完全错误,因为我对着色器的使用经验非常有限。
这里是什么,我有一个例子,现在,我的愿望: 我有什么:普通照明withing光半径(这会导致穿墙夹光
我想要什么:阴影越强,距离光线越远距离越远
s/difuse/diffuse/ –
感谢您指出错字。 Fix'd。编辑:我无法输入! :( – Leo
我想我们需要更多关于你在哪里做算法部分的信息。你计算CPU上的影子卷吗? –