当前位置: 首页 > 专利查询>东北大学专利>正文

一种基于GPU的光线跟踪方法技术

技术编号:15541233 阅读:112 留言:0更新日期:2017-06-05 10:44
本发明专利技术提供一种基于GPU的光线跟踪方法,包括:CPU端加载场景模型,解析得到三角片元信息、材质信息、光源信息后打包发送给GPU端;GPU端得到三角片元信息、材质信息、光源信息,分别存储到对应的全局存储器和常量存储器;GPU端建立以整个3D场景的场景模型为根节点的Kd‑Tree;GPU端进行光线跟踪操作;CPU端进行后期图像处理:CPU端读取图像缓存区的像素信息,显示到屏幕,完成渲染。本发明专利技术通过合理调用CPU和GPU协同工作提高光线跟踪效率。与传统的CPU渲染相比,渲染效率有明显提高,能够在较短时间内完成相同效果的模型渲染工作。

A ray tracing method based on GPU

The present invention provides a method of tracking, GPU light which is based on CPU terminal loading scene model, analytic triangular element information, material information, source information sent to the GPU terminal; GPU end to obtain triangular element information, material information, information source, are stored into the corresponding global memory and constant memory; to establish the model of the whole scene at GPU 3D scene is the root node of Kd Tree; GPU end ray tracing operation; CPU end image processing: image pixel information CPU end read buffer, display screen, complete rendering. The invention improves the ray tracing efficiency by reasonably calling CPU and GPU to work together. Compared with the traditional CPU rendering, the rendering efficiency is improved obviously, and the model rendering work with the same effect can be done in a short time.

【技术实现步骤摘要】
一种基于GPU的光线跟踪方法
本专利技术属于计算机图形学领域,特别涉及一种基于GPU的光线跟踪方法。
技术介绍
光线跟踪方法用于生成逼真的三维虚拟场景,是计算机图形学核心之一。自提出之日起发展至今,已经被广泛应用于影视制作、三维仿真、计算机辅助设计等领域,并且极大的促进了虚拟现实技术的进步。该方法是一项基于几何光学的通用技术,它通过跟踪与物体发生交互作用的光线,从而得到光线在物体表面产生的反射、散射等现象的路径,用以模拟生成真实的虚拟场景,被认为是图形处理的未来方向。光线跟踪方法需要跟踪场景中的每一条光线,由此涉及到每一条光线的折射、反射,并最后完成投影、可见面判定和着色三方面的任务,这导致了成像过程中计算开销的增大。尤其在大型复杂场景中,光线与物体相交次数多,并且由于物体表面材质的不同使得光线传播路线复杂,这都导致了计算开销的剧增。因此,计算密集且费时费力成为光线跟踪发展的重大障碍。提高光线跟踪的效率一直是该领域研究的重点。目前,这类问题的研究主要分为两个方向:一是改进空间加速结构,提高光线在场景中求交的速度;二是利用计算机硬件的并行原理,加快光线跟踪算法的执行速度。文献“启发式探查最佳分割平面的快速KD—Tree构建方法”,提出了一种基于分区(binning)算法的快速构建方法,该方法首先通过分析kd—tree的成本函数,启发式地定位了当前节点的分割平面所在的子区间;其次,对探查到的子区间进行进一步的细化采样(sub-sampling),使得到的分削平面更好地逼近最优分割位置,但是文章实现的是算法的单线程版本,未对内存管理进行优化,未充分利用计算机并行处理的优势,还有很大的提高空间。文献“基于物理的分布并行光线跟踪算法”针对斯坦福大学经典的多线程光线跟踪引擎——PBRT,提出了动态自适应分布式并行光线跟踪方法,首先利用裁剪窗口概念设计了为每个计算节点分配任务的方法,为计算机集群分布并行光线跟踪提供了粗粒度渲染单元;然后过分析比较分布式光线跟踪方法中静态和动态任务调度策略的优缺点,提出了一种静态和动态相结合的任务分配策略,提高了节点间的负载均衡度,该方法具有良好的效率和扩展性,提高了光线跟踪方法的并行度,但是算法单纯利用CPU集群,未考虑使用GPU提高渲染效率。可见上述方法中虽然对很大程度上提升了传统光线跟踪的效率,但在当今计算机架构下,未能充分发挥计算机的性能,在实际的应用过程中却存在着渲染效率低的问题,不能满足现实需求。
技术实现思路
针对现有技术存在的问题,本专利技术提供一种基于GPU的光线跟踪方法。本专利技术的技术方案如下:一种基于GPU的光线跟踪方法,包括:步骤1:CPU端加载场景模型,解析得到三角片元信息、材质信息、光源信息后打包发送给GPU端;步骤2:GPU端得到三角片元信息、材质信息、光源信息,分别存储到对应的全局存储器和常量存储器;步骤3:GPU端建立以整个3D场景的场景模型为根节点的Kd-Tree;步骤4:GPU端进行光线跟踪操作;步骤5:CPU端进行后期图像处理:CPU端读取图像缓存区的像素信息,显示到屏幕,完成渲染。所述步骤1,包括:步骤1.1:CPU端开辟内存或显存空间,将场景模型加载到内存或显存空间中;步骤1.2:CPU端对场景模型进行解析,得到三角片元信息、材质信息、光源信息;步骤1.3:将解析好的三角片元信息、材质信息、光源信息分别打包发送到GPU端。所述步骤3,包括:步骤3.1:建立3D场景中的各个场景模型的包围盒及整个3D场景模型的包围盒;步骤3.2:以整个3D场景模型的包围盒为根节点,自上而下进行分割,建立以Kd-Tree。所述步骤3.2,包括:步骤3.2.1:分别将整个3D场景模型的包围盒沿着不同轴向分割成两个子空间即得到左孩子节点、右孩子节点,分别划入左子树、右子树;步骤3.2.2:计算不同轴向的分割成本C(V)≈Kt+Ki(PLNl+PRNr),Nl,Nr为左孩子节点、右孩子节点中的场景模型包围盒数量,Kt、Ki为常数,PL、PR为光线进入左子树、右子树的概率,PL=SA(VL)/SA(V),SA(VL)表示左孩子节点中的场景模型包围盒的表面积和,SA(V)表示3D场景中的所有场景模型包围盒的表面积和,PR=SA(VR)/SA(V),SA(VR)表示右孩子节点中的场景模型包围盒的表面积和;步骤3.2.3:选择最小的分割成本对应的轴向分割平面,将整个3D场景模型的包围盒分割为左孩子节点、右孩子节点;步骤3.2.4:对步骤3.2.3中分割得到的左孩子节点、右孩子节点均执行步骤3.2.1~3.2.3;步骤3.2.5:判断是否到达最大分割深度或左孩子节点、右孩子节点内部三角片元数均小于指定阈值,是则停止继续分割,当前的分割结果即建立的Kd-Tree;否则执行步骤3.2.1。所述步骤4,包括:步骤4.1:初始化光线簇:根据3D场景中的相机位置生成光线,作为光线簇,存储在光线簇缓存区;步骤4.2:判定当前光线是否与Kd-Tree的包围盒相交:如果相交,则进行包围盒内部的场景模型与当前光线的相交测试,执行步骤4.3;否则当前光线不与Kd-Tree的包围盒内部的场景模型相交,将该场景模型作为背景信息填充到图像缓存区;步骤4.3:如果当前光线与包围盒内部的场景模型相交,则根据光源位置判断交点的可见性:如果光源被遮挡,则交点不可见,如果光源未被遮挡,则记录该交点处为光照处,并将该交点填充到图像缓存区;如果当前光线与包围盒内部的场景模型不相交,则将该场景模型作为背景信息填充到图像缓存区;步骤4.4:根据交点处场景模型的光线信息计算反射光线,并将反射光线设为当前光线,继续追踪;步骤4.5:当前光线簇缓存区非空且未到达最大遍历深度,返回步骤4.2,对光线簇缓存区中的下一条光线进行追踪;否则停止追踪。有益效果:本专利技术中CPU端加载场景模型,解析得到三角片元信息、材质信息、光源信息后打包发送给GPU端,分别存储到对应的全局存储器和常量存储器;GPU端建立以整个3D场景的场景模型为根节点的Kd-Tree;进行光线跟踪操作;CPU端进行后期图像处理。通过合理调用CPU和GPU协同工作提高光线跟踪效率。与传统的CPU渲染相比,渲染效率有明显提高,能够在较短时间内完成相同效果的模型渲染工作。Kd-Tree的应用能够提高光线跟踪时光线求交的效率,而GPU的使用,是利用其大规模并行执行的优势,在光线跟踪时能够多条光线并行执行,提高光线跟踪效率。附图说明图1是光线跟踪原理示意图;图2是本专利技术具体实施方式中所采用的系统框架图;图3是本专利技术具体实施方式中基于GPU的光线跟踪方法流程图;图4是本专利技术具体实施方式中的场景模型Dragon;图5是本专利技术具体实施方式中Kd-Tree示意图,(a)是Kd-Tree对应二维数据集合的一个空间划分示意图,(b)是构建的Kd-Tree示意图,(c)是构建的Kd-Tree在三维空间的应用示意图。具体实施方式下面结合附图对本专利技术的具体实施方式做详细说明。本实施方式原理如图1所示:在光线跟踪中,跟踪的方向与光传播的方向相反。即光线首先从视点(摄像机)处出发,射向虚拟场景中。若光线与场景中的物体没有交点,则光线将射出平面,追踪结束。反之,光线在场景中物体表面最近的交点处走向有以下本文档来自技高网
...
一种基于GPU的光线跟踪方法

【技术保护点】
一种基于GPU的光线跟踪方法,其特征在于,包括:步骤1:CPU端加载场景模型,解析得到三角片元信息、材质信息、光源信息后打包发送给GPU端;步骤2:GPU端得到三角片元信息、材质信息、光源信息,分别存储到对应的全局存储器和常量存储器;步骤3:GPU端建立以整个3D场景的场景模型为根节点的Kd‑Tree;步骤4:GPU端进行光线跟踪操作;步骤5:CPU端进行后期图像处理:CPU端读取图像缓存区的像素信息,显示到屏幕,完成渲染。

【技术特征摘要】
1.一种基于GPU的光线跟踪方法,其特征在于,包括:步骤1:CPU端加载场景模型,解析得到三角片元信息、材质信息、光源信息后打包发送给GPU端;步骤2:GPU端得到三角片元信息、材质信息、光源信息,分别存储到对应的全局存储器和常量存储器;步骤3:GPU端建立以整个3D场景的场景模型为根节点的Kd-Tree;步骤4:GPU端进行光线跟踪操作;步骤5:CPU端进行后期图像处理:CPU端读取图像缓存区的像素信息,显示到屏幕,完成渲染。2.根据权利要求1所述的基于GPU的光线跟踪方法,其特征在于,所述步骤1,包括:步骤1.1:CPU端开辟内存或显存空间,将场景模型加载到内存或显存空间中;步骤1.2:CPU端对场景模型进行解析,得到三角片元信息、材质信息、光源信息;步骤1.3:将解析好的三角片元信息、材质信息、光源信息分别打包发送到GPU端。3.根据权利要求1所述的基于GPU的光线跟踪方法,其特征在于,所述步骤3,包括:步骤3.1:建立3D场景中的各个场景模型的包围盒及整个3D场景模型的包围盒;步骤3.2:以整个3D场景模型的包围盒为根节点,自上而下进行分割,建立以Kd-Tree。4.根据权利要求3所述的基于GPU的光线跟踪方法,其特征在于,所述步骤3.2,包括:步骤3.2.1:分别将整个3D场景模型的包围盒沿着不同轴向分割成两个子空间即得到左孩子节点、右孩子节点,分别划入左子树、右子树;步骤3.2.2:计算不同轴向的分割成本C(V)≈Kt+Ki(PLNl+PRNr),Nl,Nr为左孩子节点、右孩子节点中的场景模型包围盒数量,Kt、Ki为常数,PL、PR为光线进入左子树、右子树的概率,PL=SA(VL)/SA(V),SA(VL)表示左孩...

【专利技术属性】
技术研发人员:高天寒张一大
申请(专利权)人:东北大学
类型:发明
国别省市:辽宁,21

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

1