System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 编译器和分析着色器程序的方法技术_技高网

编译器和分析着色器程序的方法技术

技术编号:40740481 阅读:2 留言:0更新日期:2024-03-25 20:00
本发明专利技术涉及编译器和分析着色器程序的方法。一种编译器,编译器被配置成分析着色器程序,着色器程序用于在图形处理系统中执行,图形处理系统包括:(i)隐藏表面移除逻辑,隐藏表面移除逻辑被配置成对片段执行隐藏表面移除;以及(ii)处理逻辑,处理逻辑被配置成针对片段执行着色器程序,其中,片段中的一个或多个片段具有着色器依赖性特性,编译器被配置成:识别着色器程序中能影响片段的着色器依赖性特性的指令;通过在着色器程序中的所识别的指令之后的点处拆分着色器程序来将着色器程序拆分成阶段;并且将着色器程序的阶段存储在存储器中,其中,图形处理系统能从存储器读取着色器程序的阶段。

【技术实现步骤摘要】

本公开涉及图形处理。具体而言,本公开涉及用于渲染具有着色器依赖性特性的一个或多个片段的方法和图形处理系统。


技术介绍

1、图形处理系统用于处理图形数据,以便渲染场景的图像。可以使用几何形状项目描述待渲染场景内的物体的表面,所述几何形状项目可以是例如图元或补片。图元往往是简单的几何形状,例如三角形、线或点,并且可以由与图元的顶点相关联的数据(例如,位置和属性数据)定义。相比之下,补片往往被用于表示更复杂(例如,非平面)的表面,并且可以通过执行镶嵌来确定大致表示补片并且接着可以在图形处理系统中处理的镶嵌图元来处理。

2、图1示出了可用于处理图形数据以渲染场景的图像的图形处理系统100。图形处理系统100包括图形处理单元(gpu)102,其包括几何形状处理逻辑104和渲染逻辑106。图形处理系统100还包括存储器108和编译器110。应注意,尽管存储器108在图1中被示为单块存储器,但这仅用于说明性目的,存储器108可由多块存储器构成。几何形状处理逻辑104包括预处理逻辑112和平铺逻辑114。渲染逻辑106包括提取单元116、光栅化逻辑118、隐藏表面移除逻辑120、深度缓冲器122、标签缓冲器124和处理逻辑126。渲染逻辑106还可以包括后处理逻辑128,其可被称为“像素后端”或“pbe”。一般来说,本文所述的逻辑块和单元可以在硬件(例如,固定功能电路)、软件(例如,作为在处理器上运行的软件代码)或两者的组合中实施。然而,图1中所示的处理逻辑126被配置成执行计算机软件程序(例如,“着色器程序”)。例如,处理逻辑126可以是单指令多数据(simd)处理单元,所述单指令多数据处理单元被配置成对多个数据项并行执行单个指令。执行simd处理的方法是本领域已知的。

3、图1所示的图形处理系统100是基于平铺块的渲染系统,但这仅是作为示例描述的,并且要指出的是,其他图形处理系统并非基于平铺块的。在基于平铺块的图形处理系统100中,渲染图像的2d渲染空间被细分成多个平铺块。在操作中,存在两个阶段:(i)几何形状处理阶段,其中,几何形状处理逻辑104执行几何形状处理以处理例如补片等图元或其它几何形状项目,以及(ii)渲染阶段,其中,渲染逻辑106对片段执行片段处理以确定渲染值,例如表示图像的渲染像素值。

4、例如,在几何形状处理阶段中,预处理逻辑112将图元(例如,图元的顶点)变换到渲染空间中。预处理逻辑112还执行过程,例如,对从渲染场景的角度来说在表示场景的可观察区域的视锥外的图元进行裁剪和剔除。平铺逻辑114接着确定哪些图元与渲染该渲染空间的哪些平铺块相关。平铺逻辑114可以生成平铺块控制列表,其针对每个平铺块指示哪些图元与渲染所述平铺块相关(即,哪些图元存在于所述平铺块内)。经变换的图元数据(在渲染空间中描述经变换的图元)和平铺块控制列表存储在存储器108中。

5、然后,在渲染阶段,提取单元116从存储器108提取针对平铺块的平铺块控制列表,并从存储器108提取针对所述平铺块的平铺块控制列表中指示的经变换的图元数据。经变换的图元数据(例如,用于经变换的图元的顶点数据)被传递到光栅化逻辑118,所述光栅化逻辑对经变换的图元数据执行光栅化(其可以被称为“扫描转换”或“采样”),以确定目前正在渲染逻辑106中处理的平铺块之内的采样位置处的图元片段。就术语而言,“片段”是采样位置处的图元的元素。采样位置可以对应于正被渲染的图像的像素的像素位置,但在一些示例中,每个像素位置可以对应于多个采样位置,其中每个像素值可以通过组合多个处理的片段值来确定。这在一些情况下是有用的,例如,用于执行抗混叠,但它确实增加了在渲染逻辑106中执行的处理量。

6、图1中所示的gpu 102被配置成执行延迟渲染。其它gpu可以被配置成执行非延迟渲染。在延迟渲染技术中,在对片段进行纹理化和/或着色之前对片段执行隐藏表面移除。可以通过执行着色器程序以确定着色片段来相对于片段进行着色。此着色片段可以表示着色片段的采样位置的渲染值。着色器程序通常写在软件中,因此用户可以定义他们希望如何对片段着色。通常,着色器程序可以涉及将纹理施加到片段。此纹理化过程涉及对纹理进行采样,例如,从存储器108提取纹理数据,并在特定位置对纹理进行采样(这通常涉及对定义纹理的纹素值执行内插)。从存储器提取纹理数据通常需要许多处理周期,并且对纹理进行采样可以涉及复杂的计算,因此纹理化是一个昂贵的过程(在延时和功耗方面)。此外,着色器程序通常也涉及其它复杂指令。在非延迟渲染系统中,通常针对所有光栅化片段执行着色器程序,然后应用隐藏表面移除以确定在每个采样位置处那些着色片段中的哪一个可见。通常,在渲染的场景中可以存在来自不同对象的很多层重叠片段,因此片段中的很多(例如,远远超过一半)可能被遮挡。因此,在非延迟渲染系统中执行的很多处理涉及对片段着色,这对于最终渲染值没有影响,因为它们被遮挡。

7、延迟渲染系统旨在通过在着色和/或纹理化之前执行隐藏表面移除来(与非延迟渲染系统相比)减少执行的处理量。因此,如图1所示,从光栅化逻辑118输出的片段被隐藏表面移除(hsr)逻辑120处理,由此去除被遮挡的片段。hsr逻辑120对片段执行的隐藏表面移除包括针对存储在深度缓冲器122中的对应深度值对片段执行深度测试。深度缓冲器储存被处理的平铺块中每个采样位置的深度值。标签缓冲器124储存被处理的平铺块中每个采样位置的图元id。如果片段通过深度测试,则使用片段的深度值来更新深度缓冲器122中对应采样位置的深度值,并且片段相关的图元的图元id存储在标签缓冲器124中的对应采样位置。深度值和图元id可以盖写采样位置处先前存储的任何值。因此,深度缓冲器122跟踪平铺块中的每个采样位置处的当前可见深度值,并且标签缓冲器124跟踪存在于平铺块中的每个采样位置处的图元的id。如果所有片段都是不透明的,则平铺块中的所有片段都可由hsr逻辑120处理,使得标签缓冲器124接着针对每个采样位置存储具有在该采样位置可见的片段的图元的图元id。然后,标签缓冲器124可以被“冲洗”,即,标签缓冲器124中的图元id可以被发送到处理逻辑126,在处理逻辑中,可以为相应采样位置处的可见片段(例如,以simd方式)执行着色器程序。在处理逻辑126处针对片段执行着色器程序产生着色片段。如果对于着色片段的采样位置不进行进一步处理,则着色片段表示采样位置的渲染值。渲染值可以从处理逻辑126写入存储器108(例如,写入存储器108中的帧缓冲器)。后处理逻辑128可以在将渲染值输出到存储器108之前对从处理逻辑126输出的着色片段执行一些后处理,例如旋转或混合。如果所有片段都是不透明的,则标签缓冲器124仅必须每个平铺块冲洗一次,并且在这种情况下,深度缓冲器122被重置以为下一个平铺块做好准备。

8、此延迟渲染系统对于不透明片段(即,不透明物体的片段,或换句话说,与不透明物体类型相关联的片段)非常有效,因为仅需要对未被遮挡的片段执行着色。然而,并非所有物体都是不透明的。一些物体可以是半透明的,并且一些物体本文档来自技高网...

【技术保护点】

1.一种编译器,所述编译器被配置成分析着色器程序,所述着色器程序用于在图形处理系统中执行,所述图形处理系统包括:(i)隐藏表面移除逻辑,所述隐藏表面移除逻辑被配置成对片段执行隐藏表面移除;以及(ii)处理逻辑,所述处理逻辑被配置成针对片段执行着色器程序,其中,所述片段中的一个或多个片段具有着色器依赖性特性,所述编译器被配置成:

2.根据权利要求1所述的编译器,其中,所述编译器被配置成将所述着色器程序拆分成两个阶段,并且其中,所识别的指令是所述着色器程序中能影响片段的所述着色器依赖性特性的最终指令。

3.根据权利要求1或2所述的编译器,其中,拆分所述着色器程序的所述点是紧接在所述着色器程序中所识别的指令之后的点。

4.根据权利要求1所述的编译器,其中,所述图形处理系统能从所述存储器分别读取所述着色器程序的所述阶段。

5.根据权利要求1所述的编译器,其中,所述着色器依赖性特性是着色器依赖性存在,并且其中,能影响所述着色器依赖性存在的所述指令是丢弃指令。

6.根据权利要求1所述的编译器,其中,所述着色器依赖性特性是着色器依赖性深度,并且其中,能影响所述着色器依赖性深度的所述指令是用于修改片段的深度的指令。

7.根据权利要求1所述的编译器,其中,所述编译器被配置成,在开始涉及在所述图形处理系统上执行所述着色器程序的渲染之前,识别所述指令,拆分所述着色器程序,并且将所述着色器程序的所述阶段存储于所述存储器中。

8.根据权利要求1所述的编译器,所述编译器还被配置成确定来自所述着色器程序的第一阶段的任何数据是否在所述着色器程序的第二阶段中使用。

9.根据权利要求8所述的编译器,其中,如果来自所述着色器程序的所述第一阶段的数据在所述着色器程序的所述第二阶段中使用,则在由所述图形处理系统执行所述着色器程序期间:

10.根据权利要求8所述的编译器,其中,如果来自所述着色器程序的所述第一阶段的数据在所述着色器程序的所述第二阶段中使用,则在由所述图形处理系统执行所述着色器程序期间:

11.一种分析着色器程序的方法,所述着色器程序用于在图形处理系统中执行,所述图形处理系统包括:(i)隐藏表面移除逻辑,所述隐藏表面移除逻辑被配置成对片段执行隐藏表面移除;以及(ii)处理逻辑,所述处理逻辑被配置成针对片段执行着色器程序,其中,所述片段中的一个或多个片段具有着色器依赖性特性,所述方法包括:

12.根据权利要求11所述的方法,其中,将所述着色器程序拆分成两个阶段,并且其中,所识别的指令是所述着色器程序中的能影响片段的所述着色器依赖性特性的最终指令。

13.根据权利要求11或12所述的方法,其中,拆分所述着色器程序的所述点是紧接在所述着色器程序中所识别的指令之后的点。

14.根据权利要求11或12所述的方法,其中,所述图形处理系统能从所述存储器分别读取所述着色器程序的所述阶段。

15.根据权利要求11或12所述的方法,其中,所述着色器依赖性特性是着色器依赖性存在,并且其中,能影响所述着色器依赖性存在的所述指令是丢弃指令。

16.根据权利要求11或12所述的方法,其中,所述着色器依赖性特性是着色器依赖性深度,并且其中,能影响所述着色器依赖性深度的所述指令是用于修改片段的深度的指令。

17.根据权利要求11或12所述的方法,其中,所述方法是在开始涉及在所述图形处理系统上执行所述着色器程序的渲染之前执行的。

18.根据权利要求11所述的方法,所述方法还包括:确定来自所述着色器程序的第一阶段的任何数据是否在所述着色器程序的第二阶段中使用。

19.根据权利要求18所述的方法,其中,如果来自所述着色器程序的所述第一阶段的数据在所述着色器程序的所述第二阶段中使用,则在由所述图形处理系统执行所述着色器程序期间:

20.根据权利要求18所述的方法,其中,如果来自所述着色器程序的所述第一阶段的数据在所述着色器程序的所述第二阶段中使用,则在由所述图形处理系统执行所述着色器程序期间:

...

【技术特征摘要】

1.一种编译器,所述编译器被配置成分析着色器程序,所述着色器程序用于在图形处理系统中执行,所述图形处理系统包括:(i)隐藏表面移除逻辑,所述隐藏表面移除逻辑被配置成对片段执行隐藏表面移除;以及(ii)处理逻辑,所述处理逻辑被配置成针对片段执行着色器程序,其中,所述片段中的一个或多个片段具有着色器依赖性特性,所述编译器被配置成:

2.根据权利要求1所述的编译器,其中,所述编译器被配置成将所述着色器程序拆分成两个阶段,并且其中,所识别的指令是所述着色器程序中能影响片段的所述着色器依赖性特性的最终指令。

3.根据权利要求1或2所述的编译器,其中,拆分所述着色器程序的所述点是紧接在所述着色器程序中所识别的指令之后的点。

4.根据权利要求1所述的编译器,其中,所述图形处理系统能从所述存储器分别读取所述着色器程序的所述阶段。

5.根据权利要求1所述的编译器,其中,所述着色器依赖性特性是着色器依赖性存在,并且其中,能影响所述着色器依赖性存在的所述指令是丢弃指令。

6.根据权利要求1所述的编译器,其中,所述着色器依赖性特性是着色器依赖性深度,并且其中,能影响所述着色器依赖性深度的所述指令是用于修改片段的深度的指令。

7.根据权利要求1所述的编译器,其中,所述编译器被配置成,在开始涉及在所述图形处理系统上执行所述着色器程序的渲染之前,识别所述指令,拆分所述着色器程序,并且将所述着色器程序的所述阶段存储于所述存储器中。

8.根据权利要求1所述的编译器,所述编译器还被配置成确定来自所述着色器程序的第一阶段的任何数据是否在所述着色器程序的第二阶段中使用。

9.根据权利要求8所述的编译器,其中,如果来自所述着色器程序的所述第一阶段的数据在所述着色器程序的所述第二阶段中使用,则在由所述图形处理系统执行所述着色器程序期间:

10.根据权利要求8所述的编译器,其中,如果来自所述着色器程序的所述第一阶段的数据在所述着色器程序的所述第二阶段中使用,则在由所...

【专利技术属性】
技术研发人员:X·杨C·普兰特
申请(专利权)人:想象技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1