CN109727184A - 一种图形处理器三维剪裁电路 - Google Patents
一种图形处理器三维剪裁电路 Download PDFInfo
- Publication number
- CN109727184A CN109727184A CN201811518685.3A CN201811518685A CN109727184A CN 109727184 A CN109727184 A CN 109727184A CN 201811518685 A CN201811518685 A CN 201811518685A CN 109727184 A CN109727184 A CN 109727184A
- Authority
- CN
- China
- Prior art keywords
- module
- submodule
- comes
- driver
- point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Image Generation (AREA)
Abstract
本发明涉及计算机硬件技术领域,提供一种图形处理器三维剪裁电路,包括:所述命令预处理模块(1)对图元命令的坐标与视景体的位置关系进行预先判断,若图元与视景体有交点,则需将图元命令分配给第一三维剪裁子模块(2)或第二三维裁剪子模块(3)进行裁剪处理;若图元命令在视景体内,不需要进行裁剪处理,图元命令直接发送给第一三维裁剪子模块(2)透传;若图元坐标在视景体外,不需要进行裁剪处理,直接将图元命令丢弃;所述命令发送模块(4)将经过第二三维裁剪子模块(3)裁剪处理,及经过第一三维剪裁子模块(2)中裁剪处理或者透传后的图元命令进行输出。
Description
技术领域
本发明涉及计算机硬件技术领域,尤其涉及一种图形处理器的三维剪裁电路。
背景技术
三维剪裁模块在图形处理器的投影变换模块与视窗变换模块之间传输OpenGL命令并处理相关命令。三维剪裁模块的主要功能是使用组成视景体的6个平面对图元(包括点、线和三角形)和光栅位置进行剪裁。三维剪裁模块从投影变换模块接收到命令,通过译码单元判断命令是透传、还是需要剪裁处理。对于透传命令,直接发给图形流水线下一级的视窗变换模块;对于图元或者光栅位置命令则进行剪裁处理,最后将处理完的数据装配,发给图形流水线下一级的视窗变换模块。
通过软件进行三维裁剪时,软件的裁剪效率与场景的复杂度有关,复杂的场景导致三维裁剪的速率低下。
发明内容
本发明的发明目的:提供一种图形处理器三维剪裁电路,可以实现对点、线、三角形及光栅位置实现高效的裁剪处理,有效提升图形处理器几何处理阶段效率。
本发明的技术方案:
一种图形处理器三维剪裁电路,包括:
命令预处理模块1、第一三维剪裁子模块2、第二三维剪裁子模块3、命令发送模块4;
所述命令预处理模块1对图元命令的坐标与视景体的位置关系进行预先判断,位置关系分为三类:图元在视景体外、图元在视景体内、图元与视景体有交点;若图元与视景体有交点,则需将图元命令分配给第一三维剪裁子模块2或第二三维裁剪子模块3进行裁剪处理;若图元命令在视景体内,不需要进行裁剪处理,图元命令直接发送给第一三维裁剪子模块2透传;若图元坐标在视景体外,不需要进行裁剪处理,直接将图元命令丢弃;
所述第一三维剪裁子模块2对图元命令在视景体内的图元命令透传;对图元与视景体有交点的图元命令进行剪裁处理,裁剪处理操作的过程包括判断图元与视景体的位置关系,计算线段、三角形与视景体的交点,计算线段、三角形剪裁后产生交点的属性;
所述第二三维剪裁子模块3对图元与视景体有交点的图元命令进行剪裁处理,裁剪处理操作的过程包括判断图元与视景体的位置关系,计算线段、三角形与视景体的交点,计算线段、三角形剪裁后产生交点的属性;
所述命令发送模块4将经过第二三维裁剪子模块3裁剪处理,及经过第一三维剪裁子模块2中裁剪处理或者透传后的图元命令进行输出。
命令预处理模块1对输入到三维剪裁模式的命令进行解析和分类输出,选择将透传命令发送给第一三维裁剪子模块2;将图元和光栅位置命令,依据第一三维裁剪子模块2、第二三维裁剪模块3当前是否忙的状态,依次执行乒乓操作,选择的具体依据为:当两个三维剪裁子模块都在空闲状态时优先选择第一三维裁剪子模块2执行剪裁操作;当第一三维裁剪子模块2处于忙状态而第二三维裁剪子模块3空闲时,则由第二裁三维剪子模块3执行剪裁操作;当第二三维裁剪子模块3处于忙状态而第一三维裁剪子模块2空闲时,则由第一三维裁剪模块执行剪裁操作;当第一三维裁剪子模块2和第二三维裁剪子模块3都处于忙状态时,进入等待状态,直到有三维裁剪子模块剪裁任务完成,空闲后继续执行图元剪裁处理。
所述第一三维裁剪子模块2、第二三维裁剪子模块3电路结构及裁剪方法相同;
第一三维剪裁子模块2包括控制模块21,命令解析模块22、数据选择模块23、数据处理模块24、顶点存储模块25、终点存储模块26、存储地址产生模块27和输出模块28;
控制模块21完成对第一三维剪裁子模块2中其他各个模块在数据交互过程和计算过程中的控制;
命令解析模块22对来自上一级透视除法模块的图元命令类型进行解析,当图元命令输入第一三维剪裁子模块2后,先由命令解析模块22进行解析,将图元命令解析为3类:第一类为点、线、三角形三种基本图元命令;第二类为光栅位置命令;第三类为透传命令;其中点、线、三角形及光栅位置发送给数据处理模块24进行三维裁剪处理,透传命令直接发送给输出模块27,不进行处理;
所述数据处理模块24,接受到图元命令后,首先判断图元与视镜体6个平面的位置关系,对于点而言判断点图元与视镜体的位置关系;对于线图元,分别判断起点、终点与视镜体的位置关系;对于三角形而言,分别判断起点、中点、终点与视镜体的位置关系;当图元顶点x坐标范围为:-1≤x≤1,表示图元在左平面和右平面之间;图元顶点y坐标范围为:-1≤y≤1,表示图元在上平面和下平面之间;图元顶点z坐标范围为:-1≤z≤1,表示图元在前平面和后平面之间;当图元顶点同时满足-1≤x≤1,-1≤y≤1,-1≤z≤1表示图元顶点在视景体内部,否则在视景体外部;数据处理单元在判断完图元与视景体位置关系后,若图元顶点均在视景体内部,则保留该图元,直接发送给输出模块27;若图元顶点均在视镜体的外部,直接被裁掉,不再往下发送任何数据;对于线段、三角形而言,若顶点在视镜体内、外均有时,则需进行求交点的计算,及交点属性的计算;
所述求交点操作,线段与视镜体相交时,若线段的起点、终点一个在视镜体内部,一个在视景体外部时,说明该线与视景体的某一个剪裁平面产生一个交点,数据处理模块将会计算出交点坐标,交点的属性采用线性插值算法计算得出,该交点取代剪裁平面外部的顶点之后与内部顶点构成新的线图元;若线段一个顶点在视镜体的某个平面上,另一个顶点在视镜体之外,这种线图元裁剪后只保留在平面上的顶点,后续按点图元处理;
三角形与视景体相交时,数据处理模块采用一种多边形剪裁算法进行剪裁;该算法的操作过程是沿着多边形的一系列顶点P0,P1,…,Pn,从顶点Pn移动到P0,再顺序移动到Pn,在每一次移动时,均检测连续的两个顶点与剪裁面的位置关系:若线段PtPt+1与裁剪平面有交点,则输出交点;若无交点,线段PtPt+1,终点Pt+1在视景体内部则输出Pt+1;若线段PtPt+1起点、终点均在外部,则无输出;多边形与视景体的一个面产生规则得到一个新的顶点序列Q0,Q1,…,Qn,该顶点序列作为下个剪裁面处理过程的输入;三维裁剪电路在计算过程中,首先利用该算法,判断三角形与视镜体左平面的位置关系,从而得到一个新的多边形顶点序列,然后以此新的顶点序列作为输入,使用视景体右平面线进行剪裁,又得到一个新的多边形顶点序列;次序依次裁剪下去,直到与视景体6个面全部完成裁剪,得到最终的顶点序列N0,N1,…,Nn;再利用重心插值算法求输出点的属性,重心差值算法以原始三角形的起点、中点、终点为顶点,利用重心插值公式一次求出N0,N1,…,Nn的属性;若顶点个数小于三个,则不往下发送任何数据;若顶点个数等于三个,则按顺序组装发送三个顶点,即输出一个剪裁后的三角形,若顶点个数大于三个,说明被剪裁三角形剪裁后成为边数为N的多边形,输出模块以N0为所有三角形的起点,将输出点按照同一方向组装成N-2个三角形,最终以三角形为单元发送组装后的顶点数据;
所述数据选择模块23负责对顶点存储模块25、终点存储模块26的输入数据进行选择;选择来自三个部分:命令解析模块22、控制模块21、数据处理模块23;数据选择模块23是通过选择器来实现,命令输入有效时,选择命令解析模块22的数据;数据处理模块交点计算操作结束指示信号有效时,选择数据处理模块23输出的交点坐标;控制模块21原始输入坐标操作时,选择控制模块21输出的数据;
所述定点存储模块25,分为顶点存储及其属性储分两部分:一部分为存储求交点时中间计算点的坐标;另一部分为存储命令解析模块22发出的点、线、三角形的坐标及其属性;
所述终点存储模块26,存储剪裁后产生的新点的坐标及其属性,最多存储9个点的坐标及属性。
所示顶点存储地址生成模块27,为顶点存储模块生成存储地址,;负责顶点存储模块的读写使能以及读写地址的产生;
所述输出模块28,将剪裁后的最终图元顶点坐标及属性数据进行装配发给命令发送模块4。
所述命令发送模块4,将第一三维裁剪子模块2和第二三位裁剪子模块裁3剪完成后的各类命令选择输出。
本发明的有益效果:
所述的一种图形处理器三维剪裁电路以视镜体的6个面为裁剪面,对点、线、三角形、光栅位置进行剪裁操作,由两个剪裁核心乒乓操作提高了三维剪裁的处理效率,很大程度上提升了三维剪裁单元的性能。
附图说明
图1是本发明中一种图形处理器三维剪裁模块体系结构图;
图2是本发明中剪裁子模块框图;
图3是本发明中三维裁剪子模块计算结构。
具体实施方式
下面结合附图和具体实施例,对本发明的技术方案进行清楚、完整地表述。显然,所表述的实施例仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提所获得的所有其他实施例,都属于本发明的保护范围。
一种图形处理器三维剪裁电路,包括:
命令预处理模块1、第一三维剪裁子模块2、第二三维剪裁子模块3、命令发送模块4;
所述命令预处理模块1对图元命令的坐标与视景体的位置关系进行预先判断,位置关系分为三类:图元在视景体外、图元在视景体内、图元与视景体有交点;若图元与视景体有交点,则需将图元命令分配给第一三维剪裁子模块2或第二三维裁剪子模块3进行裁剪处理;若图元命令在视景体内,不需要进行裁剪处理,图元命令直接发送给第一三维裁剪子模块2;若图元坐标在视景体外,不需要进行裁剪处理,直接将图元命令丢弃;命令预处理模块1对图元命令与视景体位置关系进行预先判断,将图元命令进行分类处理,提高第一三维裁剪子模块2和第二三维裁剪子模块3的利用率和图元裁剪效率;
所述第一三维剪裁子模块2和第二三维剪裁子模块3的电路结构及裁剪功能一致,均可对点、线、三角形、光栅位置命令进行剪裁处理,裁剪处理操作的过程包括判断图元与视景体的位置关系,计算线段、三角形与视景体的交点,计算线段、三角形剪裁后产生交点的属性;
所述命令发送模块主要控制如何从第一三维剪裁子模块2和第二三维裁剪子模块3中选择裁剪后的图元命令进行输出。
述预处理模块对输入到三维剪裁模式的命令进行解析和分类输出,选择将透传命令发送给第一三维裁剪子模块2;将图元和光栅位置命令,依据第一三维裁剪子模块2、第二三维裁剪模块3当前是否忙的状态,依次执行乒乓操作,选择的具体依据为:当两个三维剪裁子模块都在空闲状态时优先选择第一三维裁剪子模块2执行剪裁操作;当第一三维裁剪子模块2处于忙状态而第二三维裁剪子模块3空闲时,则由第二裁三维剪子模块3执行剪裁操作;当第二三维裁剪子模块3处于忙状态而第一三维裁剪子模块2空闲时,则由第一三维裁剪模块执行剪裁操作;当第一三维裁剪子模块2和第二三维裁剪子模块3都处于忙状态时,进入等待状态,直到有三维裁剪子模块剪裁任务完成,空闲后继续执行图元剪裁处理。
所述第一三维裁剪子模块2、第二三维裁剪子模块3电路结构及裁剪方法相同。第一三维剪裁子模块2包括控制模块21,命令解析模块22、数据选择模块23、数据处理模块24、顶点存储模块25、终点存储模块26、存储地址产生模块27和输出模块28。
控制模块21完成对第一三维剪裁子模块2中其他各个模块在数据交互过程和计算过程中的控制。
命令解析模块22对来自上一级透视除法模块的图元命令类型进行解析,当图元命令输入第一三维剪裁子模块2后,先由命令解析模块22进行解析,将图元命令解析为3类:第一类为点、线、三角形三种基本图元命令;第二类为光栅位置命令;第三类为透传命令。其中点、线、三角形及光栅位置发送给数据处理模块24进行三维裁剪处理,透传命令直接发送给输出模块27,不进行处理;
所述数据处理模块24,接受到图元顶点命令后,首先判断图元与视镜体6个平面的位置关系,对于点而言判断点图元与视镜体的位置关系;对于线图元,分别判断起点、终点与视镜体的位置关系;对于三角形而言,分别判断起点、中点、终点与视镜体的位置关系。当图元顶点x坐标范围为:-1≤x≤1,表示图元在左平面和右平面之间;图元顶点y坐标范围为:-1≤y≤1,表示图元在上平面和下平面之间;图元顶点z坐标范围为:-1≤z≤1,表示图元在前平面和后平面之间。当图元顶点同时满足-1≤x≤1,-1≤y≤1,-1≤z≤1表示图元顶点在视景体内部,否则在视景体外部;数据处理单元在判断完图元与视景体位置关系后,若图元顶点均在视景体内部,则保留该图元,直接发送给输出模块27;若图元顶点均在视镜体的外部,直接被裁掉(光栅位置除外,依然发送给下一级流水线),不再往下发送任何数据;对于线段、三角形而言,若顶点在视镜体内、外均有时,则需进行求交点的计算,及交点属性的计算。
所述求交点操作,线段与视镜体相交时,若线段的起点、终点一个在视镜体内部,一个在视景体外部时,说明该线与视景体的某一个剪裁平面产生一个交点,数据处理模块将会计算出交点坐标,交点的属性采用线性插值算法计算得出,该交点取代剪裁平面外部的顶点之后与内部顶点构成新的线图元;若线段一个顶点在视镜体的某个平面上,另一个顶点在视镜体之外,这种线图元裁剪后只保留在平面上的顶点,后续按点图元处理;
三角形与视景体相交时,数据处理模块采用一种多边形剪裁算法进行剪裁。该算法的操作过程是沿着多边形的一系列顶点P0,P1,…,Pn,从顶点Pn移动到P0,再顺序移动到Pn,在每一次移动时,均检测连续的两个顶点与剪裁面的位置关系:若线段PtPt+1与裁剪平面有交点,则输出交点;若无交点,线段PtPt+1,终点Pt+1在视景体内部则输出Pt+1;若线段PtPt+1起点、终点均在外部,则无输出。每一步中剪裁后的多边形的顶点序列,可能会增加一个顶点或两个顶点,也可能不会增加顶点,多边形与视景体的一个面产生规则得到一个新的顶点序列Q0,Q1,…,Qn,该顶点序列作为下个剪裁面处理过程的输入。三维裁剪电路在计算过程中,首先利用该算法,判断三角形与视镜体左平面的位置关系,从而得到一个新的多边形顶点序列,然后以此新的顶点序列作为输入,使用视景体右平面线进行剪裁,又得到一个新的多边形顶点序列。次序依次裁剪下去,直到与视景体6个面全部完成裁剪,得到最终的顶点序列N0,N1,…,Nn。再利用重心插值算法求输出点的属性,重心差值算法以原始三角形的起点、中点、终点为顶点,利用重心插值公式一次求出N0,N1,…,Nn的属性。若顶点个数小于三个,则不往下发送任何数据。若顶点个数等于三个,则按顺序组装发送三个顶点,即输出一个剪裁后的三角形,若顶点个数大于三个,说明被剪裁三角形剪裁后成为边数为N的多边形,输出模块以N0为所有三角形的起点,将输出点按照同一方向组装成N-2个三角形,最终以三角形为单元发送组装后的顶点数据。
所述数据选择模块23负责对顶点存储模块25、终点存储模块26的输入数据进行选择。选择来自三个部分:命令解析模块22、控制模块21、数据处理模块23。本模块是通过选择器来实现,命令输入有效时,选择命令解析模块22的数据;数据处理模块交点计算操作结束指示信号有效时,选择数据处理模块23输出的交点坐标;控制模块21原始输入坐标操作时,选择控制模块21输出的数据。
所述定点存储模块25,分为顶点存储及其属性储分两部分:一部分为存储求交点时中间计算点的坐标。另一部分为存储命令解析模块22发出的点、线、三角形的坐标及其属性。
所述终点存储模块26,存储剪裁后产生的新点的坐标及其属性,最多存储9个点的坐标及属性。
所示顶点存储地址生成模块27,为顶点存储模块生成存储地址,主要负责顶点存储模块的读写使能以及读写地址的产生。
所述输出模块28,将剪裁后的最终图元顶点坐标及属性数据进行装配发给命令发送模块4。
所述命令发送模块4,将第一三维裁剪子模块2和第二三位裁剪子模块裁3剪完成后的各类命令选择输出。有2类命令需要选择输出:第一种为透传命令,该类命令只从平面剪裁子模块1输出;第二种为图元和光栅位置命令,该类命令以图元为单位,依次从第一三维剪裁子模块2的和第二三维剪裁子模块3输出。
实施例
如图1所示,该三维剪裁电路由命令预处理模块1、第一三维剪裁子模块2、第二三维剪裁子模块3、命令发送模块4组成。命令预处理模块1将透传命令发送给第一三维剪子模块2,将图元和光栅位置命令以图元为单位依次序分别发送给第一三维剪裁子模块2和第二三维剪裁子模块3;第一三维剪裁子模块2和第二三维剪裁子模块3裁剪功能及电路结构一致,均可对点、线、三角形、光栅位置命令进行剪裁处理;命令发送模块4主要控制如何从两个三维剪裁子模块中选择剪裁操作后的有效数据输出。
如图2所示,控制模块21完成对第一三维剪裁子模块2中其他各个模块在数据交互过程和计算过程中的控制,产生控制其他模块的信号。
命令解析模块22对输入命令进行判断分类:透传命令、图元和光栅位置命令,并根据不同的命令产生对应的标记信号发送给其它模块。透传命令直接通过输出模块发给命令发送模块。图元命令为148位,其命令结构,每条命令从高位开始依次包括10位的命令码、10位的控制字和128位的数据部分。其中命令码采用4+6的结构,高4位为流水级编号,低6位为命令编号;控制字的功能与命令相关,可以获得该条命令的详细信息,如cmd[9:0](命令码)表示属性类型;ctrl[9:0](控制字)表示图元顶点类型及工作模式;数据部分可分为四个32位,32位数据采用IEEE754格式的浮点数,设计中数据处理涉及到的运算单元均需具备浮点数据的处理能力,32位数据内容为命令所携带的具体参数。
数据选择模块23对原始点存储模块和终点存储模块的输入数据进行选择,其输入来自命令解析模块、数据处理模块和顶点存储模块。
数据处理模块24是通过浮点运算单元来实现三维剪裁单元中的各种算术运算,包括计算点、线段、三角形、光栅位置与视镜体的位置关系及交点属性。对于点图元命令,依次判断图元顶点与视景体的位置关系,点图元坐标-1≤x≤1,表示图元在左平面和右平面之间;图元坐标-1≤y≤1,表示图元在上平面和下平面之间;图元坐标-1≤z≤1,表示图元在前平面和后平面之间。当图元顶点同时满足-1≤x≤1,-1≤y≤1,-1≤z≤1表示图元顶点在视镜体内部,否则在视景体外部。光栅位置命令,其剪裁过程与点的剪裁过程基本一致,不同之处在于光栅位置无论裁掉与否均继续下发,但要在命令的相应标志位以0和1标记该光栅位置无效或有效。若线段和三角形与视镜体存在交点,即线段、三角形某些顶点在视镜体内部,一些顶点在视镜体外部。对线段而言与视镜体存在交点这种情况下,数据处理模块依次判断线段与视镜体6个平面的位置关系,求出与视镜体平面的交点,再通过线性差值算法求交点属性,交点与视镜体内部的点重新组成新的线段并发送给下一级,例如线段起点坐标a=(-1.5,0,0),终点坐标b=(0,0,0),数据处理模块依次判断ab与左、右、上、下、后、前六个平面的交点,计算结果为ab与左平面有一个交点c,交点坐标c=(-1,0,0),求出c点坐标后,利用线性插值算法求出c点的属性,再将cb重新组装成线段发送给下一级。对三角形而言,依次判断三角与视镜体六个平面的交点,并利用重心差值算法求出交点属性,将视镜体交点及视镜体内部的点按照新的序列组装成三角形输出,例如起点a=(-1.5,0,0),中点b=(-1,0,-1),终点c(0,0,0)。判断三角形abc与左、右、上、下、后、前六个平面的交点。计算三角形与左平面的交点时,先计算终点c到起点a与左平面的关系,得到交点d=(-1,0,0),,再判断起点a到中间点b与左平面的关系,输出交点e(-1,0,-1),最后判断中点b到终点c与左平面的位置关系,输出点f(0,0,0),整个过程的判断顺序:终点C→起点A→中间点B→终点C,再与视景体其他面重复上述步骤,上述例子最终输出一个三角形dbc,d=(-1,0,0),b=(-1,0,-1),c=(0,0,0)。
顶点存储模块25的功能是存储命令解析模块22发出的原始命令输入的点、线、三角形的剪裁坐标及其属性,以及求交点操作时存储中间计算的点的坐标。
终点存储模块26存储剪裁后产生的新点的坐标及其属性,本具体实施方式中,三角形图元裁剪时,最多需要存储9个点的坐标与属性值。
存储地址产生模块27包括原始点存储地址产生模块、终点存储地址产生模块、分别负责对应存储模块的读写使能与读写地址产生。
输出模块28将剪裁后的最终图元顶点坐标及属性数据进行装配发给命令发送模块。
如图3所示,是本发明中第一三维裁剪子模块2及第二三维裁剪子模块的计算结构示意图,包括位置判断、交点计算、线段属性计算,三角形属性计算、浮点运算单元、顶点属性存储单元、控制模块;
最后应说明的是,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (4)
1.一种图形处理器三维剪裁电路,其特征在于,包括:
命令预处理模块(1)、第一三维剪裁子模块(2)、第二三维剪裁子模块(3)、命令发送模块(4);
所述命令预处理模块(1)对图元命令的坐标与视景体的位置关系进行预先判断,位置关系分为三类:图元在视景体外、图元在视景体内、图元与视景体有交点;若图元与视景体有交点,则需将图元命令分配给第一三维剪裁子模块(2)或第二三维裁剪子模块(3)进行裁剪处理;若图元命令在视景体内,不需要进行裁剪处理,图元命令直接发送给第一三维裁剪子模块(2)透传;若图元坐标在视景体外,不需要进行裁剪处理,直接将图元命令丢弃;
所述第一三维剪裁子模块(2)对图元命令在视景体内的图元命令透传;对图元与视景体有交点的图元命令进行剪裁处理,裁剪处理操作的过程包括判断图元与视景体的位置关系,计算线段、三角形与视景体的交点,计算线段、三角形剪裁后产生交点的属性;
所述第二三维剪裁子模块(3)对图元与视景体有交点的图元命令进行剪裁处理,裁剪处理操作的过程包括判断图元与视景体的位置关系,计算线段、三角形与视景体的交点,计算线段、三角形剪裁后产生交点的属性;
所述命令发送模块(4)将经过第二三维裁剪子模块(3)裁剪处理,及经过第一三维剪裁子模块(2)中裁剪处理或者透传后的图元命令进行输出。
2.根据权利要求1所述的一种图形处理器三维剪裁电路,其特征在于,
命令预处理模块(1)对输入到三维剪裁模式的命令进行解析和分类输出,选择将透传命令发送给第一三维裁剪子模块(2);将图元和光栅位置命令,依据第一三维裁剪子模块(2)、第二三维裁剪模块(3)当前是否忙的状态,依次执行乒乓操作,选择的具体依据为:当两个三维剪裁子模块都在空闲状态时优先选择第一三维裁剪子模块(2)执行剪裁操作;当第一三维裁剪子模块(2)处于忙状态而第二三维裁剪子模块(3)空闲时,则由第二裁三维剪子模块(3)执行剪裁操作;当第二三维裁剪子模块(3)处于忙状态而第一三维裁剪子模块(2)空闲时,则由第一三维裁剪模块执行剪裁操作;当第一三维裁剪子模块(2)和第二三维裁剪子模块(3)都处于忙状态时,进入等待状态,直到有三维裁剪子模块剪裁任务完成,空闲后继续执行图元剪裁处理。
3.根据权利要求1所述的一种图形处理器三维剪裁电路,其特征在于,
所述第一三维裁剪子模块(2)、第二三维裁剪子模块(3)电路结构及裁剪方法相同;
第一三维剪裁子模块(2)包括控制模块(21),命令解析模块(22)、数据选择模块(23)、数据处理模块(24)、顶点存储模块(25)、终点存储模块(26)、存储地址产生模块(27)和输出模块(28);
控制模块(21)完成对第一三维剪裁子模块(2)中其他各个模块在数据交互过程和计算过程中的控制;
命令解析模块(22)对来自上一级透视除法模块的图元命令类型进行解析,当图元命令输入第一三维剪裁子模块(2)后,先由命令解析模块(22)进行解析,将图元命令解析为3类:第一类为点、线、三角形三种基本图元命令;第二类为光栅位置命令;第三类为透传命令;其中点、线、三角形及光栅位置发送给数据处理模块(24)进行三维裁剪处理,透传命令直接发送给输出模块(27),不进行处理;
所述数据处理模块(24),接受到图元命令后,首先判断图元与视镜体6个平面的位置关系,对于点而言判断点图元与视镜体的位置关系;对于线图元,分别判断起点、终点与视镜体的位置关系;对于三角形而言,分别判断起点、中点、终点与视镜体的位置关系;当图元顶点x坐标范围为:-1≤x≤1,表示图元在左平面和右平面之间;图元顶点y坐标范围为:-1≤y≤1,表示图元在上平面和下平面之间;图元顶点z坐标范围为:-1≤z≤1,表示图元在前平面和后平面之间;当图元顶点同时满足-1≤x≤1,-1≤y≤1,-1≤z≤1表示图元顶点在视景体内部,否则在视景体外部;数据处理单元在判断完图元与视景体位置关系后,若图元顶点均在视景体内部,则保留该图元,直接发送给输出模块(27);若图元顶点均在视镜体的外部,直接被裁掉,不再往下发送任何数据;对于线段、三角形而言,若顶点在视镜体内、外均有时,则需进行求交点的计算,及交点属性的计算;
所述求交点操作,线段与视镜体相交时,若线段的起点、终点一个在视镜体内部,一个在视景体外部时,说明该线与视景体的某一个剪裁平面产生一个交点,数据处理模块将会计算出交点坐标,交点的属性采用线性插值算法计算得出,该交点取代剪裁平面外部的顶点之后与内部顶点构成新的线图元;若线段一个顶点在视镜体的某个平面上,另一个顶点在视镜体之外,这种线图元裁剪后只保留在平面上的顶点,后续按点图元处理;
三角形与视景体相交时,数据处理模块采用一种多边形剪裁算法进行剪裁;该算法的操作过程是沿着多边形的一系列顶点P0,P1,…,Pn,从顶点Pn移动到P0,再顺序移动到Pn,在每一次移动时,均检测连续的两个顶点与剪裁面的位置关系:若线段PtPt+1与裁剪平面有交点,则输出交点;若无交点,线段PtPt+1,终点Pt+1在视景体内部则输出Pt+1;若线段PtPt+1起点、终点均在外部,则无输出;多边形与视景体的一个面产生规则得到一个新的顶点序列Q0,Q1,…,Qn,该顶点序列作为下个剪裁面处理过程的输入;三维裁剪电路在计算过程中,首先利用该算法,判断三角形与视镜体左平面的位置关系,从而得到一个新的多边形顶点序列,然后以此新的顶点序列作为输入,使用视景体右平面线进行剪裁,又得到一个新的多边形顶点序列;次序依次裁剪下去,直到与视景体6个面全部完成裁剪,得到最终的顶点序列N0,N1,…,Nn;再利用重心插值算法求输出点的属性,重心差值算法以原始三角形的起点、中点、终点为顶点,利用重心插值公式一次求出N0,N1,…,Nn的属性;若顶点个数小于三个,则不往下发送任何数据;若顶点个数等于三个,则按顺序组装发送三个顶点,即输出一个剪裁后的三角形,若顶点个数大于三个,说明被剪裁三角形剪裁后成为边数为N的多边形,输出模块以N0为所有三角形的起点,将输出点按照同一方向组装成N-2个三角形,最终以三角形为单元发送组装后的顶点数据;
所述数据选择模块(23)负责对顶点存储模块(25)、终点存储模块(26)的输入数据进行选择;选择来自三个部分:命令解析模块(22)、控制模块(21)、数据处理模块(23);数据选择模块(23)是通过选择器来实现,命令输入有效时,选择命令解析模块(22)的数据;数据处理模块交点计算操作结束指示信号有效时,选择数据处理模块(23)输出的交点坐标;控制模块(21)原始输入坐标操作时,选择控制模块(21)输出的数据;
所述定点存储模块(25),分为顶点存储及其属性储分两部分:一部分为存储求交点时中间计算点的坐标;另一部分为存储命令解析模块(22)发出的点、线、三角形的坐标及其属性;
所述终点存储模块(26),存储剪裁后产生的新点的坐标及其属性,最多存储9个点的坐标及属性。
所示顶点存储地址生成模块(27),为顶点存储模块生成存储地址,;负责顶点存储模块的读写使能以及读写地址的产生;
所述输出模块(28),将剪裁后的最终图元顶点坐标及属性数据进行装配发给命令发送模块(4)。
4.根据权利要求1所述的一种图形处理器三维剪裁电路,其特征在于,
所述命令发送模块(4),将第一三维裁剪子模块(2)和第二三位裁剪子模块裁(3)剪完成后的各类命令选择输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811518685.3A CN109727184B (zh) | 2018-12-12 | 2018-12-12 | 一种图形处理器三维剪裁电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811518685.3A CN109727184B (zh) | 2018-12-12 | 2018-12-12 | 一种图形处理器三维剪裁电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109727184A true CN109727184A (zh) | 2019-05-07 |
CN109727184B CN109727184B (zh) | 2023-05-23 |
Family
ID=66295359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811518685.3A Active CN109727184B (zh) | 2018-12-12 | 2018-12-12 | 一种图形处理器三维剪裁电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109727184B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111210526A (zh) * | 2019-12-31 | 2020-05-29 | 西安翔腾微电子科技有限公司 | 一种平面剪裁中gpu几何图元起始标记管理方法 |
CN111241776A (zh) * | 2019-12-31 | 2020-06-05 | 西安翔腾微电子科技有限公司 | 基于SystemC的平面剪裁中GPU几何图元起始标记管理的TLM模型 |
CN112581583A (zh) * | 2020-12-24 | 2021-03-30 | 西安翔腾微电子科技有限公司 | 一种基于SysML视图的GPU三维剪裁模块的TLM装置及操作方法 |
CN112634423A (zh) * | 2020-12-24 | 2021-04-09 | 西安翔腾微电子科技有限公司 | 一种基于SysML视图的GPU平面剪裁模块的TLM装置及操作方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004102841A (ja) * | 2002-09-11 | 2004-04-02 | Toshiba Corp | クリッピング処理装置、グラフィックスシステム、クリッピング処理方法及びグラフィックス方法 |
CN105976394A (zh) * | 2016-05-31 | 2016-09-28 | 深圳市恩普电子技术有限公司 | 一种自适应调整胎儿三维超声数据的裁剪方法 |
CN108447015A (zh) * | 2018-03-27 | 2018-08-24 | 长沙景嘉微电子股份有限公司 | Gpu中一种实现用户自定义裁剪功能的装置和方法 |
-
2018
- 2018-12-12 CN CN201811518685.3A patent/CN109727184B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004102841A (ja) * | 2002-09-11 | 2004-04-02 | Toshiba Corp | クリッピング処理装置、グラフィックスシステム、クリッピング処理方法及びグラフィックス方法 |
CN105976394A (zh) * | 2016-05-31 | 2016-09-28 | 深圳市恩普电子技术有限公司 | 一种自适应调整胎儿三维超声数据的裁剪方法 |
CN108447015A (zh) * | 2018-03-27 | 2018-08-24 | 长沙景嘉微电子股份有限公司 | Gpu中一种实现用户自定义裁剪功能的装置和方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111210526A (zh) * | 2019-12-31 | 2020-05-29 | 西安翔腾微电子科技有限公司 | 一种平面剪裁中gpu几何图元起始标记管理方法 |
CN111241776A (zh) * | 2019-12-31 | 2020-06-05 | 西安翔腾微电子科技有限公司 | 基于SystemC的平面剪裁中GPU几何图元起始标记管理的TLM模型 |
CN111210526B (zh) * | 2019-12-31 | 2023-09-15 | 西安翔腾微电子科技有限公司 | 一种平面剪裁中gpu几何图元起始标记管理方法 |
CN111241776B (zh) * | 2019-12-31 | 2023-10-20 | 西安翔腾微电子科技有限公司 | 基于SystemC的平面剪裁中GPU几何图元起始标记管理的TLM装置 |
CN112581583A (zh) * | 2020-12-24 | 2021-03-30 | 西安翔腾微电子科技有限公司 | 一种基于SysML视图的GPU三维剪裁模块的TLM装置及操作方法 |
CN112634423A (zh) * | 2020-12-24 | 2021-04-09 | 西安翔腾微电子科技有限公司 | 一种基于SysML视图的GPU平面剪裁模块的TLM装置及操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109727184B (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109727184A (zh) | 一种图形处理器三维剪裁电路 | |
CN100468418C (zh) | 由边界表示数据生成体数据的方法及其程序 | |
CN1886744B (zh) | 在可扩展的处理器架构中增加高级指令所用的方法和装置 | |
Muigg et al. | Interactive volume visualization of general polyhedral grids | |
US20100131251A1 (en) | Shortest path search method and device | |
CN1710607A (zh) | 一种面向虚拟现实三维图形引擎的三维场景组织方法 | |
CN101303774B (zh) | 基于三维实体模型的四边形有限元网格生成方法 | |
CN103164864B (zh) | 计算机图像处理中多边形的三角化方法及其系统 | |
Eastman et al. | A review of solid shape modelling based on integrity verification | |
CN102177518B (zh) | 实现有限元模型的方法和设备 | |
CN115564925A (zh) | 基于B-rep模型和笛卡尔网格切片的网格生成方法 | |
CN112015735A (zh) | 一种非结构化网格的数据存储结构及数据存储方法 | |
WO2024183495A1 (zh) | 一种基于拓展体素的保持设计特征的cad模型仿真方法 | |
Fleury | Shape optimal design by the convex linearization method | |
JPH08153214A (ja) | 3次元直交格子データの生成方法 | |
CN109712063A (zh) | 一种图形处理器平面剪裁电路 | |
CN115346005B (zh) | 基于嵌套包围盒概念用于物面网格的数据结构构建方法 | |
Stolte et al. | Discrete Ray‐Tracing of Huge Voxel Spaces | |
CN114119882B (zh) | 飞行器动态流场分析中高效的嵌套网格宿主单元搜索方法 | |
CN103020402B (zh) | 建模方法和装置 | |
Sederberg | Applications to computer aided geometric design | |
CN108986011B (zh) | 平面剪裁加速器 | |
CN107529638B (zh) | 线性求解器的加速方法、存储数据库及gpu系统 | |
CN102156705A (zh) | Cad文件加载方法及装置 | |
CN110796729B (zh) | 一种基于二叉树的网格划分方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |