我已经实现了简单的Catmull Clark细分算法来在网格上运行。但它运行在CPU上,经过几次迭代后,它变得太计算密集了。我认为解决这个问题的一种方法是用Shader语言重写它,然后在GPU上运行它。
有没有相同的例子?
AFAIK你需要GPU上的几何着色器(曲面细分)功能 - 发射/创建新的顶点。
http://en.wikipedia.org/wiki/Geometry_shader
我目前还不知道支持OpenGL ES的消费类硬件。
Catmull-Clark是在面部被分解为基元(点,线,三角形)之前完成的。例如,Catmull-Clark维基百科页面显示一个立方体被更改为一个球体,如果使用三角形面而不是方形,则生成的形状将不是球体。这可能在使用补丁的Vulkan中是可能的,但我不知道如何。要做Catmull-Clark面(与补丁不同)需要有他们共享的顶点,我不知道如何指定这种关系。除了搜索相等的顶点之外,从而使任何性能增益无效。