如何在OpenGL ES着色器中实现Catmull Clark细分算法

时间:2011-03-18 13:59:34

标签: opengl-es shader

我已经在网格上运行了简单的Catmull Clark细分算法。但它运行在CPU上,经过几次迭代后,它变得太计算密集了。我认为解决这个问题的一种方法是用Shader语言重写它,然后在GPU上运行它。

是否有相同的例子?

2 个答案:

答案 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面(与面片不同)需要具有它们共享的顶点,我不知道如何指定这种关系。除了搜索相等的顶点以外,从而使任何性能提升都无效。