java系统找不到指定文件怎么解决
385
2022-10-23
硬件加速的PowerVR光线追踪API(一)
本文我将对PowerVR光线追踪团队创建的API进行简要介绍。该API允许开发人员访问Wizard 架构的PowerVR光线追踪硬件。我将简单概述硬件层发生的物理变化及其相比传统的GPU所变化的具体内容。随后,我将着重讨论新创建的供开发人员访问硬件的OpenGL ES 3.1扩展程序。
以下内容的前提是默认各位读者已经了解光线追踪的概念。若不了解,可以先查阅光线追踪的相关信息。本文不会深入探讨每个功能,详细的信息将在后续的文章中进行讨论。
前一段时间,我们介绍了启动光线追踪功能的四核集群PowerVR GR6500 GPU。最近,我们又展示了一些目前在GPU上运行的光线追踪应用程序。
下图是我们添加的用于加速光线追踪的硬件功能:
图表展示了光线追踪新的硬件模
光线数据管理光线数据管理(RDM)模块将交叉点归至统一着色集群(USC)中,再由集群进行光线着色
场景层级生成器场景层级生成器(SHG)模块即使用标准顶点着色器生成的世界坐标顶点,在光线交点处理器之后生成加速结构。
相干引擎该模块是光线追踪装置(RTU)的一部分,并以相同的方式缓冲了一组遍历场景层级的光线且遵循类似的执行路径。这样,在内存中获取光线数据时便可以避免缓存缺失,并由此减少带宽和功耗。更多信息将在后续文章中详细介绍。同时,您还可以关注2014GDC论坛获取更多相干引擎的资讯。
光线交叉处理器该模块是RTU的一部分,可以测试SGH生成的位于主内存的三角形光线及场景层级光线。
帧累加缓存该硬件模块从USC中获取累积指令,并使用编写的缓存来加速某些在光线追踪着色器中可以使用的图像原子操作。这意味着我们可以发出只编写指令,这些指令将异步列队并执行。
PowerVR GR6500 GPU在PCIe卡上进行集成,如下图所示,使用RTU时其峰值性能为每秒3亿光线。SHG的目标是生成加速结构,使顶点输出从每秒1亿动态三角形开始加速。
The API
光线跟踪硬件对典型的GPU设计进行了延伸,使之不仅仅只是单一的硬件。我们决定通过添加光线追踪功能来扩展OpenGL ES 3.1,以充分利用这个开发人员较为熟知的OpenGL ES API。我们选择使用现代规范,如直接状态访问、无绑定等,因为预计这将是未来的API模式。Vulkan API的潜力不容忽视,但Vulkan仍处于待开发中,本文只介绍OpenGL ES扩展。
● 顶点处理
光线追踪器输入与光栅输入是不同的。光线追踪器处理的是世界坐标中的对象,这是因为光线追踪器需要访问整个场景。例如,其场景中的对象反映的摄像机获取的某个对象,而光栅中这却很难处理。
正因为如此,PowerVR硬件光线追踪API处理顶点输出时是在世界坐标而非光栅的剪辑空间中。这意味着我们将要以不同的帧率运行各层的顶点至光栅中——在光栅中,摄像机通常从帧到帧移动。即便不是,大多数游戏平台也将重新渲染场景,因为传输过程中某些信息发生了改变。
这不同于光线追踪器。我们从摄像机运动中解耦,在应用程序启动时运行顶点着色器,随后,如果场景中没有任何对象在世界坐标中发生移动,则无需再次运行顶点着色器。当然,当摄像机移动时,仍然需要在每一帧进行光线遍历,但为场景静态部分生成的场景层级则无需如此。
预期OpenGL ES的变量及其他特性运行如下:
(gl_BuildIDIMG explained below)
然而,由于世界坐标中的顶点处理与光栅顶点处理不同,因此我们需要不同的API来进行顶点处理……
● 场景构造
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~