C# 在延迟渲染路径中动态添加光源(通过着色器)

C# 在延迟渲染路径中动态添加光源(通过着色器),c#,unity3d,cg,C#,Unity3d,Cg,我目前正在编写一个基于gpu的粒子系统,并且目前正在努力实现发光粒子(这样场景也会被照亮) 我正在生成四边形的组合网格(每个粒子一个),并尝试在片段着色器中使用gbuffer输出的发射属性,但这只会导致发光粒子(与bloom摄影机效果结合),而不会照亮环境。(网格使用Graphics.DrawMesh渲染) 我尝试的另一件事是使用Graphics.DrawProcedural(通过使用几何体着色器生成四边形,而不是使用预先计算的网格)。一般来说,我更喜欢这种方法,但我甚至无法通过这种方式实现发光

我目前正在编写一个基于gpu的粒子系统,并且目前正在努力实现发光粒子(这样场景也会被照亮)

我正在生成四边形的组合网格(每个粒子一个),并尝试在片段着色器中使用gbuffer输出的发射属性,但这只会导致发光粒子(与bloom摄影机效果结合),而不会照亮环境。(网格使用Graphics.DrawMesh渲染)

我尝试的另一件事是使用Graphics.DrawProcedural(通过使用几何体着色器生成四边形,而不是使用预先计算的网格)。一般来说,我更喜欢这种方法,但我甚至无法通过这种方式实现发光效果(我不知道确切的原因:/)

是否有一种方法可以在照明过程发生之前动态添加光源(可能通过着色器,该着色器将包含位置的计算缓冲区作为输入)?或者是我错过的另一条路

提前感谢:)

编辑:也许可以使用DynamiGI.SetEmissive

编辑2:这是我想要实现的一个例子:

编辑3(对于那些到目前为止对我的发现感兴趣的人):DynamicGI不能使用,因为“实时”GI也是预计算的,只适用于静态游戏对象。此外,似乎没有办法在不通过CPU往返的情况下动态照亮场景:必须将粒子数据复制回CPU,然后。。。(我真的不知道,你可以激活一束点光源,这在性能方面不是很令人愉快)。查看我发布的视频,看起来粒子数据被复制回cpu,以便在运行时更新渲染网格(在0:17时,您可以在编辑器中看到一组四边形,我假设每个粒子一个四边形)。在这一点上,我认为我可以使用DynamicGI.SetEmissive,但我不能