gpt4 book ai didi

ios - 增加 SKShader 中的统一值

转载 作者:搜寻专家 更新时间:2023-11-01 06:56:24 25 4
gpt4 key购买 nike

在 SpriteKit 节点上,我运行片段着色器 (SKShader) 来显示动画 (canvasNode.fillShader = shader)。

在某些时候,我想增加一个统一参数(transitionProgress,介于 0 和 1 之间),以更改动画阶段。

目前,我只是将它从 0 设置为 1。

shader.uniforms = [
SKUniform(name: "u_transitionProgress", float: 1)
]

但是,我宁愿有一个过渡(如线性增加,0, 0.001, 0.002, ... , 0.999, 1)以在这些值之间平滑过渡。

由于我无法在着色器中存储任何可以在每次执行时增加的值,实现该效果的最佳方法是什么? (或者是用略微增加的值一次又一次地执行上面几行的唯一方法?)

最佳答案

The SKShader documentation说你的着色器收到这个制服:

float u_time; | Uniform | The elapsed time in the simulation.

所以用它来驱动动画。

耗时被传递给 SKSceneupdate 方法。在名为 u_transitionStartTime 的制服中将其传递给着色器。然后,您可以使用 u_timeu_transitionStartTime 计算转换进度(如果需要,还可以使用另一个统一的转换结束时间或转换持续时间)。

关于ios - 增加 SKShader 中的统一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53165137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com