如何在OpenGL ES着色器中实现Catmull Clark细分算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在OpenGL ES着色器中实现Catmull Clark细分算法相关的知识,希望对你有一定的参考价值。
我已经实现了简单的Catmull Clark细分算法来在网格上运行。但它运行在CPU上,经过几次迭代后,它变得太计算密集了。我认为解决这个问题的一种方法是用Shader语言重写它,然后在GPU上运行它。
有没有相同的例子?
答案
AFAIK你需要GPU上的几何着色器(曲面细分)功能 - 发射/创建新的顶点。
http://en.wikipedia.org/wiki/Geometry_shader
我目前还不知道支持OpenGL ES的消费类硬件。
另一答案
Catmull-Clark是在面部被分解为基元(点,线,三角形)之前完成的。例如,Catmull-Clark维基百科页面显示一个立方体被更改为一个球体,如果使用三角形面而不是方形,则生成的形状将不是球体。这可能在使用补丁的Vulkan中是可能的,但我不知道如何。要做Catmull-Clark面(与补丁不同)需要有他们共享的顶点,我不知道如何指定这种关系。除了搜索相等的顶点之外,从而使任何性能增益无效。
以上是关于如何在OpenGL ES着色器中实现Catmull Clark细分算法的主要内容,如果未能解决你的问题,请参考以下文章
如何在 OpenGL ES 2.0 中获得“发光”着色器效果?