我已经使用 Assimp 和我自己的 OpenGL 渲染器为 Collada 文件实现了 GPU 蒙皮。这工作正常。
现在,我的应用程序应该允许指定第 3 方顶点和片段着色器,并且应该与蒙皮一起使用。
一个示例用例可能是,这个外部着色器围绕 Y 轴弯曲空间并向场景中添加雾......等等。
使用 GPU 蒙皮时可以吗?
可能的?是的。但并不简单。
做到这一点最不痛苦的方法是利用能够为着色器提供多个字符串的优势。使您的“蒙皮着色器”成为一个返回顶点的相机空间位置的函数。您甚至可能有此功能的多种变体。一种返回位置,一种返回位置和法线,另一种返回位置和 TBN 切线空间基矩阵。
用户提供的着色器将简单地调用此函数来获取相机空间位置/法线。编译着色器时,只需将您的蒙皮着色器字符串放在调用glShaderSource
.