Original
2016-06-20
Unity官方
Unity官方平台
在刚刚结束的WWDC 2016大会的“Metal新功能”环节中,Apple工程师展示了由Unity工程师使用Metal技术制作的自适应曲面细分(Tessellation)的Demo。演示了一个低面数球体表面随着我们通过位移贴图改变材质的过程中被不断细分为更多的三角形面片,展示了各种材质的炫酷细节。
以此Demo为证,我们已经在Unity中添加了对Metal Tessellation和Metal Compute技术以及原生Metal着色器语言的支持。我们迫不及待地希望尽快将这些支持移植到Unity正式版中。
Metal Tessellation的出现让Unity可以启用预先为Metal准备的曲面细分着色器,同时为曲面细分因子的生成与绘制调用之间的解耦合提供了全新的可能。你可以选择预先生成曲面细分因子,或者编写自定义的Compute Shader在每次绘制时或者作为独立的Pass高效生成。无论以何种方式生成曲面细分因子,每次绘制的渲染管线都保持不变,只有一个顶点着色器和一个片段着色器,再加上曲面细分器发射的新生成贴片。 在展示的Demo中,我们在Metal原生Compute Shader的每次绘制中编写了自定义的“内核补丁”来计算曲面细分因子缓存。然后循环切换在Unity编辑器中设置的一些材质属性,并用其替换曲面细分器在“后期曲面细分顶点着色器”(同样在Unity中使用原生的Metal着色器编写)中发射的三角形。片段着色器也是Unity中已有的基于物理的标准着色器,但更多的三角形能更真实地展示出材质的细节。
Tessellation(曲面细分)可用于实现细节层次,高效调整以适应不同材质(见Demo),或各种其它特效,只有想不到,没有做不到!Tessellation技术很早就有了,现在终于可以用于iOS平台,并且可以生成非常细节化的网格而不需要从硬盘中事先存储或流式加载大的网格。 这只是Apple宣布的Metal新功能的冰山一角。一些其它的新功能如Metal Resource Heaps和Memoryless Render Targets,对性能及内存使用有了潜在改善,我们也会跟进看看Unity中如何利用这些功能。同时我们也希望大家都能将这么棒的Metal Tessellation用于自己的项目,并就使用过程中的疑问及时向我们反馈!