【问题标题】:Lighting covering up sky灯光遮天蔽日
【发布时间】:2013-12-12 16:29:21
【问题描述】:

我有一个基于 2D 瓦片的照明系统,它被绘制到渲染目标上。 我还画了一个涉及山脉、太阳/月亮和云的背景。 还有无灯游戏;块,字符等。

这是绘制所有内容的顺序:

1. Background
2. Game World
3. Lighting

问题是天黑时灯光遮住了背景:

虽然白天完全没问题,因为光线充足:

您可能会问,为什么不只是混合每个块,而不是在 RenderTarget 上绘制光照?

因为这会阻止我执行平滑的照明,如图所示。为了产生平滑的光照,我在 RenderTarget 上绘制光的正方形,执行高斯模糊,然后绘制该 RenderTarget。

不要在空白处画一个正方形的光怎么样?

灯光会模糊到任何相邻的方块上,而且我的游戏中受灯光影响的对象并非都是正方形的,所以它们看起来就像一个顶部有一个模糊正方形的精灵。

没有在空白处绘制光:

无处不在的光:

有什么方法可以让背景保持可见,或者其他可以帮助我解决困境的方法吗?

【问题讨论】:

  • 我不知道你到底在问什么,或者屏幕截图想要显示什么。
  • 光线使背景变暗。
  • 我正要问完全相同的问题,这是我游戏背景中的星星和月亮的问题,由于灯光的黑暗,当它们应该是明亮的时候,它们最终变成了灰色。
  • 哦 heeeeey 我看到了你的平滑照明问题!虽然实际上我最终使用了高斯模糊而不是您问题答案中描述的方法。
  • 没有光线会使背景变暗?这对我来说似乎是正确的,但是如果您想看到某些东西,请添加环境光或使用不那么严格的模糊。阴影也不应该进入地下......那样看起来很难看。顺便说一句,它在现实世界中的表现如何(如果没有光,颜色不会变暗,但会在有光的情况下增强强度)

标签: c# xna 2d lighting


【解决方案1】:

我建议您执行以下操作:

  • 将光照渲染到渲染目标
  • 将场景渲染到 rendertarget(保持背景透明)
  • 将场景与光照渲染目标相乘
  • 将背景渲染到屏幕
  • 将场景(已应用照明)渲染到屏幕

因为应用光照后添加了背景,所以不会受到影响。

【讨论】:

    猜你喜欢
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多