CN103489213A - 用于执行纹理采样的方法、装置和系统 - Google Patents

用于执行纹理采样的方法、装置和系统 Download PDF

Info

Publication number
CN103489213A
CN103489213A CN201310360869.2A CN201310360869A CN103489213A CN 103489213 A CN103489213 A CN 103489213A CN 201310360869 A CN201310360869 A CN 201310360869A CN 103489213 A CN103489213 A CN 103489213A
Authority
CN
China
Prior art keywords
tinter
texture sampler
texture
sampling
sampler
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
Application number
CN201310360869.2A
Other languages
English (en)
Other versions
CN103489213B (zh
Inventor
U·萨雷
P·罗森菲尔德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN103489213A publication Critical patent/CN103489213A/zh
Application granted granted Critical
Publication of CN103489213B publication Critical patent/CN103489213B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

使用着色语言来实现纹理采样器。着色器编译器用于基于提供给纹理采样器的采样器状态、采样器操作以及其它静态要素输入值将纹理采样器编译为目标机器。当调用着色器时,诸如顶点着色器、几何着色器、像素着色器、外壳着色器、域着色器和计算着色器这样的着色器可以调用一个或多个纹理采样器。作为一段软件代码的一个或多个纹理采样器可以根据纹理数据生成纹理采样,并且将这种纹理采样提供给着色器。着色器使用纹理采样在图形元素上生成着色效果。然后,将图形元素连同着色效果渲染在显示设备上。

Description

用于执行纹理采样的方法、装置和系统
本申请是2010年6月29日提交的,申请号为201010220862.7的同名专利申请的分案申请。
技术领域
本发明涉及纹理采样。
背景技术
纹理一般指包括重复图案的图像,该重复图案可以用于包装(wrap)图形图案。可以使用基于Nyquist准则的纹理采样技术来对纹理数据进行采样。纹理采样技术正变得越来越复杂并且使用越来越广泛。纹理采样技术可以包括:点采样、双线性过滤、三线性过滤、各向异性过滤(anisotropicfiltering)、抗锯齿(anti-aliasing)和其它类似的技术。纹理采样正越来越多地被例如顶点着色器、几何着色器和像素着色器所使用。
此外,这种纹理采样技术的复杂性和使用不断的增加,同时用于执行纹理采样的硬件的复杂性也日益增加。存在至少一些应用程序,它们可能需要使用可以不需要或不用直接访问硬件设备的纹理采样技术。此外,现有的硬件设备可能不完全支持复杂的纹理采样操作,或者现有的硬件设备可能不能有效地执行复杂的纹理采样操作。
发明内容
根据本发明的一个方面,提供了一种用于执行纹理采样的方法,包括:使用着色语言来实现纹理采样器;通过基于提供给所述纹理采样器的输入值将所述纹理采样器编译为目标机器,从而生成纹理采样器二进制代码;当调用多个着色器中的第一着色器时,至少从所述第一着色器调用所述纹理采样器二进制代码;以及当由所述第一着色器调用所述纹理采样器时,使用由所述纹理采样器生成的第一组采样在图形元素上生成着色效果,其中,所述图形元素包括线和三角形的顶点。
根据本发明的另一个方面,提供了一种用于执行纹理采样的装置,包括:用于使用着色语言来实现纹理采样器的模块;用于通过基于采样器状态和采样器操作将所述纹理采样器编译为目标机器,从而生成纹理采样器二进制代码的模块;用于当调用第一着色器时,从所述第一着色器调用所述纹理采样器二进制代码的模块;以及用于当由所述第一着色器调用所述纹理采样器时,使用由所述纹理采样器生成的第一组采样在图形元素上生成着色效果的模块,其中,所述图形元素包括线和三角形的顶点。
根据本发明的又一个方面,提供了一种用于执行纹理采样的系统,包括:处理器,其中,所述处理器用于支持多个图形应用以及一个或多个图形应用可编程接口;图形处理单元;以及存储器,其耦合到所述处理器和所述图形处理单元,其中,所述图形应用可编程接口包括使用着色语言实现的一个或多个纹理采样器,其中,通过基于采样器状态和采样器操作将所述纹理采样器编译为目标机器,从而生成纹理采样器二进制代码,其中,当调用第一着色器时,从所述第一着色器调用所述纹理采样器二进制代码,以及其中,当由所述第一着色器调用所述纹理采样器时,使用由所述纹理采样器生成的第一组采样在图形元素上生成着色效果,其中,所述图形元素包括线和三角形的顶点。
附图说明
在附图中,通过示例而非通过限制的方式来说明本文描述的发明。为了说明的简单和清楚,附图中说明的部件并不必然按照比例绘出。例如,为了清楚起见,可以相对于其它部件而放大一些部件的尺寸。此外,在适当的情况下,在各个附图中重复使用附图标记以指示对应的或类似的部件。
图1说明了根据一个实施例的、使用纹理采样器的图形处理技术,所述纹理采样器是使用着色语言(shader language)实现的。
图2说明了根据一个实施例的、使用纹理采样器的图形处理技术的三维管线级,其中所述纹理采样器是使用着色语言实现的。
图3是说明了根据一个实施例的、使用着色语言实现的纹理采样器的流程图。
图4说明了根据一个实施例的、描述了使用着色语言的纹理采样过程的流程图。
图5说明了根据一个实施例的、在其中可以实现使用着色语言的纹理采样的计算机系统500。
具体实施方式
以下说明描述了使用纹理采样器来执行纹理采样的技术,所述纹理采样器是用着色语言来实现的。在以下说明中,阐述了许多具体的细节,例如逻辑实现、资源划分、或共享、或复制实现、系统部件的类型和相互关系、以及逻辑划分或集成选择,以便于更为透彻的理解本发明。但是,本领域的技术人员将意识到,可以在没有这些具体细节的情况下实现本发明。在其它实例中,没有详细地示出控制结构、门级电路和全部软件指令序列,以便不模糊本发明。本领域的技术人员根据所包括的说明,将能够在无需过多的实验的情况下实现适当的功能。
说明书中提及的“一个实施例”、“一实施例”、“一示例性实施例”指示了所描述的实施例可以包括特定特征、结构或特性,但每个实施例可以不必包括特定特征、结构或特性。此外,这种短语并非必然是指同一实施例。此外,当结合一实施例描述特定特征、结构或特性时,应当认为,不管是否明确地描述,本领域技术人员能够懂得结合其它实施例来改变这种特征、结构或特性。
可以用硬件、固件、软件和它们的任意组合来实现本发明的实施例。本发明的实施例还可以实现为在机器可读介质上存储的指令,其可以由一个或多个处理器来读取并执行。机器可读存储介质可以包括用于存储或发送机器(例如,计算设备)可读形式的信息的任意装置。
例如,机器可读存储介质可以包括:只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪存设备;电子、光学形式的信号。此外,在本文中,可以将固件、软件、例程和指令描述为执行某些动作。但是,应当理解,这种说明仅是为了方便,并且事实上,这些动作是由执行固件、软件、例程和指令的计算设备、处理器、控制器和其它设备产生的。
在图1中说明了在多个着色器和纹理采样器之间共享的多对多关系的实施例。在一个实施例中,关系图可以包括“M”个着色器110-A到110-M,并且“K”个纹理采样器120-A到120-K可以以各种采样器状态(例如,“p”采样器状态)支持各种采样操作(例如,“N”采样操作)。在一个实施例中,可以用一采样器状态来配置纹理采样器120,并且纹理采样器120可以接收将被基于该采样器状态而执行的采样操作。在一个实施例中,着色器110-A可以从纹理采样器120-A到120-K获得纹理采样。在其它实施例中,着色器110-A可以从例如纹理采样器120-B、120-D、120-G和120-J获得纹理采样。在一个实施例中,着色器110-A到110-M可以代表例如:顶点、几何图形、外壳、域、像素或计算着色器。在一个实施例中,着色器110-A可以包括可用于采样的多个采样状态(SS),并且着色器110-A例如可以使用特定采样器状态来执行多个采样操作。在一个实施例中,采样器状态可以具有用于采样操作的单独的逻辑。在编译时间,可以将采样器状态添加到采样器状态(SS)中,以得到针对特定采样器状态和采样操作的最优的代码。在一个实施例中,纹理采样器120-A到120-K可以代表纹理采样器操作,其可以实现支持采样操作和采样器状态的纹理采样器的子集。
在一个实施例中,每个着色器110可以获得由一个或多个纹理采样器120生成的纹理采样。在一个实施例中,可以使用着色语言(例如,汇编语言、Cg、GLSL、HLSL和其它着色语言)离线地实现纹理采样器120-A到120-K。在一个实施例中,可以在创建着色器110期间、或者在创建正交采样器状态对象期间、或者根据需要在创建阶段之后的一个时间点处,编译纹理采样器120。在一个实施例中,当着色器110需要纹理采样时,采样器二进制代码(SS-BIN)可以被创建并且可以由着色器110使用。
在一个实施例中,着色器110和纹理采样器120可以被用在例如3D图形可编程管线中。在一个实施例中,3D图形可编程管线可以包括Direct3D10(D3D10)、Direct3D11(D3D11),或者其它这种可从
Figure BDA0000368446260000041
公司获得的DirectX应用程序接口(API)的管线级,或可从硅图公司获得的跨平台API的OpenGL管线级。但是,也可以在其它环境中由任何着色器来使用纹理采样器120。
在图2中说明了三维(3D)图形可编程管线的实施例,其可以使用利用高级着色语言而实现的纹理着色器。在一个实施例中,3D图形可编程管线200可以包括多个级,例如:输入数据处理块210、多个着色器(例如顶点着色器220、外壳着色器230、域着色器250、几何着色器260、像素着色器270)、曲面细分单元235、光栅化块265、搅拌器(blender)275、纹理采样器280-A到280-K,以及存储器290。
在一个实施例中,可编程管线级例如可以为实时应用(例如,游戏)生成图形。在一个实施例中,管线级200可以表示可从
Figure BDA0000368446260000051
公司获得的DirectX应用程序接口(API)的D3D11版本。
在一个实施例中,输入数据处理块210可以使用分别存储在存储器290的缓冲区290-A和290-B中的索引数据和顶点数据来生成数据单元。在一个实施例中,顶点数据可以表示三角形的顶点、点、线和其它类似数据。在一个实施例中,输入数据处理块210可以向顶点着色器220提供数据单元。在一个实施例中,在向顶点着色器220和几何着色器260提供几何数据之前,输入数据处理块210可以使用缓冲区290-A和290-B中存储的顶点和索引数据来合成几何数据。
在一个实施例中,顶点着色器220可以使用由纹理采样器280-A到280-K生成的纹理采样来处理从输入处理块210接收的顶点。在一个实施例中,顶点着色器220可以使用由任意一个或一些或所有的纹理采样器280-A到280-K生成的纹理采样。在一个实施例中,顶点着色器220可以生成单个输出顶点,其可以在接收到单个输入顶点之后使用纹理采样来进行处理。在一个实施例中,顶点着色器220可以执行变换以便为输入顶点提供特殊效果,例如光照和贴皮(skinning)。在一个实施例中,顶点着色器220可以执行数学运算以改变输入顶点的颜色、纹理或位置。在一个实施例中,可以使用着色语言来实现顶点着色器220,所述着色语言例如是汇编语言、用于图形的C(Cg)语言、OpenGL着色语言(GLSL)、或高级着色语言(HLSL)、或任何其它的着色语言。
在一个实施例中,外壳着色器230可以接收面片(patch)控制点并且可以为固定功能曲面细分单元235准备面片控制点。在一个实施例中,外壳着色器230可以从纹理采样器280-A到280-K中一个或多个接收纹理采样。在一个实施例中,外壳着色器230可以从纹理采样器280-A到280-B接收纹理采样。在一个实施例中,可以使用着色语言来实现外壳着色器230。在一个实施例中,曲面细分单元235可以基于来自外壳着色器230的控制输入来细分(sub-divide)面片,并且可以将曲面细分的结果传递到域着色器250。在一个实施例中,域着色器250可以操纵生成的顶点以使顶点符合一形状,或者使用来自曲面细分单元235的输入和来自纹理采样器280-A到280-K中的一个或多个的纹理采样来执行位移贴图(displacementmapping)。在一个实施例中,域着色器250可以使用由纹理采样器280-B提供的纹理采样。在一个实施例中,域着色器250可以向几何着色器260或光栅化块265提供结果。在一个实施例中,可以使用高级着色语言来实现域着色器250。
在一个实施例中,响应于从顶点着色器220或域着色器250接收到整个图元(primitive)并且接收到由纹理采样器280-A到280-K中的一个或多个生成的纹理采样,几何着色器260可以生成着色的图元。在一个实施例中,几何着色器260可以接收由纹理采样器280-A到280-K生成的纹理采样。在一个实施例中,整个图元可以包括多个顶点。在一个实施例中,响应于接收到多个顶点和纹理采样作为输入,几何着色器260可以创建零个或多个着色的图元。
在一个实施例中,多个顶点可以包括三角形的三个顶点、或线段的两个顶点、或点的单个顶点以及邻接信息作为输入,并且可以生成零个或多个着色的顶点作为输出。在一个实施例中,几何着色器260可以执行操作,例如点带生成、几何曲面细分和阴影体挤出(shadow volume extrusion),以生成着色的图元。在一个实施例中,几何着色器260可以编译一个或多个纹理采样器280,然后调用纹理采样器280-A到280-K以从例如缓冲区290-D中存储的纹理数据值得到纹理采样。在一个实施例中,可以使用汇编语言、Cg语言、HLSL语言和GLSL语言来对几何着色器260进行编程。
在一个实施例中,光栅化块265可以从顶点着色器220和几何着色器260接收顶点(矢量图形信息),并且生成光栅化图像,其可以包括在显示设备上可以显示的像素和点。在一个实施例中,光栅化块265可以执行例如变换、剪取(clipping)、扫描转换、剔除(culling)、纹理过滤这样的光栅化技术和其它技术。在一个实施例中,光栅化块265可以向像素着色器270提供像素以便处理光栅化图像。
在一个实施例中,像素着色器270可以对光栅图像执行丰富的着色技术,以生成逐个像素输出。在一个实施例中,像素着色器270可以执行诸如逐个像素照亮以及相关效果这样的技术,以提供锐利的和更逼真的图像,所述相关效果例如:凸凹贴图、色彩调和、阴影、镜面高光(specularhighlights)和半透明。在一个实施例中,可以使用汇编语言、Cg语言、HLSL语言和GLSL语言或其它类似的语言来对像素着色器270进行编程。在一个实施例中,像素着色器270可以在生成着色效果之前,从光栅化块265接收像素数据并且从一个或多个纹理采样器280-A到280-K接收纹理采样。在一个实施例中,像素着色器270可以从纹理采样器280-B和280-K接收纹理采样。在一个实施例中,像素着色器270也可以直接从缓冲区290-F接收纹理数据值。在一个实施例中,可以将像素着色器270的输出提供给搅拌器275以供进一步处理。
在一个实施例中,纹理采样器280-A到280-K可以采样纹理缓冲区290-C、290-D和290-F和其它缓冲区中存储的纹理数据值。在一个实施例中,可以使用用于实现着色器220、230、250、260和270的着色语言来实现纹理采样器280-A到280-K。这种方法可以允许复杂的纹理采样功能被实现为一段软件代码,其可以与采样器状态相匹配。在一个实施例中,可以使用Cg语言、或GLSL语言或HLSL语言来实现纹理采样器280-A到280-K。在一个实施例中,可以在离线阶段期间使用高级着色语言来实现纹理采样器280-A到280-K。在一个实施例中,可以在准备阶段期间使用着色器编译器来编译纹理采样器280-A到280-K,以生成使用着色语言实现的采样器的二进制代码。在一个实施例中,当着色器220到270被调用时,可以由着色器220、230、250、260和270来调用一个或多个纹理采样器二进制文件。在一个实施例中,可以在创建着色器220、230、250、260和270期间、在创建正交采样器状态对象期间、或根据需要在创建阶段之后的稍后的时间点,对纹理采样器280-A到280-K中的一个或多个进行编译。
在一个实施例中,纹理采样器280-A到280-K可以执行例如以下操作:解析细节的层次(LOD)、确定采样、解析纹理元素(texel)地址、提取采样和拼接采样。在一个实施例中,可以使用着色语言来实现纹理采样器280-A到280-K的操作。在一个实施例中,解析细节的层次可以确定mipmap,其识别将从中选择采样的区域。在一个实施例中,解析纹理元素地址可以确定将从中提取采样的位置。在一个实施例中,纹理采样器280-A到280-K可以支持例如点采样、双线性采样、三线性采样和各向异性过滤这样的采样技术。在一个实施例中,与使用基于普通软件的纹理采样技术而实现的纹理采样器相比,使用着色语言实现以匹配着色器220到270的采样器状态的纹理采样器280-A到280-K可以提高纹理采样的运算的速度。
在一个实施例中,纹理采样器280-A到280-K可以用于将纹理采样提供给顶点着色器220、外壳着色器230、域着色器、几何着色器260和像素着色器270。在一个实施例中,可以在创建顶点着色器220期间或在创建采样器状态对象期间,编译使用着色语言实现的纹理采样器280-A到280-K。在一个实施例中,当调用顶点着色器220时,可以由顶点着色器220调用纹理采样器280-A、280-B和280-K。在一个实施例中,当调用外壳着色器230时,可以由外壳着色器230来调用纹理采样器280-A和280-B。在一个实施例中,当调用域着色器250时,可以由域着色器250来调用纹理采样器280-B。在一个实施例中,当调用几何着色器260时,可以由几何着色器260来调用纹理采样器280-B和280-K,并且当调用像素着色器270时,可以由像素着色器270来调用纹理采样器280-B和280-K。
这种方法可以允许将复杂的纹理采样功能实现为一段软件代码,其可以与着色器220、230、250、270的采样器状态相匹配,或者可以与正交采样器状态相匹配。在一个实施例中,与使用基于普通软件的纹理采样技术而实现的纹理采样器相比,使用着色语言实现以匹配着色器220、230、250、260和/或270的采样器状态的纹理采样器280可以将运算的速度提高N倍。在一个实施例中,与基于普通软件的纹理采样技术相比,使用着色语言实现的纹理采样器280可以将性能提高N=KX,其中,基于普通软件的纹理采样的性能是X,K是正整数值。
在图3中对描述了使用高级着色语言而实现的纹理采样器280的流程图300进行了说明。在框310,可以使用着色语言来生成纹理采样器280-A到280-K。在一个实施例中,可以使用例如汇编、Cg、HLSL或GLSL这样的着色语言来开发纹理采样器280-A到280-K。在一个实施例中,例如当开发驱动器模块时,可以离线地生成纹理采样器280-A到280-K。
在框320,可以在采样器状态对象创建时,编译用于生成纹理采样器280-A到280-K的着色器采样器。在其它实施例中,可以根据需要来创建着色器采样器。在一个实施例中,例如如果对于绘制命令需要采样操作,那么可以根据需要创建特定的采样操作。
在框330,可以使用高级着色器编译器将纹理采样器280-A到280-K编译为目标机器代码。在一个实施例中,可以使用目标机器编译器将纹理采样器280-A到280-K编译为目标机器代码。在一个实施例中,可以使用高级顶点着色器编译器将纹理采样器280-A、280-B和280-K编译为目标机器代码。类似地,可以使用着色器230到270的高级着色器编译器将纹理着色器280-A到280-K中的一个或多个编译为目标机器代码。
在框340,可以调用着色器220到270。在一个实施例中,可以调用例如顶点着色器220、外壳着色器230、域着色器250、几何着色器260和像素着色器270这样的着色器。
在框360,可以由着色器来调用一个或多个纹理采样器280-A到280-K。在一个实施例中,响应于从顶点着色器220进行的调用,纹理采样器280-A、280-B和280-K可以执行采样操作并且可以生成纹理采样。在一个实施例中,外壳着色器230可以调用纹理采样器280-A和280-B,域着色器250可以调用纹理采样器280-B,几何着色器260可以调用纹理采样器280-A和280-K,并且像素着色器270可以调用纹理采样器280-B和280-K。
在框380,纹理采样器280-A到280-K可以使用存储器190内的纹理缓冲区中存储的纹理数据来生成纹理采样。在一个实施例中,纹理采样器280-A可以执行采样操作,以使用例如在一个或多个纹理缓冲区290-C到290-F中存储的纹理数据来生成纹理采样。在一个实施例中,纹理采样器280-B可以执行采样操作以使用在纹理缓冲区290-D中存储的纹理数据来生成纹理采样,并且可以将纹理采样提供给像素着色器270。
在框390,可以由着色器220到270使用由纹理采样器280-A到280-K生成的纹理采样,以在图形元素上创建着色效果。在一个实施例中,顶点着色器220可以接收单个顶点值并且在顶点上创建着色效果。在一个实施例中,几何着色器260可以接收整个图元,并且可以在整个图元上创建阴影效果。在一个实施例中,像素着色器270可以在像素或点(或光栅图像)上生成阴影效果。
在图4中对描述了生成并且使用纹理采样器的流程图400的实施例进行说明,所述纹理采样器是使用高级着色语言实现的。在一个实施例中,流程图400描述了三个阶段——阶段401、阶段411和阶段481。在一个实施例中,阶段401可以表示离线阶段,阶段411可以表示准备阶段,并且阶段481可以表示渲染阶段。
在一个实施例中,阶段401可以包括纹理采样器生成块410。在一个实施例中,纹理采样器生成块410可以指例如纹理采样器280-A到280-K这样的纹理采样器的生成,纹理采样器可以离线地生成并且可以使用例如Cg、HLSL或GLSL这样的高级着色语言生成,如在框310中所描述的。
在一个实施例中,阶段411可以包括采样器状态块415、创建采样器块420、着色器编译器块445、编译采样器块450和采样器着色器二进制代码(SS-BIN)块470。在一个实施例中,采样器状态块415可以表示输入数据值。在一个实施例中,块415的输入数据值可以确定由块410的纹理采样执行的采样操作。块420描述了创建纹理采样器块,其响应于从块410接收到纹理采样器代码和从块415接收到输入数据值,创建纹理采样器,例如280-A到280-K。
块445描述了着色器编译器块,其可以获取在抽象层次的纹理采样器的着色语言,并且将纹理采样器代码编译为另一抽象层次。在一个实施例中,着色器编译器块445可以从创建纹理采样器块420获取纹理采样器代码,并且可以引起纹理采样器代码的编译,如在编译采样器着色器块450中所描述的。
在一个实施例中,在块420,可以使用高级着色语言来创建纹理采样器代码,并且编译采样器着色器块450可以编译纹理采样器代码并且生成中间代码,例如汇编语言代码。在一个实施例中,编译采样器着色器块450还可以包括机器专用着色器编译器,例如图形着色器编译器或中央处理单元(CPU)着色器编译器,其可以将汇编语言的中间代码编译为机器专用代码。在一个实施例中,图形处理单元或中央处理单元可以支持机器专用代码的执行。
块470描述了采样器着色器二进制代码块(SS-BIN),其可以通过由块450执行的编译而被创建。在一个实施例中,可以在渲染阶段由着色器来使用采样器着色器二进制代码(SS-BIN)。
在一个实施例中,阶段481可以表示渲染阶段,在该阶段,在着色器向图形元素提供着色效果之后,在显示设备上渲染图形元素,例如顶点或整个图元。在一个实施例中,阶段481可以包括着色器调用块485、执行着色器块490和调用SS-BIN块495。在一个实施例中,着色器调用块485可以调用着色器,例如顶点着色器220、外壳着色器230、域着色器250、几何着色器260和像素着色器270,如在框340中所描述的。
在一个实施例中,执行着色器块490可以使得着色器220到270的二进制代码被执行。在一个实施例中,图形处理单元可以支持着色器220到270的二进制代码的执行。在一个实施例中,调用SS-BIN块495可以调用一个或多个纹理采样器280-A到280-K的二进制文件。在一个实施例中,如果块490可以执行顶点着色器220,那么块495可以调用纹理采样器280-A、280-B和280-K的SS-BIN。在一个实施例中,如果块490可以执行外壳着色器230,那么块495可以调用纹理采样器280-A和280-B的SS-BIN。在一个实施例中,如果块490可以执行域着色器250,那么块495可以调用纹理采样器280-B的SS-BIN。在一个实施例中,如果块490可以执行几何着色器260,那么块495可以调用纹理采样器280-A和280-K的SS-BIN。在一个实施例中,如果块490执行像素着色器150,那么块495可以调用纹理采样器280-B和280-K的SS-BIN。
在一个实施例中,纹理采样器280-A到280-K响应于从着色器220到270接收到调用,可以执行对纹理数据的纹理采样操作,并且可以生成纹理采样。在一个实施例中,纹理采样可以被着色器用于在图形元素上创建阴影效果。
参照图5,计算机系统500可以包括通用处理器502和图形处理器单元(GPU)505,通用处理器502包括单指令多数据(SIMD)处理器。在一个实施例中,处理器502除了执行各种其它任务之外还可以执行增强操作,或者可以在机器可读存储介质525中存储指令的序列以提供增强操作。但是,指令的序列还可以被存储在存储器520中或存储在任何其它合适的存储介质中。在一个实施例中,可以由处理器502或GPU505来支持图形应用程序接口GPI510。
虽然在图5中描述了独立的图形处理器单元GPU505,但是在一些实施例中,作为另一个示例,处理器502可以用于执行增强操作。操作计算机系统500的处理器502可以是耦合到逻辑530的一个或多个处理器核心。逻辑530可以耦合到一个或多个I/O设备560,其可以提供计算机系统500的接口。在一个实施例中,逻辑530例如可以是芯片组逻辑。逻辑530耦合到存储器520,其可以是任何类型的存储设备,包括光存储、磁存储或半导体存储。图形处理器单元505通过帧缓冲器耦合到显示器540。
在一个实施例中,可以在处理器502内提供图形应用程序接口(GPI)510。但是,在其它实施例中,可以在GPU505内提供(由虚线示出)图形应用程序接口(GPI)510。在一个实施例中,GPI510可以支持3D管线并且可以使用高级着色语言来实现纹理采样器。在一个实施例中,GPI510可以离线地并且使用高级着色语言来实现纹理采样器280-A到280-K,并且可以基于目标机器来编译如此实现的纹理采样器280-A到280-K。在一个实施例中,可以由一个或多个着色器220到270来调用纹理采样器280-A到280-K,以得到纹理采样。在一个实施例中,着色器220到270可以使用由纹理采样器280-A到280-K生成的纹理采样,以在图形元素上创建阴影效果。
可以用各种硬件架构来实现本文描述的图形处理技术。例如,可以在芯片组内集成图形功能。或者,可以使用独立的图形处理器。作为另一个实施例,可以由通用处理器(包括多核处理器)来实现图形功能,或将图形功能实现为在机器可读介质中存储的一组软件指令。

Claims (18)

1.一种用于执行纹理采样的方法,包括:
使用着色语言来实现纹理采样器,
通过基于提供给所述纹理采样器的输入值将所述纹理采样器编译为目标机器,从而生成纹理采样器二进制代码,
当调用多个着色器中的第一着色器时,至少从所述第一着色器调用所述纹理采样器二进制代码,以及
当由所述第一着色器调用所述纹理采样器时,使用由所述纹理采样器生成的第一组采样在图形元素上生成着色效果,其中,所述图形元素包括线和三角形的顶点。
2.根据权利要求1所述的方法,还包括:
当调用所述多个着色器中的第二着色器时,至少从所述第二着色器调用所述纹理采样器二进制代码,以及
当由所述第二着色器调用所述纹理采样器时,使用由所述纹理采样器生成的第二组采样在图形元素上生成着色效果。
3.根据权利要求1所述的方法,其中,在准备阶段之前的离线阶段中,执行使用着色语言来实现所述纹理采样器。
4.根据权利要求3所述的方法,还包括:在准备阶段,基于离线实现的纹理采样器代码和采样器状态输入值来创建所述纹理采样器,其中,所述采样器状态输入值确定由所述纹理采样器执行的采样操作。
5.根据权利要求4所述的方法,其中,将所述纹理采样器编译为目标机器包括:
使用着色器编译器,从用所述着色语言实现的所述纹理采样器生成中间语言代码,以及
使用机器专用着色器编译器,从所述中间语言代码生成机器级代码。
6.根据权利要求5所述的方法,其中,所述着色语言是高级语言并且所述中间语言代码是汇编级语言。
7.根据权利要求1所述的方法,还包括:当在渲染阶段执行所述第一着色器时,从所述第一着色器调用所述纹理采样器二进制代码。
8.根据权利要求2所述的方法,还包括:当在渲染阶段执行所述第二着色器时,从所述第二着色器调用所述纹理采样器二进制代码。
9.根据权利要求2所述的方法,还包括:将第一纹理采样器关联到第一着色器和所述第二着色器,其中,所述第一纹理采样器用于为所述第一着色器和所述第二着色器生成采样。
10.一种用于执行纹理采样的装置,包括:
用于使用着色语言来实现纹理采样器的模块,
用于通过基于采样器状态和采样器操作将所述纹理采样器编译为目标机器,从而生成纹理采样器二进制代码的模块,
用于当调用第一着色器时,从所述第一着色器调用所述纹理采样器二进制代码的模块,以及
用于当由所述第一着色器调用所述纹理采样器时,使用由所述纹理采样器生成的第一组采样在图形元素上生成着色效果的模块,其中,所述图形元素包括线和三角形的顶点。
11.根据权利要求10所述的装置,还包括:
用于当调用第二着色器时,从所述第二着色器调用所述纹理采样器二进制代码的模块,以及
用于当由所述第二着色器调用所述纹理采样器时,使用由所述纹理采样器生成的第二组采样在图形元素上生成着色效果的模块。
12.根据权利要求11所述的装置,其中,在准备阶段之前的离线阶段中,执行使用着色语言来实现所述纹理采样器。
13.根据权利要求12所述的装置,还包括:用于在准备阶段,基于离线实现的纹理采样器代码和采样器状态输入值来创建所述纹理采样器的模块,其中,所述采样器状态输入值确定由所述纹理采样器执行的采样操作。
14.根据权利要求13所述的装置,其中,将所述纹理采样器编译为目标机器包括:
使用着色器编译器,从用所述着色语言实现的所述纹理采样器生成中间语言代码,以及
使用机器专用着色器编译器,从所述中间语言代码生成机器级代码。
15.根据权利要求14所述的装置,其中,所述着色语言是高级语言并且所述中间语言代码是汇编级语言。
16.根据权利要求10所述的装置,还包括:用于当在渲染阶段执行所述第一着色器时,从所述第一着色器调用所述纹理采样器二进制代码的模块。
17.根据权利要求11所述的装置,还包括:用于当在渲染阶段执行所述第二着色器时,从所述第二着色器调用所述纹理采样器二进制代码的模块。
18.根据权利要求11所述的装置,还包括:用于将第一纹理采样器和第二纹理采样器关联到第一着色器,并且将第二纹理采样器和第三纹理采样器关联到所述第二着色器的模块。
CN201310360869.2A 2009-06-29 2010-06-29 用于执行纹理采样的方法、装置和系统 Expired - Fee Related CN103489213B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/493,900 2009-06-29
US12/493,900 US8289341B2 (en) 2009-06-29 2009-06-29 Texture sampling
CN201010220862.7A CN101937556B (zh) 2009-06-29 2010-06-29 用于执行纹理采样的方法、装置和系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201010220862.7A Division CN101937556B (zh) 2009-06-29 2010-06-29 用于执行纹理采样的方法、装置和系统

Publications (2)

Publication Number Publication Date
CN103489213A true CN103489213A (zh) 2014-01-01
CN103489213B CN103489213B (zh) 2016-08-17

Family

ID=42334694

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201310360869.2A Expired - Fee Related CN103489213B (zh) 2009-06-29 2010-06-29 用于执行纹理采样的方法、装置和系统
CN201010220862.7A Expired - Fee Related CN101937556B (zh) 2009-06-29 2010-06-29 用于执行纹理采样的方法、装置和系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201010220862.7A Expired - Fee Related CN101937556B (zh) 2009-06-29 2010-06-29 用于执行纹理采样的方法、装置和系统

Country Status (6)

Country Link
US (1) US8289341B2 (zh)
CN (2) CN103489213B (zh)
DE (1) DE102010025310A1 (zh)
GB (1) GB2471926B (zh)
RU (1) RU2459260C2 (zh)
TW (1) TWI443599B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106251392A (zh) * 2015-06-04 2016-12-21 三星电子株式会社 用于执行交织的方法和设备
CN108010095A (zh) * 2017-11-14 2018-05-08 阿里巴巴集团控股有限公司 一种纹理合成的方法、装置及设备

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8289341B2 (en) * 2009-06-29 2012-10-16 Intel Corporation Texture sampling
US8633928B2 (en) * 2009-08-13 2014-01-21 Intel Corporation Reducing the bandwidth of sampler loads in shaders
US8917271B2 (en) * 2009-10-05 2014-12-23 Nvidia Corporation Redistribution of generated geometric primitives
WO2012147364A1 (en) * 2011-04-28 2012-11-01 Digital Media Professionals Inc. Heterogeneous graphics processor and configuration method thereof
US10559123B2 (en) 2012-04-04 2020-02-11 Qualcomm Incorporated Patched shading in graphics processing
US9235926B2 (en) * 2012-12-24 2016-01-12 Intel Corporation Techniques for improving MSAA rendering efficiency
US9569883B2 (en) 2013-12-12 2017-02-14 Intel Corporation Decoupled shading pipeline
US20170178278A1 (en) * 2014-07-10 2017-06-22 Intel Corporation Method and apparatus for updating a shader program based on current state
US10282867B2 (en) 2016-03-25 2019-05-07 Microsoft Technology Licensing, Llc Shading for variable opacity stroke rendering
US10559056B2 (en) * 2017-06-12 2020-02-11 Arm Limited Graphics processing
CN108648252A (zh) * 2018-05-17 2018-10-12 成都明镜视觉科技有限公司 一种骨骼动画兼容处理方法
US11037356B2 (en) 2018-09-24 2021-06-15 Zignal Labs, Inc. System and method for executing non-graphical algorithms on a GPU (graphics processing unit)
CN109785417B (zh) * 2018-11-29 2023-06-09 武汉凌久微电子有限公司 一种实现OpenGL累积操作的方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060098019A1 (en) * 2004-11-05 2006-05-11 Microsoft Corporation Automated construction of shader programs
US20070091088A1 (en) * 2005-10-14 2007-04-26 Via Technologies, Inc. System and method for managing the computation of graphics shading operations
CN101004833A (zh) * 2006-07-27 2007-07-25 威盛电子股份有限公司 用于纹理视讯处理的纹理引擎、图形处理器及方法
CN101017566A (zh) * 2006-10-24 2007-08-15 图诚科技股份有限公司 用于几何图形处理的系统与方法
WO2009045930A2 (en) * 2007-09-28 2009-04-09 Qualcomm Incorporated Shader compiler system and method
CN101937556B (zh) * 2009-06-29 2013-09-18 英特尔公司 用于执行纹理采样的方法、装置和系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6130674A (en) * 1997-03-31 2000-10-10 Cirrus Logic, Inc. Dynamically selectable texture filter for computer graphics
US7564460B2 (en) * 2001-07-16 2009-07-21 Microsoft Corporation Systems and methods for providing intermediate targets in a graphics system
US7324116B2 (en) * 2002-06-20 2008-01-29 Microsoft Corporation Systems and methods for providing controllable texture sampling
US7800620B2 (en) * 2004-11-05 2010-09-21 Microsoft Corporation Optimizing automated shader program construction
US7782334B1 (en) * 2005-09-13 2010-08-24 Nvidia Corporation Pixel shader-based data array resizing
CN1928918B (zh) 2005-10-14 2012-10-10 威盛电子股份有限公司 图形处理装置及于图形处理装置中执行着色操作的方法
US7859548B1 (en) * 2006-10-19 2010-12-28 Nvidia Corporation Offloading cube map calculations to a shader
US7623136B1 (en) 2006-12-05 2009-11-24 Nvidia Corporation Method and system for processing texture samples with programmable filter weights
US8355021B2 (en) 2007-05-17 2013-01-15 Siemens Aktiengesellschaft Fused volume rendering
US8174534B2 (en) * 2007-12-06 2012-05-08 Via Technologies, Inc. Shader processing systems and methods

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060098019A1 (en) * 2004-11-05 2006-05-11 Microsoft Corporation Automated construction of shader programs
US20070091088A1 (en) * 2005-10-14 2007-04-26 Via Technologies, Inc. System and method for managing the computation of graphics shading operations
CN101004833A (zh) * 2006-07-27 2007-07-25 威盛电子股份有限公司 用于纹理视讯处理的纹理引擎、图形处理器及方法
CN101017566A (zh) * 2006-10-24 2007-08-15 图诚科技股份有限公司 用于几何图形处理的系统与方法
WO2009045930A2 (en) * 2007-09-28 2009-04-09 Qualcomm Incorporated Shader compiler system and method
CN101937556B (zh) * 2009-06-29 2013-09-18 英特尔公司 用于执行纹理采样的方法、装置和系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106251392A (zh) * 2015-06-04 2016-12-21 三星电子株式会社 用于执行交织的方法和设备
CN106251392B (zh) * 2015-06-04 2021-12-03 三星电子株式会社 用于执行交织的方法和设备
CN108010095A (zh) * 2017-11-14 2018-05-08 阿里巴巴集团控股有限公司 一种纹理合成的方法、装置及设备

Also Published As

Publication number Publication date
GB2471926B (en) 2011-12-28
TW201126450A (en) 2011-08-01
GB201007971D0 (en) 2010-06-30
RU2459260C2 (ru) 2012-08-20
US8289341B2 (en) 2012-10-16
DE102010025310A1 (de) 2011-02-03
CN101937556A (zh) 2011-01-05
US20100328309A1 (en) 2010-12-30
TWI443599B (zh) 2014-07-01
CN103489213B (zh) 2016-08-17
GB2471926A (en) 2011-01-19
RU2010126453A (ru) 2012-01-10
CN101937556B (zh) 2013-09-18

Similar Documents

Publication Publication Date Title
CN101937556B (zh) 用于执行纹理采样的方法、装置和系统
CN106997610B (zh) 一种图像渲染方法、装置及电子设备
Kessenich et al. OpenGL Programming Guide: The official guide to learning OpenGL, version 4.5 with SPIR-V
US10430169B2 (en) Language, function library, and compiler for graphical and non-graphical computation on a graphical processor unit
US9177351B2 (en) Multi-primitive graphics rendering pipeline
EP3183714B1 (en) Shader program execution techniques for use in graphics processing
US6828980B1 (en) System, method and computer program product for z-texture mapping
GB2472897A (en) Post-clip storage in a graphics pipeline
CN110738722A (zh) 一种热力图纹理的生成方法、装置及设备
CN109584140A (zh) 图形处理
KR20210095914A (ko) 가변 레이트 셰이딩과 슈퍼 샘플 셰이딩의 통합
US20130120381A1 (en) Fast rendering of knockout groups using a depth buffer of a graphics processing unit
US10192348B2 (en) Method and apparatus for processing texture
De Vries Learn opengl
McKesson Learning modern 3D graphics programming
Peeper et al. Introduction to the DirectX® 9 high level shading language
Watt et al. Advanced game development with programmable graphics hardware
US20230082839A1 (en) Rendering scalable raster content
US10062140B2 (en) Graphics processing systems
Mukundan The Geometry Shader
Boyd The direct3d 10 pipeline
CN116863052A (zh) 基于分布式操作系统绘制地图的方法及装置
Peddie The Major GPU Eras
Haaser et al. Semantic composition of language-integrated shaders
Haaser et al. Cosmo: Intent-based composition of shader modules

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160817

Termination date: 20210629