第一范文网 - 专业文章范例文档资料分享平台

CUDA光线跟踪渲染器的实现和优化(6)

来源:用户分享 时间:2021-06-02 本文由北栀凉心 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

方式显示过程中,图像数据将再次被传输到显卡的显存中进行显示。当图像数据很大时,显卡与内存的数据传输速度将严重影响渲染器的运行性能。

实际上,图像数据的显示最终仍然是在显卡上进行的。如果能够将光线跟踪生成的显卡中的图像数据直接在显卡上进行显示,就可以避免图像数据的来回传输。CUDA提供了一115 种基于OPENGL的显卡缓存绑定机制。当使用OPENGL进行渲染时,可以将渲染数据指定

为CUDA全局内存中存放的缓存数据。采用这种方式后,渲染器的渲染速度的确获得了一定的提升(表1)。

表1图像数据存放位置对运行性能的影响

120

4.2 内存访问对齐

前文中实现的光线跟踪渲染器,场景中所有的对象数据均放在了全局内存(Global Memory)中。在CUDA平台上,对全局内存的数据访问必须满足严格的内存对齐和存取顺序,才能一次性获取到每个线程访问的数据,实现完全的并行。若这样的规则不能被满足,125 则会产生内存访问冲突,数据的访问将被串行化,GPU的并行计算性能将不能够完全的发

挥。

在进行光线跟踪的过程中,相邻的一组像素的跟踪计算任务通常被安排给一组并行执行的线程组。这些相邻像素发射的光线大部分时候都会与同一个物体相交,造成线程组在同一时刻访问同一个内存单元。全局内存不支持这样的并行访问,所以实际上这些线程组的运行130 都被串行化了。而另一方面,由于相邻像素可能靠近物体的边界,或者在与同一个物体相交

后,由于反射光线和折射光线的角度不同,最终会与不同的物体进行求交点运算。但不同物体的数据在全局内存中往往是难以满足对齐存放的,并且每个线程访问的物体的数据也是不确定的。在这种情况下,全局内存的存取规则很难被满足。

在CUDA平台中,常量内存(Constant Memory)具有一些全局内存所不具备的特点。常135 量内存配备了Cache,在Cache命中的情况下,数据的存取速度是很快的。同时,常量内存

实现了一种类似广播的机制:当一个线程组同时访问同一个内存地址的数据时,所有线程都能在一个存取周期内取得数据,并且访问该数据的速度类似于访问每个线程单独的寄存器。由此可见,常量内存比全局内存更适合于存放场景数据。通过将场景数据存放在常量内存,渲染器的运行性能有了较大的增加(表2)。

140

表2 内存对齐读取对运行性能的影响

由于常量内存只能通过CPU端调用CUDA内存分配函数进行更改,因此当光线跟踪渲染器在CUDA上运行时,常量内存的数据是无法修改的,这就使得常量内存中存放的场景145 数据只能是静态场景的数据。对于3D漫游类的应用,由于只需要移动摄像机,可以将全部

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科CUDA光线跟踪渲染器的实现和优化(6)全文阅读和word下载服务。

CUDA光线跟踪渲染器的实现和优化(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1198258.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top