我目前正在升级和重构一个OpenGL渲染引擎。该引擎用于可视化建筑数据的大型场景(包括内部的建筑物),对象数量可能相当大。与任何建筑物一样,墙壁内有许多被遮挡的对象,自然情况下只能看到与您在同一房间中的对象或者如果您在室外则只能看到外部。这就需要通过遮挡剔除和视锥体剔除来遮挡大量对象。
同时,存在许多可以批处理的重复几何图形,并且许多对象可以使用实例化渲染进行渲染。
在我看来,将渲染批处理和剔除结合起来是很困难的。如果您在同一VBO中批处理太多对象,则难以在CPU上剔除对象以跳过渲染该批次。如果同时跳过CPU上的剔除,则在GPU处理不可见对象时会有大量对象被处理。如果完全跳过批处理以更轻松地在CPU上进行遮挡剔除,则会产生不必要的高渲染调用次数。
我研究了现代图形技术中已有的技术和理论,以解决这些问题,但我没有找到任何具体的解决方案。我和一位同事想出了一个想法,即将批处理限制在相对接近的对象上,例如在一个房间内或半径为n米以内的所有椅子。这可以通过使用八叉树进行简化和优化。
有人能指导一下现代图形引擎中用于场景管理、剔除、批处理等技术吗?
同时,存在许多可以批处理的重复几何图形,并且许多对象可以使用实例化渲染进行渲染。
在我看来,将渲染批处理和剔除结合起来是很困难的。如果您在同一VBO中批处理太多对象,则难以在CPU上剔除对象以跳过渲染该批次。如果同时跳过CPU上的剔除,则在GPU处理不可见对象时会有大量对象被处理。如果完全跳过批处理以更轻松地在CPU上进行遮挡剔除,则会产生不必要的高渲染调用次数。
我研究了现代图形技术中已有的技术和理论,以解决这些问题,但我没有找到任何具体的解决方案。我和一位同事想出了一个想法,即将批处理限制在相对接近的对象上,例如在一个房间内或半径为n米以内的所有椅子。这可以通过使用八叉树进行简化和优化。
有人能指导一下现代图形引擎中用于场景管理、剔除、批处理等技术吗?