发明名称 实时二级光线跟踪的并行渲染方法
摘要 本发明公开了一种实时二级光线跟踪的并行渲染方法,包括:(1)通过构建八叉树,对需要进行渲染的模型空间的场景数据进行划分;(2)光线包中有效光线的比例高于阈值时,进行步骤(3)的操作,否则进行步骤(5)的操作;(3)对光线包沿模型空间的三个坐标轴进行遍历;(4)将子光线包与叶子节点内的面片依次做相交测试,得到与面片有相交关系的光线;(5)对光线包中的每条光线分别进行相交测试得到与光线起点最近且与光线相交的三角面片;(6)根据模型空间需要进行渲染的模型的材质类型,对子光线包内的光线进行分类,依次进行渲染。本发明并行渲染方法可有效利用硬件的并行计算能力,减少光线遍历和相交所需时间。
申请公布号 CN101826215B 申请公布日期 2012.05.09
申请号 CN201010150566.4 申请日期 2010.04.19
申请人 浙江大学 发明人 许端清;杨鑫;赵磊;葛蓉
分类号 G06T15/50(2006.01)I;G06T1/20(2006.01)I 主分类号 G06T15/50(2006.01)I
代理机构 杭州天勤知识产权代理有限公司 33224 代理人 胡红娟
主权项 一种实时二级光线跟踪的并行渲染方法,其特征在于,包括:(1)通过构建八叉树,对需要进行渲染的模型空间的场景数据进行划分:在需要进行渲染的模型空间的三个坐标轴即相互垂直的X轴、Y轴和Z轴上,分别选取若干个采样分割点,计算每个采样分割点的SAH花费,然后选取每个坐标轴上SAH花费最小的分割点,将选取的这三个分割点作为分割平面,对模型空间中的场景数据进行划分;将整个场景所形成的包围盒作为根节点,第一次划分可以得到八个子节点,然后以同样的方法再对子节点进行划分,按照宽度优先的方式递归这个构造过程,逐层进行划分,直至划分到每个节点所含面片数不多于10个;(2)判断进行渲染时使用的光线包中有效光线的比例,当比例高于阈值时,进行步骤(3)的操作,否则进行步骤(5)的操作;(3)对光线包沿模型空间的三个坐标轴在(1)中已构建好的八叉树中进行遍历;a)对光线包沿模型空间的X轴进行遍历:将位于X轴分割平面同侧的所有子节点定义为X轴子节点,得到两个分别位于X轴分割平面两侧的X轴子节点,将光线包按照光线行进方向依次与两个X轴子节点的包围盒做相交测试,当光线包与第一个X轴子节点的包围盒有相交光线时,将相交光线生成子光线包,否则将光线包继续与第二个X轴子节点的包围盒做相交测试,并将相交光线生成子光线包;b)对光线包沿模型空间的Y轴进行遍历:在步骤a)的与光线包有相交光线的那个X轴子节点中,将位于Y轴分割平面同侧的所有子节点定义为Y轴子节点,得到两个分别位于Y轴分割平面两侧的Y轴子节点,将步骤a)的得到的子光线包按照光线行进方向依次与两个Y轴子节点的包围盒做相交测试,当子光线包与第一个Y轴子节点的包围盒有相交光线时,将相交光线生成子光线包,否则将子光线包继续与第二个Y轴子节点的包围盒做相交测试,并将相交光线生成子光线包;c)对光线包沿模型空间的Z轴进行遍历:在步骤b)的与光线包有相交光线的那个Y轴子节点中,将位于Z轴分割平面同侧的所有子节点定义为Z轴子节点,得到两个分别位于Z轴分割平面两侧的Z轴子节点,将步骤b)的得到的子光线包按照光线行进方向依次与两个Z轴子节点的包围盒做相交测试,当子光线包与第一个Z轴子节点的包围盒有相交光线时,将相交光线生成子光线包,否则将子光线包继续与第二个Z轴子节点的包围盒做相交测试,并将相交光线生成子光线包;在步骤(1)中对模型空间第一次划分得到的八个子节点中,确定一个在步骤a)、步骤b)和步骤c)中均与光线包或子光线包有相交光线的一个子节点,针对该子节点重复步骤a)、步骤b)和步骤c)的操作,直至子光线包遇到叶子节点,若在子光线包遇到叶子节点前,子光线包中有效光线的比例低于或等于阈值时,则进行步骤(5)的操作;(4)将遇到叶子节点的子光线包与叶子节点内的面片依次做相交测试,得到与面片有相交关系的光线;(5)对光线包中的每条光线分别进行如下处理:以宽度优先的方式按照节点层数由低至高,将光线每次同时与若干个节点的包围盒做相交测试,当遇到叶子节点时,将光线同时与若干个叶子节点中的三角面片做相交测试,直到该叶子节点内所有三角面片都完成了相交测试,得到与光线起点最近且与光线相交的三角面片;(6)根据模型空间需要进行渲染的模型的材质类型,对经过步骤(4)中相交测试的光线赋予相应的着色代码,按照模型的材质类型进行渲染;对经过步骤(5)中相交测试的子光线包内的光线进行分类,分别赋予相应的着色代码,按照模型的材质类型依次进行渲染。
地址 310027 浙江省杭州市西湖区浙大路38号