CN103782324A - 使用纹理坐标导数的加速的纹理查找 - Google Patents
使用纹理坐标导数的加速的纹理查找 Download PDFInfo
- Publication number
- CN103782324A CN103782324A CN201280044105.6A CN201280044105A CN103782324A CN 103782324 A CN103782324 A CN 103782324A CN 201280044105 A CN201280044105 A CN 201280044105A CN 103782324 A CN103782324 A CN 103782324A
- Authority
- CN
- China
- Prior art keywords
- pixel
- texel
- derivative
- facet
- storage address
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/455—Image or video data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
Abstract
公开用于准备预提取3D图形着色器程序中的存储器的方法、系统和装置。基于纹理图中先前读取的纹素的存储器地址,通过使用存储器地址相对于像素距离的一阶导数来估算待读取纹素的存储器地址。然后预提取估算的存储器地址以便在渲染对应于该纹素的该像素时使用。通过对应的像素是否位于3D模型上的相同平坦的小平面上,可以确定是否要执行纹素存储器地址的估算。可以使用小平面上的多个方向来进行存储器地址估算以及高阶导数。
Description
相关申请的交叉引用
本申请是2012年7月20日提交的美国申请No.13/554,976(代理人案号90619-819671(009610US))的延续并要求其权益,美国申请No.13/554,976要求2011年9月12日提交的美国临时申请No.61/527,061(代理人案号90619-802863(009600US))的权益。上述申请基于所有目的通过引用全部并入本文。
技术领域
本发明的实施方案大体上涉及计算机图形处理系统,以及具体来说,涉及预测用于渲染三维对象的纹理图的存储器提取的图形处理单元。
背景技术
现代视频游戏和计算机辅助设计(CAD)应用中的三维(3D或3-D)模型使用纹理图来接近真实外观。纹理图(有时称为纹理)典型地是颜色、透明度、材料属性、表面取向或其他特征的表,其可以采用数字方式包绕或以其它方式映射到3D对象。尽管名称如此,它们不仅能够定义对象的纹理外观,而且还能够定义其颜色、反射属性、材料属性和其他表面细节。在视频游戏中,用于3D模型的纹理往往包括漫反射颜色纹理、镜面(闪耀)颜色纹理、法线图、透明度图和材料指数等。
在计算机图形渲染中,图形处理单元(GPU)中的一些最高时延操作与存储器访问相关。存储器读取操作可能比如加法、减法、乘法和除法的代数运算操作多花费数个数量级的更长时间来执行。例如,从存储器读取值要花费10-100倍于将两个值相加在一起所花费的时钟周期并非不常见。
在现有技术中,尽管名称如此,着色器(shader)是常用的渲染程序且不限于遮光效果,其通过一行一次启动若干渲染线程来补偿存储器访问时延。将每个线程指定到要渲染的像素。线程使用指定的像素来查找该像素对应于什么对象(或背景)并访问适合的纹理图以用于渲染。具体来说,为该像素读取纹理图内适合的纹素的存储器位置。当随像素完成线程时,为另一个像素调用另一个线程。这样持续进行直到图像的所有像素均被渲染为止。一次调用的线程的数量受限于用于跟踪这些线程和关联变量的寄存器或堆栈存储器的数量。
虽然过去几十年中图形处理器和渲染技术突飞猛进地提高,尤其在量产的消费级视频游戏硬件中,但是现有技术中始终存在对更快且更高效的3D渲染的需求。
发明内容
公开用于为着色器程序预提取与纹理图相关的存储器的方法、系统和装置。一般,使用先前访问的纹素的存储器位置来估算将来访问的存储器位置。例如,关于存储器地址相对于3D模型的相同三角小平面中的像素位置计算一阶导数(类似于有限差和差商)。使用导数估算将可能为另一个像素访问的另一个纹素的存储器位置。然后读取估算的存储器位置,以便将其内容置于本地变量或本地高速缓存中。如果着色器程序随后渲染与所预提取的纹素对应的像素,则渲染能够进行得更快,因为纹素的存储器已经被读取。
如果纹理图的存储器地址是连续的且像素是三维模型上同一平面的小平面的部分,则能够使用一阶导数精确地估算将来的存储器地址。如果确定用于创建导数的像素和将来的像素位于相同的小平面上,则可以计算该导数并读取存储器。如果它们位于彼此相对偏斜的不同小平面上,则可能要避免导数的计算,因为给定小平面之间的倾斜且不连续,该估算可能不精确。再者,因为用于不同小平面的存储器可能不相邻,所以估算可能不精确。
本公开的一些实施方案涉及一种准备预提取用于图形处理的纹素的方法。该方法包括接收纹理图的纹素的存储器地址,这些纹素对应于图像中的像素,确定像素全部对应于三维模型的共同小平面,使用操作上与存储器耦合的至少一个处理器通过将存储器地址中的差除以图像中像素之间的距离来计算导数,以及使用计算的导数来预提取另一个像素位置的信息。计算用于预提取的导数是基于像素对应于相同小平面的确定。
一些实施方案涉及一种用于准备预提取用于图形处理的纹素的方法。该方法包括接收要取样以应用于三维模型的纹理图的第一纹素的第一存储器地址,该第一纹素对应于图像中的第一像素,接收纹理图的第二纹素的第二存储器地址,所述第二纹素对应于图像中的第二像素,使用操作上与存储器耦合的至少一个处理器通过将第一存储器地址与第二存储器地址之间的差除以图像的第一像素和第二像素的位置之间的距离来计算导数,以及基于计算的导数估算纹理图的第三纹素的第三存储器地址。
其他实施方案涉及采用或存储上文描述的方法的指令的机器可读有形存储介质和计算机系统。
参考说明书的其余部分以及附图可以实现进一步理解本文公开和建议的实施方案的性质和优点。
附图说明
图1图示根据实施方案的进行纹理化的3D模型。
图2图示用于对图1的3D模型纹理化的纹理图。
图3图示根据实施方案的纹理图的纹素级细节部分。
图4图示根据实施方案的进行纹理化的3D模型上的三角小平面。
图5示出根据实施方案的过程的流程图。
图6示出根据实施方案的过程的流程图。
图7图示适于实施实施方案的计算机系统。
具体实施方式
一般来说,公开用于将纹理图应用于场景中二维、三维或其他维数的对象时估算要读取的存储器地址的方法、系统和装置。对有关纹理图中纹素相对于像素位置的存储器地址取导数,并使用导数估算将来要调用的存储器地址。也可以使用其他插值技术。将估算的存储器地址的内容读入到本地高速缓存中,以便将渲染对应像素时的时延减到最小。
可以使用像素是否对应于3D模型的相同部分(例如小平面)的确定结果来决定估算是否值得继续。例如,如果像素位于3D模型的不同小平面(例如,多个平面三角)上,则估算可能非常偏离真实值且不值得计算。
可以对不同面上的小平面计算高阶导数。这可在有小平面的3D模型尝试逼近弯曲表面(如头部)时尤其有用。即,当3D模型的许多小平面是对曲线的逼近时,则引入曲线的高阶多项式拟合可能是更好的拟合。在此情况中,像素横向上位于下一个面上的确定能够启动高阶导数计算,并估算适合的存储器位置。
可以在垂直(即,正交)方向上取导数。例如,可以在四边形小平面上对x方向计算导数,并然后对y方向计算另一个导数。可以将这些方向与小平面方向、屏幕空间、纹理空间或其他便利的方向对齐以便进行计算。
“导数”包括有限差的差商以及其他导数。例如,存储器位置中的差除以像素位置中的差可以是导数。以数学方式表达,示例导数可以转换为:
等式1:deriv_x=(mem1-mem0)/(sqrt(pixelx1,y0 2–pixelx0,y0 2))
其中deriv_x是导数,mem0和mem1是纹素的存储器位置,以及pixelx0,y0和pixelx1,y0是像素的屏幕位置。函数sqrt()返回正平方根。mem0的纹素映射或以其他方式对应于pixelx0,y0,以及mem1的纹素映射或以其他方式对应于pixelx1,y0。
可以使用导数来估算将来要使用的存储器位置,并然后预提取该存储器位置。例如,可以通过如下等式估算第三存储器位置:
等式2:mem2=mem0+deriv_x*sqrt(pixelx2,y0 2-pixelx0,y0 2)
其中mem2是估算的第三存储器位置,以及pixelx2,y0是可能与mem2的纹素对应的像素的屏幕位置。
在一些现有图形引擎中,在硬件中支持用于计算导数的函数称为ddx()。ddx()函数典型地对存储器地址内的值而非对存储器地址本身进行运算。发明人认识此先存的函数在一些实施方案中能够用以快速地计算存储器地址的导数。
其他算法可以估算非线性表面的存储器位置。例如,硬件可以将贝兹曲线或b样条曲线插值。在此情况中,它不是线性关系;但是它仍是熟知对其取导数的插值/细分。因此,能够在存储器访问中查找模式。在那些情况中,可以使用表面导数(通过曲线参数以解析方式推导的)与存储器地址(在对表面插值时观察到的)组合以预测将来存储器访问。
着色器经常对许多像素执行运算。随着光栅化器遍历3D模型的三角小平面并生成像素,它可以评估沿着三角形行进的方向。光栅化器可以确定用于参考纹素的纹素坐标如何沿着三角形变化。此信息可以用于随其他像素被光栅化而推测性地预提取它们的纹素。这可以在着色器本身中以软件形式实现,其中着色器基于它预期将来要使用的纹素的导数发出即发即忘(fire-and-forget)纹素查找。它也可以内置到硬件中以在低层面上帮助预提取。
在相异的点云中,有一系列的3D点。每个点是x、y和z位置。它不是小平面的部分,所以沿着表面没有行进。但是,一种算法能够检查2个独立点的参数,并使用它们来预测第三个点的行为。
如上文所示,可以从单个小平面为像素3、4、5和更多加速加载存储器。但是,也可以加速点1和2。可以采用“点云”方法,该方法选择数据集中的任何两个点以猜测前两个点将在哪里。例如,可以考虑在它之前已经被渲染的小平面。可以从该小平面中选择第一和最后一个点,以及它使用的第一和最后一个存储器地址。
实施方案的技术优点包括更快速的光栅化。通过基于当前存储器访问中观察到的模式预测将来存储器访问,GPU能够抢先地提取将来的存储器访问,从而大大地缩短实际需要访问时的时延。虽然此解决方案可能导致对更大高速缓存的需求,但是它能够减小GPU的寄存器堆的大小,因为没有需要的那么多线程正在运行中。一般来说,一些实施方案可以利用着色器计算相对于存储器访问的成本某种程度是“免费的”这一事实。要认识到,计算可能因预先计算预测性存储器访问并然后废弃结果而浪费,但是要认识到当大量计算产生正确的估算时,通过更短的存储器时延的好处可以弥补这种浪费。
图1图示根据实施方案的进行纹理化的3D模型。三维模型101能通过多个顶点、多个个体体素或其他方式来定义,正如本领域中公知的。该附图示出模型上的四边形元件,但是可设想直线、三角形、六边形和其他元件,以及子图形(sprite)和点子图形。“子图形”包括其中仅指定两个相对角的屏幕对齐的四边形,或如本领域中公知的其它方式。“点子图形”包括由中心和宽度以及高度指定的四边形或,如本领域中公知的其它方式。在示范实施方案中,模型101是从顶部到底部进行纹理化。纹理化的部分103在顶部,以及未纹理化的部分102位于底部。
附图中相对水平对齐的像素105和106正在着色器程序中进行处理。处理期间,通过查找确定纹理图中映射到像素105和106的纹素的存储器位置。例如,确定虚拟摄像机的像素105具有3D模型101的可视片段在小平面104上的无遮挡视野。因此,必须使用查找的纹理图将3D模型的片段照亮、着色以及以其它方式纹理化以便查看。纹理图可以用于实现颜色、法线图、材料和其他特征。
图2图示用于对图1的3D模型纹理化的纹理图。纹理图210包括纹素205、206和207等。
纹素205映射到图1的像素105。通常,多个纹素映射到一个像素,以及由此将其颜色等混合在一起。为了此论述的目的,本实施方案中,单一纹素映射到单一像素。另外,要理解许多纹素可以映射到一个像素,以及许多像素可以由一个纹素来服务。
因为纹素205映射到像素105,所以纹素205的存储器地址可以说是对应于像素105。相似地,纹素206的存储器地址映射到像素106。
确定像素105和106对应于3D模型上的相同小平面的多个部分。即,像素105和106对应于共同的小平面104。存储器的估算可以是精确的。基于此共性的发现,计算导数,以便能够进行估算。
可以使用有限差来计算导数。例如,如果纹素205的(32位)存储器地址是8C81,以及像素206的存储器地址是8C85,则存储器地址之间的差是8C85-8C81=0004。如果像素105的位置是(1152,541),且像素106的位置是(1175,542),则两个像素之间的距离可以计算为sqrt((1175-1152)2+(542-541)2)=23.0217个像素。导数为0004/23.0217.=0.1737。
也可以使用其他距离测量,如按步长的距离。例如,上文的像素位置的距离可以简单地计算为(1175-1152)+(542+541)=23+1=24个像素。
然后使用该导数来估算要读取的将来存储器位置。例如,着色器程序可以配置成预先读取两个像素。即,着色器程序配置成尝试估算纹理图中要为像素107(图1)读取的存储器位置,并然后预提取该存储器。其他预先读取配置也是可能的。例如,着色器程序可以配置成预先读取10、100或更多个像素。要预先读取的像素的数量可以视小平面的跨度而定。例如,着色器程序可以配置成预先读取小平面上50%范围。
在示范实施方案中,确定所有像素是位于3D模型的相同且平的小平面上。即,用于计算导数的像素105和106与要估算的像素107位于3D模型101的共同小平面104上。基于此确定,逻辑进行到估算阶段。即,着色器尝试估算将为像素107读取纹理图的什么存储器位置。
使用先前计算的导数估算要为像素107读取的存储器地址。在直线斜截式y=mx+b等式中使用根据导数的纹素之一的基地址和导数本身来对存储器地址插值。接续上文的数值示例,如果像素107的位置是(1190,544),则从像素105到像素107的距离可以计算为sqrt((1190-1152)2+(544-541)2)=38.1182个像素。然后,将存储器地址估算为8C81+0.1737*38.1182=8C81+6.6=8C88。
因此,在读取了存储器地址8C81和8C85之后,着色器估算将可能读取的下一个存储器是8C88。无需经历确切地确定下一个像素在哪里与模型相关的常规通道,确定了该存储器地址。可以在正常通道与估算同时进行时启动存储器读取操作。
在该实施方案中,使用估算来预提取存储器。着色器程序请求将存储器地址8C88加载到本地寄存器。着色器可以跟踪到存储器已被加载,或者它可能仅加载存储器地址并让硬件从存储器跟踪高速缓存的值。
可以计算其他方向的像素以便预提取其存储器位置。例如,像素108位于从像素105比从像素106相对垂直的方向。纹素208被映射到像素108。在此垂直方向上计算导数。例如,可以相对于像素105和108的位置在纹素205与208的存储器位置之间计算导数。可以使用该导数来估算映射到像素109的纹素209的存储器地址。
当确定所有像素位于相同小平面上时,在一些实施方案中,可以使得不同方向上执行的估算更快速。例如,像素205-209全部位于小平面104上。如果着色器程序确定第一像素在小平面的左上方或另一末端,则可能无需显性地确定其他像素是否位于相同的小平面上。如果要前跳的像素数量少且小平面大,则可以认为所有像素位于该小平面上。这可以使曲线少的相对平坦的表面上的渲染加速。
图3图示根据实施方案的纹理图的纹素级细节部分。为了简洁,纹素级细节301中未示出小平面。纹素306与纹素305横向相距4个纹素和向上1个纹素。两个纹素已顺序地被读取,并且硬件必须估算要读取的下一个纹素。在此小尺寸中,应用逼近计算导数/斜率并对直线插值的数学严格性的直线视觉技术,显然,与纹素307关联的存储器地址(与纹素306横向相距4个纹素和向上1个纹素)可能是下次将要读取的存储器地址。
即使与纹素307关联的存储器不精确地对应于要渲染的下一个纹素,无论如何,存储器仍将可能被访问,因为常常使用纹素的混合来进行渲染。即,即使与刚好307上方的纹素关联的存储器地址是直接对应于要渲染的下一个纹素的存储器地址,纹素307仍将可能与该纹素混合以便渲染最终颜色。因为根据纹素307的存储器已被读入到高速缓存中,所以混合算法的该部分可能比它以其他方式进行的要快。
图4图示根据实施方案的纹理化的3D模型上的三角小平面。像素405、406和407对齐,且位于相同小平面,小平面404上。因此,如果从像素405和406插值,则计算映射到像素407的纹素的存储器地址成功的可能性相对较高。但是,与不同的相异小平面关联的像素可能造成不同的问题。
像素415、416和418也位于小平面404上。但是,像素417位于小平面434,一个与小平面414不同的小平面上。因此,在本例中,在相同小平面上进行像素的斜截式插值可能是无效的。在一些情况中,在不同小平面上使用像素417和415的新导数对于斜截式插值可能更好。例如,可以取像素415与417之间的导数来估算与像素420对应的纹素的存储器地址。
在垂直方向上,可以取像素415与419之间的导数来估算与像素421对应的纹素的存储器地址。像素419和421位于小平面424上。
可以对弯曲表面或对不同小平面之间的插值计算高级导数。可以使用有限差/差商。高阶导数可以仅取某个点处的导数之间的差并除以该点处像素之间的距离。例如,二阶导数可以计算为:
等式3:deriv2_x=(deriv_x1,-deriv_x0)/(sqrt(pixelx1,y0 2-pixelx0,y0 2))
可以将该二阶导数与一阶导数和系数组合以形成数学线性方程式的形式y=ax"+bx'+x0,其中x"是二阶导数,x'是一阶导数,以及a、b和x0是常数。在某些应用中,甚至更高阶导数(如3阶、4阶等导数)可能是有用的。也可以应用其他估算技术,如使用指数参数、正弦和余弦函数、贝塞尔函数、拉普拉斯变量和其他正交和非正交基的那些技术。
图5是图示根据实施方案的过程500的流程图。在操作501中,接收纹理图的纹素的存储器地址,这些纹素对应于图像中的像素。在操作502中,确定像素全部对应于三维模型的共同小平面。在操作503中,使用操作上与存储器耦合的至少一个处理器,通过将存储器地址中的差除以图像中像素之间的距离来计算导数。在操作504中,使用计算的导数来预提取另一个像素位置的信息。计算用于预提取的导数是基于像素对应于相同小平面的确定。在操作505中,根据所计算的导数沿着另一个方向计算导数。在操作508中,使用计算的导数来预提取大致垂直的像素位置的信息。
图6是图示根据实施方案的过程600的流程图。在操作601中,接收要取样以应用于三维模型的纹理图的第一纹素的第一存储器地址,该第一纹素对应于图像中的第一像素。在操作602中,接收纹理图的第二纹素的第二存储器地址,所述第二纹素对应于图像中的第二像素。在操作603中,确定第一和第二像素是否对应于三维模型的共同小平面。在操作604中,使用操作上与存储器耦合的至少一个处理器,通过将第一存储器地址与第二存储器地址之间的差除以图像的第一像素和第二像素的位置之间的距离来计算导数。导数的计算是基于第一和第二像素对应于相同小平面的确定。在操作605中,基于计算的导数估算纹理图的第三纹素的第三存储器地址。在操作606中,读取第三存储器地址。
可以按上文给定的顺序或按适用的不同次序执行这些操作。可以在计算机或其他机器中将它们自动化,并且可以将它们编码在软件中、固件中或硬编码为机器可读指令,并通过能够执行这些指令的一个或多个处理器来运行。
图7图示根据各种实施方案的适于实施装置的硬件系统的示例。此框图图示计算机系统700,如个人计算机、视频游戏控制台和关联的显示器、移动装置、个人数字助理或适于实践本发明的实施方案的其他数字装置。计算机系统700包括用于运行软件应用以及可选地运行操作系统的中央处理单元(CPU)705。CPU705可以由一个或多个同构或异构处理核组成。存储器710存储供CPU705使用的应用和数据。存储715提供用于应用和数据的非易失性存储和其他计算机可读介质,并且可以包括固定磁盘驱动器、可移动磁盘驱动器、闪存装置和CD-ROM、DVD-ROM、蓝光、HD-DVD或其他光学存储装置,以及信号传输和存储介质。用户输入装置720将来自一个或多个用户的用户输入传送到计算机系统700,其示例可以包括键盘、鼠标、游戏杆、触控板、触摸屏、静态或视频摄像机和/或麦克风。网络接口725允许计算机系统700经由电子通信网络与其他计算机系统通信,并且可以包括通过局域网或广域网(如以太网)的有线或无线通信。音频处理器730调适成根据CPU705、存储器710和/或存储715提供的指令和/或数据生成模拟或数字音频输出。计算机系统700的组件(包括CPU705、存储器710、数据存储715、用户输入装置720、网络接口725和音频处理器730)经由一条或多条数据总线735连接。
图形子系统740还与数据总线735和计算机系统700的组件连接。图形子系统740包括图形处理单元(GPU)745和图形存储器750。图形存储器750包括用于存储输出图像的每个像素的像素数据的显示器存储器(例如,帧缓冲器)。可以将图形存储器750与GPU745集成在相同的装置中、作为分离的装置与GPU745连接和/或在存储器710内实现。可以将像素数据直接从CPU705提供到图形存储器750。作为备选,CPU705为GPU745提供定义期望的输出图像的数据和/或指令,根据这些数据和/或指令,GPU745生成一个或多个输出图像的像素数据。可以将定义期望的输出图像的数据和/或指令存储器在存储器710和/或图形存储器750中。在一个实施方案中,GPU745包括用于根据定义场景的几何形状、光亮、阴影、纹理、运动和/或摄像机参数的指令和数据生成输出图像的像素数据的3D渲染能力。GPU745还可以包括能够执行着色器程序的一个或多个可编程执行单元。
图形子系统740周期性地输出来自图形存储器750的图像的像素数据以便在显示装置755上显示。显示装置755可以是能够响应来自计算机系统700的信号显示可视信息的任何装置,包括CRT、LCD、等离子和OLED显示器。计算机系统700可以向显示装置755提供模拟或数字信号。
根据各种实施方案,CPU705是具有一个或多个处理核的一个或多个通用微处理器。可以使用具有微处理器体系结构的一个或多个CPU705来实现又一些实施方案,该微处理器体系结构专门地调适成用于高度并行和计算上密集的应用,如媒体和交互式娱乐应用。
系统的组件可以经由网络来连接,在不同实施方案中,所述网络可以是如下的任何组合:因特网、IP网络、内联网、广域网(“WAN”)、局域网(“LAN”)、虚拟专用网络(“VPN”)、公众交换电话网(“PSTN”)或支持上文描述的装置之间的数据通信的任何其他类型的网络。网络可以包括有线和无线连接,包括光链路。许多其他示例是可能的,并且本领域技术人员根据本公开会明白许多其他示例。在本文描述中,网络可能专门提到或可能未专门提到。
在前文说明书中,本发明是参考其具体实施方案来描述的,但是本领域技术人员将认识到本发明不限于此。可以单独地或联合地使用上述本发明的各种特征和方面。再者,本发明可以在本文描述那些以外的任何数量的环境和应用中予以利用而不背离说明书的更宽泛的精神和范围。因此,本说明书和附图应视为说明性的而非限制性的。
应该注意,上文论述的方法、系统和装置旨在仅作为示例。必须强调,各种实施方案可以根据适用情况省略、替代或添加各种过程或组件。例如,应该认识到,在备选实施方案中,可以按与所描述的不同的次序来执行这些方法,并且可以添加、省略或组合各种步骤。再有,在各种其他实施方案中可以将相对于某些实施方案描述的特征进行组合。可以采用相似的方式组合这些实施方案的不同方面和要素。再有,应该强调,技术发展,并因此许多要素是示例,且不应解释为限制本发明的范围。
在描述中给出具体细节以便透彻地理解这些实施方案。但是,本领域的技术人员将理解,即便没有这些具体细节,也可以实践这些实施方案。例如,示出一些公知的电路、过程、算法、结构和技术而没有非必要的细节,以免混淆这些实施方案。
再有,要注意,这些实施方案可以描述为作为流程图或框图示出的过程。虽然每个可以将操作描述为顺序过程,但是许多操作可以并行地或同时地执行。此外,这些操作的次序可以重新安排。过程可以具有附图中未包含的附加步骤。
此外,正如本文公开的,术语“存储器”或“存储器单元”可以表示用于存储数据的一个或多个装置,包括只读存储器(ROM)、随机存取存储器(RAM)、磁RAM、磁心存储器、磁盘存储介质、光存储介质、闪存装置或用于存储信息的其他计算机可读介质。术语“计算机可读介质”包括但不限于便携式或固定存储装置、光存储装置、无线信道、sim卡、其他智能卡和能够存储、包含或携带指令或数据的各种其他介质。
再者,实施方案可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现。当在软件、固件、中间件或微代码中实现时,可以将用于执行必需的任务的程序代码或代码段存储在如存储介质的计算机可读介质中。处理器可以执行这些必需的任务。
描述若干实施方案之后,本领域技术人员将认识到,在不背离本发明的精神的前提下可以使用各种修改、替代构造和等效物。例如,上文的要素可以仅是更大系统的组件,其中其他规则可以优先于本发明的应用或以其它方式修改本发明的应用。再有,考虑可以在上文要素之前、期间或之后着手多个步骤。因此,上文的描述不应视为限制本发明的范围。
Claims (20)
1.一种准备预提取用于图形处理的纹素的方法,所述方法包括:
接收纹理图的纹素的存储器地址,所述纹素对应于图像中的像素;
确定所述像素全部对应于三维模型的共同小平面;
使用操作上与存储器耦合的至少一个处理器,通过将所述存储器地址中的差除以所述图像中所述像素之间的距离来计算导数;以及
使用所述计算的导数来预提取另一个像素位置的信息,
其中计算用于预提取的所述导数是基于所述像素对应于所述相同小平面的确定。
2.如权利要求1所述的方法,其还包括:
根据所述计算的导数沿着另一个方向计算导数;以及
使用所述计算的导数来预提取大致垂直的像素位置的信息。
3.一种用于准备预提取用于图形处理的纹素的方法,所述方法包括:
接收要取样以应用于三维模型的纹理图的第一纹素的第一存储器地址,所述第一纹素对应于图像中的第一像素;
接收所述纹理图的第二纹素的第二存储器地址,所述第二纹素对应于所述图像中的第二像素;
使用操作上与存储器耦合的至少一个处理器,通过将所述第一存储器地址与所述第二存储器地址之间的差除以所述图像的所述第一像素和所述第二像素的位置之间的距离来计算导数;以及
基于所述计算的导数估算所述纹理图的第三纹素的第三存储器地址。
4.如权利要求3所述的方法,其还包括:
确定所述第一像素和所述第二像素是否对应于三维模型的共同小平面,
其中所述导数的计算是基于所述第一像素和所述第二像素对应于所述相同小平面的确定。
5.如权利要求4所述的方法,其还包括:
确定所述图像中的第三像素是否对应于所述第一像素和所述第二像素所对应的所述小平面,
其中所述第三存储器地址的所述估算是基于所述第三像素对应于所述第一像素和所述第二像素所对应的所述相同小平面的确定。
6.如权利要求3所述的方法,其还包括:
接收要取样以应用于所述三维模型的所述纹理图的至少一个附加纹素的至少一个附加存储器地址,所述至少一个附加纹素对应于所述图像的至少一个附加像素;
通过将低阶导数的差除以所述图像的所述第一像素或所述第二像素与所述至少一个附加像素的位置之间的距离来计算高阶导数;以及
基于所述计算的高阶导数来预测所述纹理图的纹素的存储器地址。
7.如权利要求6所述的方法,其还包括:
确定所述第一像素和所述第二像素是否对应于三维模型的共同小平面;以及
确定所述至少一个附加像素是否对应于与所述第一像素和所述第二像素所对应的所述小平面不同的小平面,
其中所述预测所述存储器地址是基于所述至少一个附加像素对应于与所述第一像素和所述第二像素所对应的所述小平面不同的小平面的确定。
8.如权利要求3所述的方法,其还包括:
接收所述纹理图的第四纹素的第四存储器地址,所述第四纹素对应于所述图像中的第四像素;
通过将所述第一存储器地址与所述第四存储器地址之间的差除以所述图像的所述第一像素和所述第四像素的位置之间的距离来计算导数;以及
基于所述计算的导数估算所述纹理图的第五纹素的第五存储器地址,
其中所述第一纹素和所述第二纹素之间的方向与所述第一纹素和所述第四纹素之间的方向相对于彼此是正交的。
9.如权利要求8所述的方法,其还包括:
确定所述第一像素和所述第四像素是否对应于所述三维模型的共同小平面,
其中所述导数的所述计算是基于所述第一像素和所述第四像素对应于所述相同小平面的确定。
10.如权利要求9所述的方法,其还包括:
确定所述图像中的第五像素是否对应于所述第一像素和所述第四像素所对应的所述小平面,
其中所述第五存储器地址的所述估算是基于所述第五像素对应于所述第一像素和所述第四像素所对应的所述相同小平面的确定。
11.如权利要求3所述的方法,其还包括:
读取所述第三存储器地址;以及
将所述第三纹素应用于所述图像中的第三像素。
12.如权利要求3所述的方法,其中像素沿着轴线。
13.如权利要求3所述的方法,其中所述三维模型的小平面选自由下列项组成的组:直线、三角形、四边形、六边形元件、子图形和点子图形。
14.如权利要求3所述的方法,其还包括:
读取所述第三存储器地址;以及
将所述第三纹素应用于所述图像中的第三像素。
15.如权利要求3所述的方法,其中所述三维模型用于视频游戏或计算机辅助绘图(CAD)。
16.如权利要求3所述的方法,其中所述操作由图形处理单元(GPU)来执行。
17.如权利要求3所述的方法,其中所述操作按所示的次序执行。
18.如权利要求3所述的方法,其中每个操作由操作上与所述存储器耦合的所述至少一个处理器来执行。
19.一种体现指示指令的信息的机器可读有形存储介质,所述指令用于促使一个或多个机器执行如权利要求3所述的操作。
20.一种执行计算机程序中的指令的计算机系统,所述计算机程序指令包括用于执行如权利要求3所述的操作的程序代码。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161527061P | 2011-09-12 | 2011-09-12 | |
US61/527,061 | 2011-09-12 | ||
US13/554,976 US8830249B2 (en) | 2011-09-12 | 2012-07-20 | Accelerated texture lookups using texture coordinate derivatives |
US13/554,976 | 2012-07-20 | ||
PCT/US2012/054662 WO2013039913A1 (en) | 2011-09-12 | 2012-09-11 | Accelerated texture lookups using texture coordinate derivatives |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103782324A true CN103782324A (zh) | 2014-05-07 |
Family
ID=47883646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280044105.6A Pending CN103782324A (zh) | 2011-09-12 | 2012-09-11 | 使用纹理坐标导数的加速的纹理查找 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8830249B2 (zh) |
EP (1) | EP2756485B1 (zh) |
JP (1) | JP6104914B2 (zh) |
CN (1) | CN103782324A (zh) |
WO (1) | WO2013039913A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106355544A (zh) * | 2015-07-15 | 2017-01-25 | Arm有限公司 | 数据处理系统 |
CN115794666A (zh) * | 2023-01-31 | 2023-03-14 | 摩尔线程智能科技(北京)有限责任公司 | 纹素的内存地址确定方法、装置、设备及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9886734B2 (en) * | 2013-04-25 | 2018-02-06 | Intel Corporation | Techniques for graphics data prefetching |
EP3437072B1 (en) * | 2016-03-28 | 2020-10-14 | Sony Corporation | System and method for rendering points without gaps |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6433789B1 (en) * | 2000-02-18 | 2002-08-13 | Neomagic Corp. | Steaming prefetching texture cache for level of detail maps in a 3D-graphics engine |
US20090315908A1 (en) * | 2008-04-25 | 2009-12-24 | Miguel Comparan | Anisotropic Texture Filtering with Texture Data Prefetching |
CN101930461A (zh) * | 2010-08-20 | 2010-12-29 | 郑茂 | 通信网络的数字图像可视化管理和检索 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU634354B2 (en) * | 1990-08-31 | 1993-02-18 | Sun Microsystems, Inc. | Method and apparatus for predictive caching |
US5694568A (en) * | 1995-07-27 | 1997-12-02 | Board Of Trustees Of The University Of Illinois | Prefetch system applicable to complex memory access schemes |
US7151544B2 (en) | 2003-05-16 | 2006-12-19 | Sun Microsystems, Inc. | Method for improving texture cache access by removing redundant requests |
JP4451717B2 (ja) * | 2004-05-31 | 2010-04-14 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および情報処理方法 |
KR100703709B1 (ko) * | 2005-06-02 | 2007-04-06 | 삼성전자주식회사 | 그래픽스 처리장치와 처리방법, 및 그 기록 매체 |
WO2007049610A1 (ja) * | 2005-10-25 | 2007-05-03 | Mitsubishi Electric Corporation | 画像処理装置 |
US20080024510A1 (en) | 2006-07-27 | 2008-01-31 | Via Technologies, Inc. | Texture engine, graphics processing unit and video processing method thereof |
-
2012
- 2012-07-20 US US13/554,976 patent/US8830249B2/en active Active
- 2012-09-11 EP EP12831782.3A patent/EP2756485B1/en active Active
- 2012-09-11 WO PCT/US2012/054662 patent/WO2013039913A1/en active Application Filing
- 2012-09-11 CN CN201280044105.6A patent/CN103782324A/zh active Pending
- 2012-09-11 JP JP2014529971A patent/JP6104914B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6433789B1 (en) * | 2000-02-18 | 2002-08-13 | Neomagic Corp. | Steaming prefetching texture cache for level of detail maps in a 3D-graphics engine |
US20090315908A1 (en) * | 2008-04-25 | 2009-12-24 | Miguel Comparan | Anisotropic Texture Filtering with Texture Data Prefetching |
CN101930461A (zh) * | 2010-08-20 | 2010-12-29 | 郑茂 | 通信网络的数字图像可视化管理和检索 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106355544A (zh) * | 2015-07-15 | 2017-01-25 | Arm有限公司 | 数据处理系统 |
CN106355544B (zh) * | 2015-07-15 | 2021-08-17 | Arm有限公司 | 处理单元、在处理单元中进行处理操作的方法 |
CN115794666A (zh) * | 2023-01-31 | 2023-03-14 | 摩尔线程智能科技(北京)有限责任公司 | 纹素的内存地址确定方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP2756485A4 (en) | 2015-11-11 |
JP6104914B2 (ja) | 2017-03-29 |
WO2013039913A1 (en) | 2013-03-21 |
EP2756485B1 (en) | 2019-02-20 |
US8830249B2 (en) | 2014-09-09 |
JP2014529143A (ja) | 2014-10-30 |
EP2756485A1 (en) | 2014-07-23 |
US20130187920A1 (en) | 2013-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109840931B (zh) | 骨骼动画的合批渲染方法、装置、系统及存储介质 | |
US11270497B2 (en) | Object loading method and apparatus, storage medium, and electronic device | |
US20230053462A1 (en) | Image rendering method and apparatus, device, medium, and computer program product | |
Kähler et al. | Hierarchical voxel block hashing for efficient integration of depth images | |
CN110097625B (zh) | 片段着色器执行顶点着色器计算 | |
US7042462B2 (en) | Pixel cache, 3D graphics accelerator using the same, and method therefor | |
CN110136082A (zh) | 遮挡剔除方法、装置及计算机设备 | |
US20090046098A1 (en) | Primitive binning method for tile-based rendering | |
US9811940B2 (en) | Bandwidth reduction using vertex shader | |
KR20180056316A (ko) | 타일-기반 렌더링을 수행하는 방법 및 장치 | |
KR20150117662A (ko) | 깊이 맵의 컨텐츠를 강화하기 위한 방법 및 디바이스 | |
KR20150093689A (ko) | 쉘 메쉬에 기초한 최적화된 다각형을 형성하기 위한 방법 | |
CN103052969B (zh) | 抗失真图像生成装置及抗失真图像生成方法 | |
CN113034657B (zh) | 游戏场景中光照信息的渲染方法、装置及设备 | |
KR20160046614A (ko) | 텍스쳐를 처리하는 방법 및 장치 | |
US20110069065A1 (en) | Image processing apparatus, computer readable medium and method thereof | |
CN103782324A (zh) | 使用纹理坐标导数的加速的纹理查找 | |
US9836877B2 (en) | Hardware accelerated simulation of atmospheric scattering | |
JP5916764B2 (ja) | 仮想環境における隠蔽の推定方法 | |
KR20180037838A (ko) | 텍스쳐를 처리하는 방법 및 장치 | |
KR20160148618A (ko) | 그래픽 처리 시 다각형의 가속된 단일 면 절단 | |
KR20230010672A (ko) | 데이터 압축의 방법 및 장치 | |
Krecklau et al. | View‐Dependent Realtime Rendering of Procedural Facades with High Geometric Detail | |
US7525551B1 (en) | Anisotropic texture prefiltering | |
Crause et al. | A system for real-time deformable terrain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140507 |