1.一种基于深度缓冲加速的光线追踪渲染方法,其特征在于:包括光栅化和光线追踪;
所述光栅化具体包括以下步骤:
S1.建立图像Result、纹理Texture:建立图像Result用于保存最终图像,建立纹理Texture用于存储碰撞点位置与相应位置材质信息;
S2.计算深度值:根据场景信息计算纹理Texture与图像Result中对应像素位置的深度值,并将深度值线性变换至[0,1]范围内;
S3.处理图像中背景位置颜色:对于任意一个深度值为1的像素点,该深度值为超出距离上限的像素点,根据场景的背景处理该位置颜色并保存至Result中对应位置;
S4.将深度值转换为碰撞点位置Point,并存储至Texture:对于任意一个深度值位于[0,1)的像素,该深度值即对应于从视点出发追踪的光线与场景的第一个碰撞点的位置,记深度值对应的场景中碰撞点位置为Point,将碰撞点位置Point与对应位置材质信息储存至Texture中;
所述光线追踪具体包括:
对于任意一个Texture中深度值不为1的像素,执行以下步骤:
S5.循环执行S6至S8,直至达到最大光线深度或过低贡献值预设的结束条件;
S6.计算光线散射方向:根据材质信息计算Point位置处光线散射方向;
S7.计算Point对图像贡献,并存储至Result:计算Point处阴影光线,并计算碰撞点Point对像素的贡献,将颜色值记录到图像Result中;
S8.计算下一个碰撞点,并替换Texture中信息:计算该散射方向上与最近的有效物体的碰撞点,并以其信息替换纹理Texture中对应碰撞点位置Point与对应位置材质的信息;
所述深度值计算时根据深度纹理信息和像素点视口坐标得到世界坐标,根据所述深度纹理信息计算待融合场景的像素点的深度值;
所述S1至S8中使用GPU并行计算,所述S1至S4运行于光栅化管线中,所述S5至S8运行于光线追踪管线中。
2.根据权利要求1所述的一种基于深度缓冲加速的光线追踪渲染方法,其特征在于:所述S1中所建立的纹理的大小在纹理行和列上像素数量与最终图像Result相同或两者为整数倍关系。
3.根据权利要求1所述的一种基于深度缓冲加速的光线追踪渲染方法,其特征在于:所述S8运行结束后的图像Result即为最终渲染的图像,最终渲染的图像的精度由S5中的迭代次数与S1中Texture的大小决定,最终渲染的图像的具体值的设定依据不同的使用场景决定。
4.根据权利要求1所述的一种基于深度缓冲加速的光线追踪渲染方法,其特征在于:所述光栅化管线中采用纹理映射得到每个像素的纹理值,先记录纹理图中的查询坐标,然后通过数值插值得到每个像素的纹理图坐标,最后查询纹理图得到该像素的纹理信息,之后将纹理信息带入到光照模型中得到最终的光照信息。
5.根据权利要求1所述的一种基于深度缓冲加速的光线追踪渲染方法,其特征在于:所述光线追踪管线包括固定管线与可编程管线。
6.根据权利要求1所述的一种基于深度缓冲加速的光线追踪渲染方法,其特征在于:所述光线追踪管线包括:定义几何数据、贴图、材质、灯光信息描述场景的数据,以Buffer和Texture的形式上传这些数据到VRAM;之后定义如何绘制模型的着色器;之后通过Root Signature定义Shader的形参,并使用PSO完成整个管线的配置;再通过各类数据的访问视图规范化数据的访问形式,把其中的一些View绑定给shader作为它们的实参;之后调用DrawXXX的命令完成一次Draw Call。