PeriDyno中的管线代表模块的集合,通过模块间的数据连接实现模块的依次调用,最终实现节点的状态变量更新或者为渲染及后处理提供输出数据。
相比于其他管线(如OpenGL管线),PeriDyno管线具备如下特点:
以刚体动力学为例,其仿真管线的可视化效果图如下:
管线继承自模块(Module),除了继承Module的功能之外(如数据管理),还具备如下管线特有功能:
添加模块:
void pushModule(std::shared_ptr<Module> m);
删除模块:
void popModule(std::shared_ptr<Module> m);
更新模块序列:
void updateExecutionQueue();
该部分算法通过调用有向无环图的拓扑排序(Topological Sorting)实现。
启用/禁用管线:
void enable();
void disable();
导出模块输出到节点输出:
void promoteOutputToNode(FBase* base);
撤销模块输出:
void demoteOutputFromNode(FBase* base);
更多管线实现细节,参加 src/Framework/Module/Pipeline.h(cpp)实现。