Unity Shruiken alpha 值错误

问题描述 投票:0回答:1

我正在尝试使用我为 Unity 制作的液体物理资源来实现元球液体效果。 我模拟了 1000 个粒子。然后,我将这些粒子中的每一个渲染为 Unity shruiken 粒子渲染器中的一个粒子。它们以 Alpha 和透明方式渲染。使用移动\粒子 lphablend 着色器

这是使用的图像

然后,我将所有这些渲染到渲染纹理,并让着色器读取此渲染纹理并在网格上绘制最终液体。 着色器代码是这样的..

half4 frag (v2f i) : COLOR
{       
    half4 texcol,finalColor;
    finalColor = tex2D (_MainTex, i.uv); 
            
    if(finalColor.a < _botmcut)
    {
        finalColor.a = 0;  
    }
    else
    {
        finalColor.a *= _constant;  
    }
                            
    return finalColor;
}

如果整体 alpha 低于某个值,则绘制 0 alpha。

这是渲染纹理的样子...

到目前为止一切顺利,顺便说一句,这两个白球是精灵,使用与 shruiken 粒子相同的纹理和相同的着色器。

现在 alpha 值在渲染纹理和编辑器中看起来都很好。但是着色器从 shruiken 粒子读取的值是错误的,这是我的问题。 这是一张显示着色器读取的 alpha 值的图像,其中红色 = alpha。

你可以看到两个精灵都很好,它们的 alpha 值加在一起,而 shruiken 的则错误,看起来每个粒子的原始 alpha 值都覆盖了它后面的粒子。所以粒子之间的空间趋向于具有非常低的 alpha 值,而它应该很高(并且在编辑器和渲染纹理中看起来很高)

很久以前,我使用旧的椭球体粒子发射器(已被删除,迫使我切换到shruiken)就完美地实现了这个精确的解决方案......此外,如果我使用1000个精灵,这将完美呈现,但会有那里的性能成本。

我的问题是...

  1. 除了 Unity Shruiken 粒子系统之外,还有其他替代方案来绘制大量像这样的小精灵吗?我只能切换到任何替代方案作为解决方法。

  2. 你认为我可以在 shruiken 系统上更改任何设置来解决这个问题吗(它几乎都是默认的 atm。)

unity-game-engine graphics shader particle-system shruiken
1个回答
0
投票

好吧,出于某种原因, 这个内置着色器有问题.. Mobile\Particles\Alphablend 但这个内置着色器不.. Sprites\Default

将我在 shruiken 粒子系统中使用的材质切换到内置 Sprites\default 着色器解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.