HLSL圆形/螺旋过渡着色器

时间:2018-11-13 16:59:09

标签: wpf hlsl

我正在为WPF开发一些着色器,到目前为止,我设法淡出并且使着色器正常工作,但是对于这一点,我不知道从哪里开始。 有人可以向我提供一些有关解决此问题的技巧吗? 我要实现的目标如下: HLSL desired effect

谢谢

1 个答案:

答案 0 :(得分:1)

在我看来,构建任何复杂效果的最简单方法是将原始效果分解为小部分,然后将它们加在一起。就您而言,效果包括3个部分:

  1. 5个戒指,彼此接连
  2. 每个环都是从左侧逆时针填充的
  3. 圆环的两端是一个圆

请记住,您可以为每个零件分别构建一个解决方案,然后将结果加在一起。

我假设将有一个变量float progress;从0滚动到1,这确定了横移的进度。

下面是每个部分的一些起点:

对于1.,您检查片段的纹理坐标到屏幕中心的距离,并将最大距离分为5个部分。当进度为0 <=进度<0.2时,第一个环可见,而0.2 <=进度<0.4则第二环,依此类推。

对于2.,您检查片段与中心到左向量之间的差向量的角度,例如使用atan2。在每个部分(例如0.0-0.2)中,您将舞台的局部进度与角度进行比较以确定可见性,从而使片段以与角度相关的方式出现。

3.可能是最棘手的部分,因为您将必须构造进度环末端的中心并计算到片段的距离。如果它在当前环内,则可见厚度。

希望这种快速的想法可以为您提供一个大致的起点!