具有冲量传播的多线程物理引擎制造技术

技术编号:8719521 阅读:277 留言:0更新日期:2013-05-17 20:54
一种电路布置和方法,通过将场景中的物体的所有权分配给单独的线程、并通过在拥有相互接触的物体的线程之间传递线程间冲量消息以在相互接触的物体之间传播冲量、而使用该物体所分配给的线程来局部地传播冲量经过该物体,来实现多线程物理引擎中的冲量传播。

【技术实现步骤摘要】

本专利技术一般涉及数据处理,更具体地,涉及图形图像处理和呈现(rendering)以及与之相关的物理冲量传播。
技术介绍
呈现来自三维场景的二维图像的过程通常被称为图像处理。随着现代计算机产业的发展,图像处理也在发展。图像处理发展中的一个特定目标是使得三维场景的二维模拟或呈现尽可能地真实。此外,图像处理经常与建模或模拟现实世界场景相关联地使用,其中,表示物理、真实世界物体的虚拟或模拟物体在模拟场景中互相作用。例如,视频游戏越来越能够描绘越来越多的现实虚拟环境,例如通过高尔夫球的飞行、赛车的真实世界性能特征、飞行器的飞行或战争游戏中的爆炸结果。在图像处理的其他商业和科学应用(例如,飞行模拟、弹道模拟等)中,对虚拟环境中的物体的相互作用的准确建模受到更大的关注。在很多现代数据处理系统中,对物体的真实世界相互作用的建模由通常被称为物理引擎的计算机软件来处理。物理引擎尝试通过使用刚体动力学、软体动力学和/或流体动力学原理来模拟物理现象。大多数物理引擎的一个关键组件是碰撞检测/碰撞响应系统,其试图检测虚拟环境中的物体何时互相碰撞。基于检测到的碰撞,典型地执行动力学模拟,以解析碰撞后施加到物体的力和运动。某些物理引擎还依赖于基于冲量的算法,其中,冲量被施加到物体之间,以在其之间传播力。例如,当刚性或可变形的物体互相接触时,施加到一个物体的力必须被施加到与该物体接触的其他物体。类似地,施加到流体、织物或其他高度可变形的实体的力必须典型地传播经过这些实体。尽管某些更高精度的物理引擎不会受时间限制,许多其他的、特别是在交互视频游戏应用中使用的那些引擎,需要“实时”运行。因此,与物理计算例如碰撞检测和冲量传播相关联地执行的操作经常需要被快速和高效地完成。传统的碰撞检测和冲量传播技术典型地在串行、单线程的应用中运行,其中,运动中的每个物体相对于场景中的所有其他物体被测试,且冲量在物体之间一个接一个的传播。在一些实例中,碰撞检测会利用空间裁剪来降低所需的碰撞计算的次数。此外,物体可以用细节层次(LOD)模型来建模,以将物体简化为更容易计算的形状,以便检测两个物体何时互相接触。例如,很多碰撞检测技术使用简单的形状例如球形或其他立方体积来表示更复杂的物体。更详细的包围体(bounding volume)可以在某些应用中被设计,以提高碰撞精度,但是,这样做通常是以更多处理时间和/或硬件需求为代价的。随着半导体技术在时钟速度以及并行处理的越来越多的使用方面的提升,实时物理引擎的能力必然会提升。在芯片级别,多个处理器核心通常被置于同一芯片上,其与分离的处理器芯片、或者在一定程度上与完全分离的计算机类似的方式来运行。此外,即使在核心内部,通过使用专门用于处理特定类型操作的多个执行单元,并行处理也被使用。基于硬件的流水线在很多实例中也被使用,从而可占用多个时钟周期执行的特定操作被分解为阶段,使得其他操作能在较早的操作完成之前被启动。多线程也被使用以使多指令流被并行处理,使更多总体工作能在任何给定时钟周期内被执行。但是,即使有提升的时钟速度和并行处理,传统的碰撞检测和冲量传播技术在大多数传统架构下仍然有性能瓶颈。特别地,传统技术通常需要大量的随机存储器存取,以检索和管理场景中的物体,这被发现引起低的高速缓存利用率和其他性能相关的瓶颈。此外,在很多动态、实时的环境中,将负载分布到执行的多个并行线程中会有问题。特别地,在给定场景中的物体的数量、以及这些物体的分布会随时间而变化。尽管在某个时刻需要大量处理资源的多个物体间的碰撞会在场景的一个区域中发生,在另一时刻,更多碰撞且由此更重的处理工作量会在场景的另一区域中发生。因此在本领域中仍然存在对高效地处理物理引擎中的物理碰撞检测和冲量传播的需求。
技术实现思路
本专利技术通过提供电路布置和方法来解决与现有技术相关的这些和其他问题,该电路布置和方法通过将场景中的物体所有权分配给单独的线程、并通过在拥有接触物体的线程之间传递线程间冲量消息在互相接触的物体之间传播冲量、而使用物体所被分配给的线程来局部传播冲量经过这样的物体,来实现多线程物理引擎中的冲量传播。因此,根据本专利技术的一方面,使用多线程物理引擎在场景的多个物体之间传播冲量。对于多个物体中的每个,这样的物体的所有权被分配给多线程物理引擎中的多个线程中的一个。此外,响应于冲量被多个物体中的第一物体接收到,使用多个线程中的第一线程来局部地传播冲量经过第一物体,该第一物体的所有权已被分配给该第一线程,且通过将线程间消息从第一线程发送到多个线程中的第二线程,将冲量传播到与第一物体接触的多个物体中至少一个额外物体,该额外物体的所有权已被分配给该第二线程。表征本专利技术的特点的这些和其他优势和特征将在所附权利要求书中阐述,并形成其额外的部分。但是,为了更好地理解本专利技术以及通过其使用所带来的优势和目标,需要参考附图和伴随的描述性内容,其中描述了本专利技术的示例性实施例。附图说明图1是包含可在根据本专利技术的实施例的数据处理中使用的示例性计算机的示例性自动计算机器的框图。图2是在图1的计算机中实现的示例性NOC的框图。图3是更具体地示出来自图2的NOC的节点的示例性实现的框图。图4是示出来自图2的NOC的IP块的示例性实现的框图。图5是适于在图2的NOC中实现的线程流水线软件引擎的框图。图6是适于在图5的线程流水线软件引擎中实现的示例性软件流水线的框图。图7是适于在图5的线程流水线软件引擎中实现的示例性呈现软件流水线的框图。图8是示例性场景的框图,其用于示出使用图7中的GIR生成器来生成几何体内部表示。图9是为图9中的示例性场景生成的几何体内部表示的框图。图10是示出由图7中的GIR生成器执行的几何体布置例程的程序流的流程图。图11是示出由图7中的GIR生成器执行的添加几何体例程的程序流的流程图。图12是在图7中引用的流式几何前端的示例性实现的框图。图13是图7中引用的光线跟踪后端的示例性实现的框图。图14A和14B —起更具体地示出了图7中的呈现软件流水线的实现。图15是用于示出以根据本专利技术的方式进行的碰撞检测的示例性场景的框图。图16是适于以根据本专利技术的方式实现碰撞检测的示例性NOC的框图。 图17是示出由图16中的NOC中的主线程执行的示例性碰撞检测例程的程序流的流程图。图18是示出由图16中的NOC中的从线程执行的示例性碰撞检测例程的程序流的流程图。图19是用于示出以根据本专利技术的方式进行的预测性负载平衡的示例性场景的图。图20是示出结合了以根据本专利技术的方式进行的预测性负载平衡的示例性物理引擎的程序流的流程图。图21是示出图20中引用的预测性负载平衡例程的程序流的流程图。图22是示出根据本专利技术的由图16的NOC中的主线程执行并使用预测性负载平衡的示例性碰撞检测例程的程序流的流程图。图23是示出根据本专利技术的由图16的NOC中的从线程执行并使用预测性负载平衡的示例性碰撞检测例程的程序流的流程图。图24是以根据本专利技术的方式与冲量传播一起使用的示例性质点动态格(particle dynamic lattice)的框图。图25是以根据本专利技术的方式适于实现冲量传播的示例性NOC的框图。图26是示出使用图25的NOC的根据专利技术的、与冲量传播一起使用的示例性初始化例程的程序流的流程图本文档来自技高网
...

【技术保护点】
一种电路装置,包括:片上网络硬件逻辑装置,包含定义多个硬件线程的多个处理核心,以及将多个处理核心互相耦合的片上网络;以及由多个硬件线程中的至少部分执行的物理引擎,该物理引擎包含多线程软件流水线,该多线程软件流水线包含多个阶段,其被配置为检测场景中的多个物体中的物体间的碰撞,以及多个冲量传播线程,其被配置为传播所述多个物体中的互相接触的一组相邻物体之间的冲量;其中,所述物理引擎被配置为,对于所述一组相邻物体中的每个,将该物体的所有权分配给所述多个冲量传播线程中的一个,并为该物体所分配给的冲量传播线程生成相邻物体表,其标识了所述一组相邻物体中与该物体接触的每个物体;其中,所述物理引擎被配置为,响应于检测到的与所述一组相邻物体中的第一物体的碰撞,生成包含大小和方向的第一线程间冲量消息;并且其中,所述多个冲量传播线程中的每个冲量传播线程被配置为,响应于接收到与冲量关联的线程间冲量消息,局部传播这样的冲量经过所有权被分配给该冲量传播线程的物体,为该冲量传播线程的相邻物体表中所标识的每个相邻物体来确定传播的力的大小和方向,通过将线程间冲量消息发送到用于该冲量传播线程的相邻物体表中所标识的每个相邻物体的冲量传播线程,来将冲量传播到该每个相邻物体的冲量传播线程,该线程间冲量消息包含为该冲量传播线程确定的传播的力的大小和方向,从该冲量传播线程的相邻物体表中所标识的每个相邻物体接收线程间冲量应答消息,至少部分基于线程间冲量应答消息来确定反作用力的大小和方向,以及发送具有反作用力的大小和方向的线程间冲量应 答消息,作为对接收到的线程间冲量消息的应答。...

【技术特征摘要】
2011.08.18 US 13/212,4031.一种电路装置,包括: 片上网络硬件逻辑装置,包含定义多个硬件线程的多个处理核心,以及将多个处理核心互相耦合的片上网络;以及 由多个硬件线程中的至少部分执行的物理引擎,该物理引擎包含多线程软件流水线,该多线程软件流水线包含多个阶段,其被配置为检测场景中的多个物体中的物体间的碰撞,以及多个冲量传播线程,其被配置为传播所述多个物体中的互相接触的一组相邻物体之间的冲量; 其中,所述物理引擎被配置为,对于所述一组相邻物体中的每个,将该物体的所有权分配给所述多个冲量传播线程中的一个,并为该物体所分配给的冲量传播线程生成相邻物体表,其标识了所述一组相邻物体中与该物体接触的每个物体; 其中,所述物理引擎被配置为,响应于检测到的与所述一组相邻物体中的第一物体的碰撞,生成包含大小和方向的第一线程间冲量消息;并且 其中,所述多个冲量传播线程中的每个冲量传播线程被配置为,响应于接收到与冲量关联的线程间冲量消息,局部传播这样的冲量经过所有权被分配给该冲量传播线程的物体,为该冲量传播线程的相邻物体表中所标识的每个相邻物体来确定传播的力的大小和方向,通过将线程间冲量消息发送到用于该冲量传播线程的相邻物体表中所标识的每个相邻物体的冲量传播线程,来将冲量传播到该每个相邻物体的冲量传播线程,该线程间冲量消息包含为该冲量传播线程确定的传播的力的大小和方向,从该冲量传播线程的相邻物体表中所标识的每个相邻物体接收线程间冲量应答消息,至少部分基于线程间冲量应答消息来确定反作用力的大小和方向,以及发送具有反作用力的大小和方向的线程间冲量应答消息,作为对接收到的线程间冲量消息的应答。2.一种使用多线程物理引擎在场景的多个物体之间传播冲量的方法,该方法包括: 对于多个物体中的每个,将该物体的所有权分配给多线程物理引擎中的多个线程中的一个;以及 响应于多个物体中的第一物体所接收到的冲量: 使用多个线程中的第一线程来局部地传播冲量经过第一物体,该第一物体的所有权已被分配给该第一线程;以及 通过将线程间消息从第一线程发送到多个线程中的第二线程,将冲量传播到多个物体中与所述第一物体接触的至少一个额外的物体,该额外物体的所有权已被分配给该第二线程。3.如权利要求2所述的方法,其中,所述第一物体与多个相邻物体接触,且其中,传播冲量包括,对于多个相邻物体中的每个,将线程间消息从第一线程发送到多个线程中该相邻物体的所有权所分配给的线程。4.如权利要求2所述的方法,其中,每个物体包含与该物体的物理属性关联的至少一个属性,且其中,局部地传播冲量经过第一物体包括访问该第一物体的属性来模拟冲量传播经过该第一物体。5.如权利要求2所述的方法,其中,将冲量传播到额外的物体包括访问与所述第一物体和额外物体之间的物理关系关联的物理常数,来确定力的大小和方向,其中,所述线程间消息包括所确定的力的大小和方向。6.如权利要求5所述的方法,其中,所述物理常数包括弹簧常数和撕裂常数中的至少一个。7.如权利要求2所述的方法,其中,响应于所述第一线程接收到的第二线程间消息,发起局部地传播冲量,该第二线程间消息包括与冲量关联的大小和方向,且其中,局部地传播冲量包括确定是否仍然有剩余的力要被传播到额外的物体,从而只有当仍然有剩余的力时,该冲量才被传播到额外的物体。8.如权利要求7所述的方法,还包括确定反作用力,并发送具有所确定的反作用力的线程间消息,作为对所述第二线程间消息的应答。9.如权利要求8所述的方法,还包括:在所述第一线程中,接收来自所述第二线程的第三线程间消息作为对第一线程间消息的应答,该第三线程间消息包含第二反作用力,其中,对第一反作用力的确定至少部分基于该第二反作用力。10.如权利要 求2所述的方法,还包括为所述第一物体确定场景中与该第一物体接触的一组相邻物体,并生成标识这组相邻物体的相邻物体数据结构,其中,所述第一线程被配置为访问该相邻物体数据结构,来确定冲量应该被传播到多个物体中的哪些物体。11.如权利要求2所述的方法,其中,所述多个线程包括多个冲量传播线程,且其中,多线程物理引擎包括至少一个碰撞检测线程,该方法还包括响应于检测...

【专利技术属性】
技术研发人员:E·O·梅德里希P·E·沙尔特R·A·希勒M·R·塔布斯
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1