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