首页 / 专利库 / 电脑编程 / 算法 / 光线跟踪算法 / 一种基于点缓存的光子映射加速方法

一种基于点缓存的光子映射加速方法

阅读:138发布:2020-05-24

专利汇可以提供一种基于点缓存的光子映射加速方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于点缓存的 光子 映射 加速 方法,包括如下步骤:1.光子 跟踪 ;从 光源 处向场景中发射一定数量的光子,然后跟踪这些光子的运动轨迹,将与物体发生碰撞的光子的信息记录下来并保存到光子图中;2.预处理;预计算辐照度,并保存到点缓存中;且在计算完辐照度后,继续计算 着色器 ;将得到的 颜色 值以点缓存的形式保存起来;3. 渲染 ;根据 光线跟踪 算法 渲染,在光线与物体表面的交点处根据物体表面属性,发射跟踪反射,折射,漫反射光线;最终聚集算法发射N条漫反射光线,漫反射光线与场景物体相交,返回离交点最近的点缓存中N个 采样 点的颜色值,将之经过均值计算作为间接光照颜色值,最后再与直接光照颜色值相加得到最终图像。,下面是一种基于点缓存的光子映射加速方法专利的具体信息内容。

1.一种基于点缓存的光子映射加速方法,其特征在于,包括如下步骤:
步骤1.光子跟踪阶段;从光源处向场景中发射一定数量的光子,然后跟踪这些光子的运动轨迹,将与物体发生碰撞的光子的信息记录下来并保存到光子图中;
步骤2.预处理阶段;预计算辐照度,并保存到点缓存中;且在计算完辐照度后,继续计算着色器;将得到的颜色值以点缓存的形式保存起来;具体如下:
步骤(2.1):按照像素生成的顺序选取采样点;
步骤(2.2):在采样点位置x处查找其在全局光子图中最近邻的k(k≥1)个光子,并利用这k个光子对该采样点进行辐照度的计算;
步骤(2.3):将计算得到的辐照度值作为漫反射材质着色器的一个参数,参与计算;最终计算出物体表面上采样点的颜色;
步骤(2.4):得到该采样点预计算的颜色值后,再将该采样点的位置、表面法向和其颜色值保存到点缓存文件中;
步骤3.渲染阶段;根据光线跟踪算法渲染,在光线与物体表面的交点处根据物体表面属性,发射跟踪反射,折射,漫反射的光线;最终聚集算法发射N条漫反射光线,每条漫反射光线与场景物体相交,返回离交点最近的点缓存中采样点的颜色值,将N个点缓存中采样点的颜色值经过均值计算,得到的均值为间接光照颜色值,最后再与直接光照颜色值相加得到最终图像。
2.如权利要求1所述的基于点缓存的光子映射加速方法,其特征在于,所述步骤(1)包括如下步骤:
步骤(1.1):从光源处随机发射一定数量的光子,随机确定光子方向,并在场景中按照光线追踪算法中追踪光线的方式追踪光子光线;
步骤(1.2):光子在所碰撞的物体表面被反射、吸收或者直接穿过表面进入物体内部;
当光子碰撞在漫反射表面时保存光子信息到光子图中。
3.如权利要求1所述的基于点缓存的光子映射加速方法,其特征在于,所述步骤(2.2)的计算公式如下:
计算公式如公式(1)所示;
公式(1)中的 即在采样点位置x处计算的辐照度,w为采样点x的入射光线方向, wi为第i个光子的方向,xi为第i个光子的位置,Φi是第i个光子能量,r(x)是k个光子中离采样点x最远的光子和x的距离;fr是双向反射分布函数,即表示入射辐照度和出射辐照度之间的比重。
4.如权利要求3所述的基于点缓存的光子映射加速方法,其特征在于,所述步骤(2.3)中描述的漫反射材质着色器用于计算物体表面颜色,包括计算物体表面的辐射度信息和计算物体的表面颜色信息;物体表面的辐射度信息在光子映射算法中是由光子计算的,如步骤(2.2)所示;物体表面的颜色信息由表面纹理颜色和物体表面的辐射度乘积得到。
5.如权利要求1所述的基于点缓存的光子映射加速方法,其特征在于,所述步骤(3)包括如下步骤:
步骤(3.1):按照光线跟踪流程渲染场景,从屏幕空间发射光线与场景求交,按照物体表面着色器计算交点颜色;按照着色器的描述,在漫反射表面,将执行步骤(3.2)和步骤(3.3);
步骤(3.2):在漫反射表面从着色点处随机向着色点所在空间的半球内发射N条最终聚集的采样射线,并计算每条射线与场景的交点;
步骤(3.3):利用交点的坐标信息搜索其在点缓存文件中的最近邻点,获取最近邻点保存的颜色值做返回;并将该值根据采样射线从着色点到交点的长度来进行衰减,将衰减后的N个颜色值进行均值计算后作为着色点的间接光照值;
步骤(3.4):按照着色器的描述,将着色点处的直接光照值和间接光照值相加,作为光线的返回值,将颜色返回给屏幕空间,组成图像。

说明书全文

一种基于点缓存的光子映射加速方法

技术领域

[0001] 本发明涉及图形学真实感渲染领域,具体涉及一种基于点缓存的光子映射全局光照加速方法。技术背景
[0002] 渲染技术是动漫电影制动的主要技术。当前的渲染技术主要有两种发展方向,一种是追求真实的照片级图像质量的渲染(Photorealistic Rendering);一种是追求特殊艺术效果的非真实渲染(NPR)。真实感渲染是目前大多三维作品追求的效果,研究要点主要集中在真实性。局部光照指光源对物体表面的直接照射效果,全局光照指物体与物体之间的照射效果,包括被场景中物体反射、折射或者散射的光线对物体的影响。
[0003] 真实感效果的渲染必须依赖于全局光照。全局光照在计算机图形学中起到至关重要的作用。很多方法不断提出用于模拟全局光照,比如基于蒙特卡洛光线跟踪的各种方法、辐射度方法、光子映射和基于点的渲染技术。
[0004] 光线追踪算法[An improved illumination model for shaded display]从屏幕空间发射光线,并在场景空间中跟踪光线。渲染光线与物体的交点,返回颜色,主光线将颜色返回给屏幕空间形成图像。光线在与物体碰撞中,可根据物体表面属性,发生反射,折射,或散射和吸收等行为;根据物体表面属性,继续追踪光线。传统的光线追踪技术可以较好的表现出反射折射效果,也可以生成真实度比较高的阴影,但是传统的光线跟踪技术不适用于漫反射表面。由于在漫反射表面需要发射上百条采样光线来平衡高频噪声。同时由于每条光线都是独立追踪和渲染的,所以场景中的点可能会与光线多次相交并多次计算,造成了光线追踪性能上的缺点。
[0005] 光子映射方法[A practical guide to global illumination using ray tracing and photon mapping]是在光线追踪算法的基础上被提出的,并依据光线跟踪实现一部分算法。该方法是一个两步的算法,第一步通过正向光线跟踪来构建光子图,第二步通过光子图中的信息来渲染整个场景。它的核心思想是从光源开始追踪光能的传递,把每一个传递中间过程都记录下来,最后按照投影或者逆向光线追踪来收集这些信息,以达到渲染的目的。由于中间每一个光线和场景的相交都被记录下来,所以该方法避免了逆向光线追踪中重复计算的问题。该方法可以模拟很多全局光照效果,比如色溢现象和焦散,但是由于光子发射函数的随机性造成光子分布的不均匀导致在光子映射计算中直接可视化光子图经常出现噪声,结合最终聚集算法能有效地解决这些问题。引入最终聚集算法的同时也会在计算漫反射面时发射多条光线,影响计算效率。
[0006] 中国专利(申请号:CN 201010138101,专利名称:一种基于光子映射的全局光照方法)中提出了一种将光子映射和光线追踪结合的方法,该方法基于传统光子映射方法,需要通过大规模的光子发射才能保证渲染精度,大量的光子跟踪计算存在较大的系统执行时间和存储空间开销,因此该专利方法计算效率效率较低。
[0007] Christensen在文章[Efficient simulation of light transport in scences with participating media using photon maps]中提出一种了利用预计算辐照度的方式对最终聚集进行加速的算法,这种算法将预计算的辐照度值保存到光子图中,从而使得最终聚集阶段可以直接读取光子图中的辐照度,而不必再对光子图进行辐照度的计算,从而使光子映射算法整体的速度提高了。该算法对参数设置有很大的依赖性,当光子数目过多时,在每个光子位置处计算辐照度也显得多余而没必要。

发明内容

[0008] 本发明针对现有的光子映射方法的计算效率慢和加速缓存结构占用内存大的问题。提供一种基于点缓存的光子映射加速方法,利用基于点的全局光照算法的思想,生成基于采样点的纹理缓存,作为加速缓存,存储光子计算的出射辐射度;这种方法可以在确保缓存加速的同时,保证缓存文件中采样点的分布,避免多余计算和内存过多的消耗。
[0009] 为了实现基于点缓存的光子映射方法,本发明采用如下技术方案:
[0010] 在光子发射步骤和渲染步骤中间加入基于点的采样缓存阶段。该阶段参照基于点的全局光照技术,在中间渲染过程中,直接可视化光子图信息,代替基于点的全局光照技术中的直接光照表面信息,生成点缓存数据。在最终渲染过程中,利用点缓存数据来计算光线交点的颜色,消除在同一交点处反复查找光子图的重复计算,加快渲染效率。
[0011] 一种基于点缓存的光子映射加速方法,包括如下步骤:
[0012] 步骤1.光子跟踪阶段;从光源处向场景中发射一定数量的光子,然后跟踪这些光子的运动轨迹,将与物体发生碰撞的光子的信息记录下来并保存到光子图中;
[0013] 步骤2.预处理阶段;预计算辐照度,并保存到点缓存中;且在计算完辐照度后,继续计算着色器;将得到的颜色值以点缓存的形式保存起来;
[0014] 步骤3.渲染阶段;根据光线跟踪算法渲染,在光线与物体表面的交点处根据物体表面属性,发射跟踪反射,折射,漫反射的光线;最终聚集算法发射N条漫反射光线,每条漫反射光线与场景物体相交,返回离交点最近的点缓存中采样点的颜色值,将N个点缓存中采样点的颜色值经过均值计算,得到的均值为间接光照颜色值,最后再与直接光照颜色值相加得到最终图像。
[0015] 所述步骤(1)包括如下步骤:
[0016] 步骤(1.1):从光源处随机发射一定数量的光子,随机确定光子方向,并在场景中按照光线追踪算法中追踪光线的方式追踪光子光线;
[0017] 步骤(1.2):光子在所碰撞的物体表面被反射、吸收或者直接穿过表面进入物体内部;当光子碰撞在漫反射表面时保存光子信息到光子图中。
[0018] 所述步骤(2)包括如下步骤:
[0019] 步骤(2.1):按照像素生成的顺序选取采样点;
[0020] 步骤(2.2):在采样点位置x处查找其在全局光子图中最近邻的k(k≥1)个光子,并利用这k个光子对该采样点进行辐照度的计算,计算公式如公式(1)所示;
[0021] 公式(1)
[0022] 公式(1)中的 即在采样点位置x处计算的辐照度,w为采样点x的入射光线方向,wi为第i个光子的方向,xi为第i个光子的位置,Φi是第i个光子能量,r(x)是k个光子中离采样点x最远的光子和x的距离。fr是双向反射分布函数,即表示入射辐照度和出射辐照度之间的比重。
[0023] 步骤(2.3):将计算得到的辐照度值作为漫反射材质着色器的一个参数,参与计算;最终计算出物体表面上采样点的颜色;
[0024] 步骤(2.4):得到该采样点预计算的颜色值后,再将该采样点的位置、表面法向和其颜色值保存到点缓存文件中。
[0025] 所述步骤(2.3)中描述的漫反射材质着色器用于计算物体表面颜色,包括计算物体表面的辐射度信息和计算物体的表面颜色信息;物体表面的辐射度信息在光子映射算法中是由光子计算的,如步骤(2.2)所示;物体表面的颜色信息由表面纹理颜色和物体表面的辐射度乘积得到。
[0026] 所述步骤(3)包括如下步骤:
[0027] 步骤(3.1):按照光线跟踪流程渲染场景,从屏幕空间发射光线与场景求交,按照物体表面着色器计算交点颜色;按照着色器的描述,在漫反射表面,将执行步骤(3.2)和步骤(3.3);
[0028] 步骤(3.2):在漫反射表面从着色点处随机向着色点所在空间的半球内发射N条最终聚集的采样射线,并计算每条射线与场景的交点;
[0029] 步骤(3.3):利用交点的坐标信息搜索其在点缓存文件中的最近邻点,获取最近邻点保存的颜色值做返回;并将该值根据采样射线从着色点到交点的长度来进行衰减,将衰减后的N个颜色值进行均值计算后作为着色点的间接光照值;
[0030] 步骤(3.4):按照着色器的描述,将着色点处的直接光照值和间接光照值相加,作为光线的返回值,讲颜色返回给屏幕空间,组成图像。
[0031] 本发明的有益效果:
[0032] 1.本发明首次提出基于点缓存的光子映射加速方法,采样了缓存结构保存光子计算的漫反射面的辐射度信息。在最终渲染阶段可以利用缓存的辐射度信息直接计算,避免了在同一渲染点多次查询光子图。加速了渲染效率。
[0033] 2.本发明采用了基于点的缓存结构,采样点分布更加均匀,在计算表面辐射度缓存信息时可只在采样点处计算,不受光子分布的约束。同时避免了由于光子分布不均匀造成的在光子分布少的表面的计算误差和在光子分布多的表面的计算浪费。合理的分布了缓存信息点,同时也加快了缓存信息的计算速度。
[0034] 3.本发明采用的点缓存可大幅减少存储。点缓存的生成步骤作为一遍独立的渲染的过程,采样点选择的多少与场景的大小、分辨率等因素有关,而与光子的数目无关。所以点缓存的存储空间大小也只与图像分辨率和场景大小有关,在光子发射数目很多的情况下,要远小于光子图的大小。附图说明
[0035] 图1为基于点缓存的光子映射加速算法总体流程图
[0036] 图2.a为BOX场景的全局光子图显示表示。
[0037] 图2.b为BOX场景的点缓存效果图。
[0038] 图2.c为BOX场景的渲染效果图。

具体实施方式

[0039] 下面结合渲染实例与附图对本发明作进一步说明。
[0040] 对于一个渲染算法,即是将一个三维场景转化为图片的过程。在渲染任务开始前,将一个三维场景在建模软件中的表达转化为渲染引擎可以读取和识别的数据表达方式。场景中包括了摄像机,几何体,光源,材质,贴图纹理等信息。用户提交一个包含完整信息的场景数据文件包,渲染引擎可以识别这些文件中所描述的摄像机,几何体,光源等信息。在将整个场景数据读入后,开始渲染算法,着色并输出图像。
[0041] BOX场景是一个渲染实例。在这一场景中,包含了一个盒子,盒子中有光源,透明玻璃球和摄像头。渲染引擎在读取了整个场景数据后,开始渲染。具体过程如下:
[0042] 基于点缓存的光子映射加速方法,包括如下步骤:
[0043] 步骤1.光子跟踪阶段;从光源处向场景中发射一定数量的光子,然后跟踪这些光子的运动轨迹,将与物体发生碰撞的光子的信息记录下来并保存到光子图中;具体如下:
[0044] 光子跟踪,从盒子顶端的光源处向场景中发射一定数量的光子,然后在场景中像追踪光线一样追踪光子的运动轨迹。将与盒子几何体发生碰撞的光子的信息记录下来并保存到全局光子图中,光子在所碰撞的盒子表面被吸收或者发生漫反射,发生漫反射行为的光子在场景中继续被追踪。与玻璃球相交的光子在玻璃球表面发生折射,在光子穿过玻璃球与盒子表面碰撞,这些光子也被保存在光子图中。用最大漫反射次数和最大镜面反射次数来结束光子追踪过程,完成光子图的生成。图2.a为BOX场景的全局光子图显示表示。全局光子图的大小为65.3MB。
[0045] 步骤2.预处理阶段;开始一遍独立的渲染流程,要预计算辐照度,并保存到点缓存中。利用基于点缓存的算法,在渲染时,根据渲染流程,在场景中按照像素渲染顺序采样,光子映射加速算法将在采样点处查找其在全局光子图中最近邻的k(k=500)个光子,并利用这500个光子对该采样点进行辐照度的计算,之后继续进行着色器的计算,得到的颜色值以点缓存的形式将该采样点的位置、表面法向和其颜色值保存到点缓存文件中,而不保存到光子图中;具体步骤入一下:
[0046] 步骤(2.1):按照像素生成的顺序选取采样点。
[0047] 步骤(2.2):在采样点位置x处查找其在全局光子图中最近邻的k(k=500)个光子,并利用这500个光子对该采样点进行辐照度的计算,计算公式如上述公式(1)所示。
[0048] 步骤(2.3):将计算得到的辐照度值作为漫反射材质着色器的一个参数,参与计算;最终计算出物体表面上采样点的颜色。
[0049] 步骤(2.4):得到该采样点预计算的颜色值后,再将该采样点的位置、表面法向和其颜色值保存到点缓存文件中。
[0050] 步骤(2.3)中描述的漫反射材质着色器的计算过程用于计算物体表面颜色,步骤包括计算物体表面的辐射度信息和计算物体的表面颜色信息。物体表面的辐射度信息在光子映射算法中是由光子计算的,如步骤(2.2)所示。物体表面的颜色信息由表面纹理颜色和物体表面的辐射度乘积得到。
[0051] 图2.b表示点缓存效果图,由于全局光子图中没有保存玻璃球处的光照信息,所以玻璃球此处是黑色的。在点缓存文件中,物体表面上是各个离散的采样点组成。点缓存文件的大小为12.3M远小于光子图大小,并且此处点缓存的采样分辨率为800*600,根据实验表明,将分辨率降为80*60,渲染误差也在可视范围内。
[0052] 步骤3.渲染阶段;根据光线跟踪算法渲染,在光线与物体表面的交点处根据物体表面属性,发射跟踪反射,折射,漫反射光线;最终聚集算法发射N(N=128)条漫反射光线,每条漫反射光线与场景物体相交,返回离交点最近的点缓存中采样点的颜色值,将128个点缓存中采样点的颜色值经过均值计算,将之作为间接光照颜色值,最后再与直接光照颜色值相加得到最终图像,具体如下:
[0053] 步骤(3.1):按照光线跟踪流程渲染场景,从屏幕空间发射光线与场景求交,按照物体表面着色器计算交点颜色;按照着色器的描述,在漫反射表面,将执行步骤(3.2)和步骤(3.3);
[0054] 步骤(3.2):在漫反射表面从着色点处随机向着色点所在空间的半球内发射128条最终聚集的采样射线,并计算每条射线与场景的交点;
[0055] 步骤(3.3):利用交点的坐标信息搜索其在点缓存文件中的最近邻点,获取最近邻点保存的颜色值做返回;并将该值根据采样射线从着色点到交点的长度来进行衰减,将衰减后的128个颜色值进行均值计算后作为着色点的间接光照值;
[0056] 步骤(3.4):按照着色器的描述,将着色点处的直接光照值和间接光照值相加,作为光线的返回值,讲颜色返回给屏幕空间,组成图像。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈