冒着捡帽子的风险,我还是问了这个问题。
需要为Unity3d编写一个着色器,它看起来是最简单的,呈放射状出现的图像(如下面的 gif 中所示),但具有模糊和渐变透明效果。也就是说,填充图像的一段(例如 30 度)- 不清晰可见,但透明度平滑过渡(下图中的示例)。
同时,零透明度的图像有最大的模糊(虽然它在透明图像上不可见,并且在这个例子中不是很清楚,但是因为当使用着色器时它会应用于照片之间的过渡,一切将在那里清晰可见)并且随着单个像素的透明度降低,它们的模糊程度也会降低。因此,如果透明度为 100(不透明),则模糊 = 0。
看了好几篇文章,脑子里还是想不通。我读了高斯模糊是如何实现的(平均每列/行的精灵上最近像素的 rgb 值),我知道有必要为此附加透明度并根据另一个改变一个,但是,例如,如何做到这一切,直接在代码中,这里还附上了动画,我完全不明白(虽然我明白有一个属性,_TransVal有一个#pragma alpha负责透明度的参数)。
因为 我以前不必编写着色器,老实说,我在 Internet 上找到的那些文章并没有带来太多清晰度 - 特别是在实现问题上。非常了解着色器是什么、它们是什么以及为什么 - 我有它。
如果有人承诺使用我的任务示例逐步描述实施过程并进行解释,我将不胜感激:他们说我们为此需要这个,为此,这就是我们将如何改变模糊,这就是透明度,这就是我们添加动画的方式。
更新 我能够实现的目标:通过调整我在 delirium 中收集的误解的 sigma 和 cutoff 值(由于我缺乏编写着色器的经验),我需要的一切都会发生,除了一个 BUT,精灵在这一切的背后,它从何而来,如何摆脱它,我仍然无法理解。
http://g.recordit.co/rUaGYdynQ3.gif(大图)。
此材质(带着色器)应用于图像。图像和画布,它们被放置在由单独的相机渲染的transparentfx层上(该层在主相机上被禁用)。仍然需要了解如何在后面禁用(或从渲染中删除)这个精灵,并以最小的形式解决任务(填充边缘的透明度不再重要,至少要处理模糊)。
更新 2如果您将它设置在Image类型本身上filled并转动旋钮,任务就解决了fill amount。但是如何人为地关闭图像的渲染,只留下真实的渲染,仍然是不可理解的。
着色器输出:
更新 12 月 29 日
意识到我不太擅长像人一样写作,我尝试使用 Shader Forge,它似乎达到了预期的效果(必要的效果之一)。但结果很奇怪,在某种意义上,在单元的检查器窗口中显示了应有的效果,而在游戏场景中,可以说它表现得“简化”了。请参阅下面的 gif 以更好地理解。GIF1,检查器窗口。
GIF2,游戏窗口






