首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一定制2D照明系统

统一定制2D照明系统
EN

Stack Overflow用户
提问于 2022-05-19 16:35:39
回答 1查看 442关注 0票数 1

好的,我一直在尝试做一个定制的2D照明系统,我正处于一个恼人的阶段,我知道我想做什么,但我不知道该怎么做。

计划如下:

  1. 将会有专门的光对象和他们自己的网格。这些网格决定了光线的形状。在摄像机呈现整个场景之前,
  2. 会对带有黑色背景的光网格进行额外渲染,以创建一个光图。然后,相机将场景呈现为正常(这次不会呈现光网格)。每个对象都有一个着色器,该着色器可以访问光图,并根据光图的颜色对自身进行适当的遮挡。

反正这就是我的主意。我把这个搞砸了。我使用一个单独的相机将光线映射渲染成一个渲染纹理与一个剔除掩码,这样它只渲染光网格,这是在他们自己的一层。然后,我手动地将该纹理传递给使用其屏幕uvs的着色器进行采样。

这有点工作,但现场视图是完全混乱的,因为它试图照亮的东西,就好像你是从照明相机的角度看它。我觉得这会使系统很难使用,所以我想尝试使一些感觉更有凝聚力。

下面是一些截图来解释:

浅褐色的盒子是我的“灯”,它被渲染到灯光摄像机上,在场景中可见。下一张是呈现给lightmap的内容:

黑色背景不是来自大黑匣子,清晰的标志只是设置为黑色。

现在根据这张光地图,屏幕的中央应该亮起来。事情就是这样的:

注意,在游戏视图中,由于光摄像机的设置与游戏摄像机具有相同的位置/旋转/透视设置,所以看起来很好:

主要的问题是找出额外的渲染。在只呈现光网格的场景渲染之前,是否要为主摄像机创建一个额外的通行证?我可能会从那里算出剩下的。如果我能让lightmap成为一个全局着色器变量,这样我就不必把它传递给每一个单独的材料,而是一次一件事,对吗?

非常感谢任何人能在这个问题上阐明一些观点。我仍然是相当新的着色器和渲染,所以任何帮助都是非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2022-05-19 17:25:30

如果我正确理解的话,你的问题是你的灯光在场景视图中的外观,对吗?

为此,您可以为它们创建一个自定义小部件,并隐藏原始对象。有一个教程:

https://learn.unity.com/tutorial/creating-custom-gizmos-for-development-2019-2#5fa30655edbc2a002192105c

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72308150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档