【问题标题】:Shader to combine two sprites结合两个精灵的着色器
【发布时间】:2014-04-03 12:51:54
【问题描述】:

我有 两个 精灵需要组合成 一个。我有一个使用 Shaderlab 语法的着色器,它适用于普通纹理,但 SpireRenderer 会警告它是一个固定函数着色器,而且它不适用于Sprite Packer

这是我的目标:

所以有一个 base sprite 用于背景和 image sprite 为卡片提供最终外观。使用 ShaderLab 我可以只使用“组合纹理”来执行此操作,但我不知道如何或是否可以使用 CG。

【问题讨论】:

  • 这个过程什么时候发生?可以在初始化时完成还是需要在帧缓冲区上完成?
  • @user1610743 是的,它应该在帧缓冲区上完成。在初始化中进行纹理组合会增加加载时间。
  • 事情是,在初始化期间做 1x 的事情远比在每一帧中一遍又一遍地做事情要好得多。如果您需要在每一帧内多次进行组合,则尤其如此。我无法为您发布一些代码,因为我不确定为什么将组合一次渲染到帧缓冲区中,将其复制到纹理缓冲区(GPU 内)然后使用该纹理作为预加工组合。另外,我对 Unity3D 不太熟悉。它真的会为你以后的游戏循环节省一些性能。

标签: unity3d shader sprite


【解决方案1】:

混合可以这样工作:

fixed4 bg = tex2D(_BackgroundSprite, IN.uv);
fixed4 fg = tex2D(_ForegroundSprite, IN.uv);

fixed3 col = fixed3(fg.rgb * fg.a + bg.rgb * bg.a * (1 - fg.a));
return fixed4(col, fg.a + fg.b * (1 - fg.a));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多