一种基于cpu的图形渲染引擎及实现方法

文档序号:6423659阅读:232来源:国知局
专利名称:一种基于cpu的图形渲染引擎及实现方法
技术领域
本发明涉及广电领域电视节目制作中的字幕处理领域,尤其涉及一种基于CPU的图形渲染引擎及实现方法。
背景技术
随着计算机图形、图像、视频技术的不断发展,加上国内广电行业正处于从标准清晰度模式向高清晰度模式过渡的时期,电视台等电视制播单位对电视图文制播提出了更高、更新的要求。要求极大地增强、丰富图文播出效果,展现视觉冲击力。
GPU(Graphic Processing Unit,图形处理器),一种独立处理计算机图形图像的芯片运算单元。正是因为图形处理器更加卓越、灵活的处理性能和高度并行化的处理能力,使得在计算机上实时渲染华丽的图形效果成为可能。我们已经运用GPU强大的三维图形加速能力,广生了新一代的子眷系统。)以GPU为字幕渲染核心,将使字幕系统的图形渲染模式天然地符合新一代字幕系统的多层、三维和子象素的渲染要求。因为在GPU进行图形图像处理过程中,每个物件都具有三维属性,都具有独立层的概念,每一个层都有相应的深度Z坐标以反映相互物件间的前后关系。另外,GPU除了在三维物件顶点渲染方面具有明显优势之外,在物件的纹理、颜色等象素渲染方面同样能力强大。GPU是显示卡的“心脏”,现在市场上的显卡大多采用NVIDIA和AMD两家公司的图形处理芯片。计算机图形处理硬件的发展经历了四代。早期的视频图形阵列(VGA)控制的是帧缓存,CPU负责所有的像素更新工作。而后来的图形处理器(GPU)不断从CPU接管图形处理工作,直至现在CPU已经很少直接操作像素了。每一代GPU的发展都影响和集成了两个主要编程接口 0penGL 和 DirectX。OpenGL 是一个为 Windows、Linux、Unix 和 Macintosh上三维编程服务的开放式图形标准;DirectX是不断发展的多媒体编程接口,其中包括的Direct3D(也称D3D)是用来进行三维编程的。GPU的工作是以流水线形式进行的,一个流水线是一系列可以并行和按照固定顺序进行的阶段,每个阶段都从前一个阶段接收输入,然后把输出发送到后续阶段。如图I所示为GPU传统的渲染流水线,三维应用程序传给GPU的是顶点、颜色、第二颜色(反射)、纹理、纹理坐标、法向量、灯光、图元装配信息等数据。如图2所示为可编程GPU渲染流水线,GPU渲染在可编程顶点处理器和可编程片段处理器阶段给开发者提供了编程的灵活性,并且GPU的发展,现在的Direct 10已经取消了固定流水线,灵活性会更大。发明人在实施本发明的过程中,发现现有技术存在以下技术问题(I)GPU的图形渲染必须依赖于显卡,移植性差;(2)对字幕系统需要的效果可控性不强
发明内容
为了解决上述现有技术的缺点,本发明的主要目的是提供一种基于CPU的图形渲染引擎及实现方法,以解决现有技术中GPU的图形渲染必须依赖显卡进行图形渲染的问题。为了达到上述目的,本发明提供了一种基于CPU的图形渲染引擎,包括渲染准备模块,用于准备渲染状态并准备一个颜色缓冲区和一个深度缓冲区;摄像机空间模块,用于根据场景数据建立视变换矩阵和投影变换矩阵;变换模块,用于对物体的每个顶点计算屏幕坐标和深度值,并存储;光照模块,用于根据顶点信息计算每个顶点的光照颜色; 光栅化模块,用于对三角片进行处理,完成三角片的填充;渲染结束模块,用于释放颜色缓冲区和深度缓冲区。本发明的另一方面还提供了一种基于CPU的图形渲染实现方法,包括应用程序设置渲染状态并发送给渲染准备模块同时渲染准备模块初始化颜色缓冲区和深度缓冲区;摄像机空间模块根据场景中的摄像机数据建立视变换矩阵和投影变换矩阵;依次取场景中的每个物体,经过变换模块,光照模块和光栅化模块对所述物体进行处理,完成单个物体的渲染;当场景中所有物体渲染完毕,将渲染结果回传给应用程序,输出渲染结果;渲染结束模块清空渲染准备阶段准备的颜色缓冲区和深度缓冲区。本发明的实施方式通过实现一种全新的基于CPU的图形渲染引擎,与现有技术相比有以下技术优点(I)可以使我们的软件不依赖于显卡,有更好的移植性。(2)对实现字幕系统需要的效果有更多的可控性。


为了更清楚的说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见的,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为现有技术中的GPU传统的渲染流水线;图2为现有技术中的可编程GPU渲染流水线;图3为本发明实施例一种基于CPU的图形渲染引擎架构图;图4为本发明实施例一种基于CPU的图形渲染实现方法流程具体实施例方式本发明提供的一种基于CPU的图形渲染引擎是应用于以3D为基础进行的图形渲染方式,下面将介绍与本发明相关的3D基础知识。I、三维坐标系三维坐标系有两种常用笛卡尔坐标系左手系和右手系。本发明的CPU渲染引擎,采用的是左手坐标系。
2、顶点、向量和网格顶点由指定其位置的向量、颜色、纹理坐标和指定其方向的法向量描述,即X,y,z坐标,常用一个三元组(X,y, z)表示,顶点可以做平移、旋转、缩放变换。向量也是一个三元组(x,y, Z),但是它表示的是一个方向。即从原点到(x,y,z)的方向。可以对这个坐标做旋转和缩放变换,不能做平移变换。因为它只具有长度和方向属性,没有位置属性。所以,对它做平移变换是无意义的。
网格网格的定义与顶点的定义相关,是描述三维形状的数据。网格是由顶点组成的,而顶点又包含向量。3、三维图元三维图元是组成单个三维实体的顶点集合。通常三维图元是多边形,一个多边形是由至少三个顶点描绘的三维形体。最简单的多边形是三角形,应用程序可以用三角形组合成大而复杂的多边形及网格(mesh)。本发明主要是基于处理三角形组成的网格进行实施的。4、表面和顶点法向量网格中的每个面有一个垂直的法向量。该向量的方向由定义顶点的顺序及坐标系统是左手系还是右手系决定。表面法向量从表面上指向正向面那一侧,如果把表面水平放置,正向面朝上,背向面朝下,那么表面法向量为垂直于表面从下方指向上方。在渲染中,我们认为只有面的正向是可见的,并且在CPU渲染时,计算顶点光照需要使用顶点法向量。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然所描述的实施例仅是本发明的一部分实施例,不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例一方面提供了一种基于CPU的图形渲染引擎,如图3所示,具体包括渲染准备模块10,用于准备渲染状态并准备一个颜色缓冲区和一个深度缓冲区;摄像机空间模块11,用于根据场景数据建立视变换矩阵和投影变换矩阵;变换模块12,用于对物体的每个顶点计算屏幕坐标和深度值,并存储;光照模块13,用于根据顶点信息计算每个顶点的光照颜色;光栅化模块14,用于对三角片进行处理,完成三角片的填充;渲染结束模块15,用于释放颜色缓冲区和深度缓冲区。下面将对上述每一个模块的具体功能进行描述渲染准备模块10渲染准备模块10主要是用于根据渲染状态准备一个颜色缓冲区和一个深度缓冲区。渲染准备阶段还包括Win32应用程序设置渲染状态的属性与传入屏幕分辨率。所述设置渲染状态的属性包括背面剔除、裁剪、反走样级别、是否显示网格等。在以下实施过程中,设背面剔除、裁剪、显示网格与否为FALSE,反走样级别为I级。摄像机空间模块11摄像机空间模块11主要是针对场景数据建立视变换矩阵和投影变换矩阵。其中场景数据是由Win32应用程序提供的,建立场景数据主要包括建立摄像机的相关数据,场景灯光,场景中每个物体的数据。对于场景中每个物体的数据属性的建立包括(I)物体的网格属性,包括包围盒属性(2)物体的纹理属性
(3)物体的材质属性(4)物体的空间变换属性摄像机空间建立后,渲染准备模块10初始化颜色缓冲区和深度缓冲区,依次取场景中的每个物体,这个物体经过变换模块12,光照模块13和光栅化模块14的处理,完成单个物体的渲染。变换模块12变换模块12主要用于对物体的每个顶点计算对应的屏幕空间坐标(采用浮点类型float)和深度值,并存储。具体为变换模块12首先计算物体在世界空间中的坐标,眼空间中的坐标,裁剪空间中的坐标与标准设备空间中的坐标;然后取屏幕分辨率,与标准设备空间的X,y计算得到顶点的屏幕空间坐标(用浮点值),取标准设备空间坐标的Z值作为深度值;最后将屏幕空间坐标和深度值记录在该顶点信息中。所述物体在世界空间中的坐标是由物体空间中的坐标乘以建模变换矩阵得到的。所述建模变换矩阵是根据物体在场景中进行空间变换的属性(平移,缩放,旋转)建立的。所述眼空间中的坐标由物体在世界空间中的坐标乘以摄像机空间模块11建立的视变换矩阵得到,并且物体眼空间中的坐标乘以摄像机空间模块11建立的投影变换矩阵得到所述裁剪空间的坐标,设为(X,y,Z,w),用w分别除X,y, z得到的结果作为标准设备空间的坐标。光照模块13光照模块13主要用于针对顶点信息计算每个顶点的光照颜色。光照计算是在世界空间中进行的,故需计算世界空间中该顶点位置和法向量。物体空间的顶点法向量到世界空间法向量的变换,只需要乘以建模变换过程中的旋转变换矩阵就可以得到。光照模块13还用于根据顶点的材质,计算自发光颜色和环境光颜色。自发光颜色为材质的自发光颜色;环境光颜色由材质的环境光颜色乘以场景的环境光系数得到。光照模块采用平行光照明,针对每个平行光,计算漫反射颜色和镜面反射颜色,将多个灯光引起的漫反射颜色和镜面反射颜色分别相加,并将这两个颜色加上自发光颜色和环境光颜色,得到顶点的光照颜色。光栅化模块14光栅化模块14主要用于对三角片进行处理,完成三角片的填充。具体为光栅化模块14根据变换模块12计算得到的屏幕空间位置与深度值,光照模块13计算得到的顶点光照颜色并确定三角片的三个顶点数据,根据所述顶点数据确定三角片在屏幕空间中的包围盒,最后,在三角片包围盒内使用扫描线算法,计算每条扫描线的起终点位置,光照颜色值,深度值和纹理坐标,然后插值得到三角片每个像素的光照颜色,深度值和纹理坐标,计算得到像素的最终颜色,完成三角片的填充。通过本发明的基于CPU的图形渲染引擎,可以实现不依赖显卡,直接基于CPU就可以进行图形的渲染,有更好的移植性,并且可以实现对字幕系统的效果有更多的可控性。
本发明的另一方面提供了一种基于CPU的图形渲染实现方法,如图4所示,包括步骤SI Win32应用程序设置渲染状态并发送给渲染准备模块10,同时渲染准备模块初始化颜色缓冲区和深度缓冲区;步骤S2 :摄像机空间模块11根据场景中的摄像机数据建立视变换矩阵和投影变换矩阵;步骤S3 :依次取场景中的每个物体,经过变换模块12,光照模块13和光栅化模块14对所述物体进行处理,完成单个物体的渲染;步骤S4:当场景中所有物体渲染完毕,将渲染结果回传给应用程序,输出渲染结果;步骤S5 :渲染结束模块15清空渲染准备阶段中渲染准备模块准备的颜色缓冲区 和深度缓冲区。所述变换模块12对物体进行处理主要为对物体的每个顶点计算屏幕空间坐标和深度值空间,并存储。具体方法为计算世界空间,眼空间,裁剪空间与标准设备空间后取屏幕分辨率,与标准设备空间的x,y计算得到顶点的屏幕坐标(用浮点值),取标准设备空间的Z值作为深度值。将屏幕坐标和深度值记录在该顶点信息中。所述光照模块13对物体进行处理具体为首先计算每个顶点的光照颜色,然后光照模块13采用平行光照明,针对每个平行光,计算漫反射颜色和镜面反射颜色,最后将多个灯光引起的漫反射颜色和镜面反射颜色分别相加,并将这两个颜色加上自发光颜色和环境光颜色,得到顶点的光照颜色。所述光栅化模块14对物体进行处理主要是通过计算三角片范围内的每一个像素的颜色完成整个三角片的填充。通过本发明的基于CPU的图形渲染方法,可以实现不依赖显卡,直接基于CPU就可以进行图形的渲染,有更好的移植性,并且可以实现对字幕系统的效果有更多的可控性。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-R0M,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述,仅为本发明的一个最佳具体实施例,但本发明的特征并不局限于此,任何熟悉该项技术的人在本发明领域内,可轻易想到的变化或修饰,都应涵盖在以下本发明的申请专利范围中。
权利要求
1.一种基于CPU的图形渲染引擎,其特征在于,包括 渲染准备模块,用于准备渲染状态并准备一个颜色缓冲区和一个深度缓冲区; 摄像机空间模块,用于根据场景数据建立视变换矩阵和投影变换矩阵; 变换模块,用于对物体的每个顶点计算屏幕坐标和深度值,并存储; 光照模块,用于根据顶点信息计算每个顶点的光照颜色; 光栅化模块,用于对三角片进行处理,完成三角片的填充; 渲染结束模块,用于释放颜色缓冲区和深度缓冲区。
2.如权利要求I所述的基于CPU的图形渲染引擎,其特征在于,所述准备渲染状态具体、包括:Win32应用程序设置渲染状态的属性与传入屏幕分辨率,其中所述渲染状态的属性包括背面剔除、裁剪、反走样级别,显示网格与否。
3.如权利要求I所述的基于CPU的图形渲染引擎,其特征在于,摄像机空间模块所需的数据是由Win32应用程序得到的,所述数据包括建立摄像机的相关数据,场景灯光,场景中每个物体的数据属性。
4.如权利要求3所述的基于CPU的图形渲染引擎,其特征在于,所述场景中每个物体的数据属性包括物体的网格属性、物体的纹理属性、物体的材质属性、物体的空间变换属性。
5.如权利要求I所述的基于CPU的图形渲染引擎,其特征在于,所述计算屏幕坐标和深度值具体为 首先,计算物体在世界空间中的坐标,眼空间中的坐标,裁剪空间中的坐标与标准设备空间中的坐标; 然后,取屏幕分辨率,与标准设备空间的X,y计算得到顶点的屏幕空间坐标,取标准设备空间坐标的Z值作为深度值; 最后,将屏幕空间坐标和深度值记录在该顶点信息中。
6.如权利要求5所述的基于CPU的图形渲染引擎,其特征在于,所述物体在世界空间中的坐标是由物体空间中的坐标乘以建模变换矩阵得到的。
7.如权利要求5所述的基于CPU的图形渲染引擎,其特征在于,所述眼空间中的坐标由物体在世界空间中的坐标乘以摄像机空间模块建立的视变换矩阵得到。
8.如权利要求5所述的基于CPU的图形渲染引擎,其特征在于,所述裁剪空间的坐标由所述物体眼空间中的坐标乘以摄像机空间模块建立的投影变换矩阵得到。
9.如权利要求5所述的基于CPU的图形渲染引擎,其特征在于,所述标准设备空间的坐标是由所述裁剪空间的坐标设为(X,y,z,W),用W分别除X,y, Z得到的。
10.如权利要求I所述的基于CPU的图形渲染引擎,其特征在于,所述光照模块还用于根据顶点的材质,计算自发光颜色和环境光颜色。
11.如权利要求10所述的基于CPU的图形渲染引擎,其特征在于,所述自发光颜色为材质的自发光颜色,所述环境光颜色由材质的环境光颜色乘以场景的环境光系数得到。
12.如权利要求I所述的基于CPU的图形渲染引擎,其特征在于,光照模块根据顶点计算每个顶点的光照颜色具体为光照模块采用平行光照明,针对每个平行光,计算漫反射颜色和镜面反射颜色,将多个灯光引起的漫反射颜色和镜面反射颜色分别相加,并将这两个颜色加上自发光颜色和环境光颜色,得到顶点的光照颜色。
13.如权利要求I所述的基于CPU的图形渲染引擎,其特征在于,光栅化模块对三角片进行处理,完成三角片的填充具体为 首先,光栅化模块根据变换模块计算得到的屏幕空间坐标与深度值,光照模块计算得到的顶点光照颜色确定三角片的三个顶点数据; 其次,根据所述顶点数据确定三角片在屏幕空间中的包围盒; 最后,在三角片包围盒内使用扫描线算法,计算每条扫描线的起终点位置,光照颜色值,深度值和纹理坐标,然后插值得到三角片每个像素的光照颜色,深度值和纹理坐标,计算得到像素的最终颜色,完成三角片的填充。
14.一种基于CPU的图形渲染实现方法,其特征在于,具体包括 应用程序设置渲染状态并发送给渲染准备模块同时渲染准备模块初始化颜色缓冲区和深度缓冲区; 摄像机空间模块根据场景中的摄像机数据建立视变换矩阵和投影变换矩阵; 依次取场景中的每个物体,经过变换模块,光照模块和光栅化模块对所述物体进行处理,完成单个物体的渲染; 当场景中所有物体渲染完毕,将渲染结果回传给应用程序,输出渲染结果; 渲染结束模块清空渲染准备阶段准备的颜色缓冲区和深度缓冲区。
15.如权利要求14所述的基于CPU的图形渲染实现方法,其特征在于,所述变换模块,光照模块和光栅化模块对所述物体进行处理具体为 所述变换模块对物体进行处理为对物体的每个顶点计算屏幕空间坐标和深度值空间并存储; 所述光照模块对物体进行处理为采用平行光照明并针对每个平行光计算漫反射颜色和镜面反射颜色,将多个灯光引起的漫反射颜色和镜面反射颜色分别相加,并将这两个颜色加上自发光颜色和环境光颜色,得到顶点的光照颜色。 所述光栅化模块对物体进行处理为通过计算三角片范围内的每一个像素的颜色完成整个三角片的填充。
全文摘要
本发明公开了一种基于CPU的图形渲染引擎及实现方法,基于CPU的图形渲染引擎包括渲染准备模块、摄像机空间模块、变换模块、光照模块、光栅化模块、渲染结束模块。图形渲染实现方法为应用程序设置渲染状态并发送给渲染准备模块同时渲染准备模块初始化颜色缓冲区和深度缓冲区;摄像机空间模块根据场景中的摄像机数据建立视变换矩阵和投影变换矩阵;依次取场景中的每个物体,经过变换模块,光照模块和光栅化模块对所述物体进行处理,完成单个物体的渲染;当场景中所有物体渲染完毕,将渲染结果回传给应用程序,输出渲染结果;渲染结束模块清空渲染准备阶段准备的颜色缓冲区和深度缓冲区。本发明可以实现不依赖显卡,直接基于CPU就可以进行图形的渲染,有更好的移植性,并且可以实现对字幕系统的效果有更多的可控性。
文档编号G06T1/20GK102722861SQ20111011636
公开日2012年10月10日 申请日期2011年5月6日 优先权日2011年5月6日
发明者孙季川, 张君琦, 蔡欢, 郑培枫 申请人:新奥特(北京)视频技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1