大家好,我是Lyle。
前阵子工作有点忙没怎么看消息。有同学反应Lib如何查看,这里说明一下。
一开始公司的同事Sean编写了一个Doc文档编辑器,本身用查看和编写文档。这个编辑器是内嵌在Unity里,导入方式是使用Unity2017后版本中PM可以从本地磁盘加入插件,并且采取独立于工程的外部引用。也就是说打开项目工程,就可以使用Doc组件,并且在一台设备上的不同项目中可以共享一个Doc文档。非常适合边开发边撰写说明,和跨工程使用。
问题就在于,文档保存在GitLab上和Sean自己的SVN服务器上。GitLab外网无法访问(一般公司也是这样)。
而Sean的服务器上一个个授权访问又非常不实际。加上获取到到Lib后还需要用PM来导入,所以这个情况还是有一点复杂的。
于是我们打算后面逐步把Sean Lib和Lyle'Shader Lib的文档迁移到外网,目前先试着迁移到知乎上。
Sean Lib地址 :https://zhuanlan.zhihu.com/c_1249334301872840704
Sean Lib主要提供各式小而精悍的插件,目前我个人使用得比较频繁的主要是程序化绘制贴图的TextureMaker,编写Shader用的ShaderLibrary,以及定制化函数需要的图形示波器等等,以及非常不错的Volume Light组件。
Sean Shader Lab地址:https://zhuanlan.zhihu.com/c_1249648712030359552
这个栏目下主要收录各种理论知识,大部分是相关Unity Shader。
我的Lib(上次有所提及的Lib):https://zhuanlan.zhihu.com/c_1249757547302678528
主要上传一些项目中使用且便于公开的一些效果。(目前更新了BlackHole)
前事叙毕,让我们回到正题。这次分析的是一个比较早的实例,是最早出现在Lib中的文档,迷你简易黑洞的思路。
这个BlackHole有几个明显特点。
1.内外高反差。中间深色,而边缘高亮,或亦反之。(当然一般发生BlackHole的时候身边是深色的,一般不会反过来。)可见图一。
2.内部扭曲。内部的纹理采样是被扭曲的。可见图二。
3.具有颗粒并且向内吸入。(这个用Particle System来实现也是可以的。)
4.采样的是屏幕坐标系(Screen Spece)令其内部看起来更像在另一个空间里。
图一:此图中很好地说明了内外部有无高反差的表现。
图二:内部的扭曲形态和强度可控。
图三:内部具有颗粒,并有方向。
图四:采样的是屏幕坐标,纹理并不随Mesh位置改变。
最终的效果。
本身这个Shader的优势在于制作难度低,易修改。
只需要一个普通的2个三角面组成的Mesh,甚至用Unity原生的Quad也没什么问题。
加上公告板的特性(Billboard),根本看不出是个面,做到了很好的视觉欺诈。第一眼很多人看成球体。
但是因为很多时候,大家使用它的时候是配合Particle System来做的,而Particle System本身就可具有Billboard选项,所以在最终的方案里,在标准版去掉了Shader自带的Billboard功能。当然在它的另一个变体Shader依然保留着这个功能。
配合Particle System带来的另一个好处是可以批处理,所以一般时候都选择使用Particle System来制作。
(曾经有人一口气发射了100个BlackHole.....)
遮罩部分的灵活性非常高,如果你乐意,你甚至可以用它来模拟一个"冥道残月破"。
它的优点既是它的缺点。
表现也很有限,因为它并不是一个真正的球体,是通过Billboard来做到视觉欺骗的。所以指望它在上面绘制很复杂的像素还是很难的。
所以目前还在制作它的变体,一个拥有视差效果(Parallax)的BlackHole,更具立体感和近处细节。
具体更多的细节,就放到视频链接里了。
3站地址:
B站:https://www.bilibili.com/video/BV1Tk4y1z754
A站:https://www.artstation.com/artwork/e0GkmJ
油管:https://www.youtube.com/watch?v=Cu8rdysNomA
该篇内容大体思路在知乎专栏《Lyle's Shader Lib》一样有发布,感兴趣的同学可以看看, 目前整个Lib不完善,陆续更新,搬运还需要不少时间。
那么下次再见。
古德拜。