渲染方法、装置及存储介质与流程

文档序号:37339084发布日期:2024-03-18 18:07阅读:13来源:国知局
渲染方法、装置及存储介质与流程

本公开涉及渲染,尤其涉及一种渲染方法、装置及存储介质。


背景技术:

1、渲染管线中的混合(英文:blend)功能是用于控制不同像素之间的像素混合方式的一项重要技术。它允许在将像素写入帧缓冲之前对它们进行合成,从而实现透明效果、像素混合和其他视觉效果。

2、混合通常在片元着色器之后的输出阶段进行。当片元着色器计算出最终像素后,混合功能可以应用于当前帧缓冲中已有的像素(目标像素)和新计算的片元像素(源像素)之间的混合操作。具体的混合操作由一组混合因子(英文:blend factors)和混合操作符(英文:blend operators)来定义,它们决定了如何将源像素与目标像素进行组合。

3、相关技术中,当应用主动启动了混合功能后,那么每次渲染都会进行混合。其实有些情况下,是不需要进行混合的,如何进行渲染的性能优化,相关技术中尚未提供一种合理且有效的方法。


技术实现思路

1、有鉴于此,本公开提出了一种渲染方法、装置及存储介质,可以在混合功能开启的情况下,识别渲染区域的目标像素在渲染时是否会被源像素完全覆盖,从而进行优化处理,剔除不必要的混合操作,进行性能提升。所述技术方案包括:

2、根据本公开的一方面,提供了一种渲染方法,所述方法包括:

3、在混合功能开启的情况下,获取待渲染区域的渲染指令,所述混合功能用于指示将所述待渲染区域的不同像素进行混合,所述渲染指令用于指示对所述待渲染区域进行渲染;

4、基于所述渲染指令获取所述待渲染区域的源像素和目标像素,所述源像素为片元着色器输出的像素,所述目标像素为帧缓冲区(英文:frame buffer)中已有的像素;

5、当识别出所述待渲染区域的所述目标像素在渲染时会被完全覆盖时,采用所述源像素对所述待渲染区域进行渲染。

6、在一种可能的实现方式中,所述方法还包括:

7、当识别出所述待渲染区域的所述目标像素在渲染时不会被完全覆盖时,将所述源像素和所述目标像素进行混合得到混合像素;

8、采用所述混合像素对所述待渲染区域进行渲染。

9、在另一种可能的实现方式中,所述当识别出所述待渲染区域的所述目标像素在渲染时会被完全覆盖时,采用所述源像素对所述待渲染区域进行渲染,包括:

10、当所述源像素为完全不透明的像素时,采用所述源像素对所述待渲染区域进行渲染。

11、在另一种可能的实现方式中,所述当所述源像素为完全不透明的像素时,采用所述源像素对所述待渲染区域进行渲染,包括:

12、当所述源像素的颜色因子(英文:source color factor)和所述源像素的alpha因子均为第一预设值,且所述目标像素的颜色因子(英文:destination color factor)和所述目标像素的alpha因子均为第二预设值时,采用所述源像素对所述待渲染区域进行渲染;

13、其中,所述源像素的颜色因子为所述源像素的颜色通道在混合时的权重,所述源像素的alpha因子为源像素的alpha通道在混合时的权重,所述目标像素的颜色因子为所述目标像素的颜色通道在混合时的权重,所述目标像素的alpha因子为所述目标像素的alpha通道在混合时的权重,所述第一预设值不同于所述第二预设值。

14、在另一种可能的实现方式中,所述第一预设值为1,所述第二预设值为0。

15、在另一种可能的实现方式中,所述源像素为完全不透明的像素的识别条件包括:所述源像素的颜色因子和所述源像素的alpha因子均为第一预设值,且所述目标像素的颜色因子和所述目标像素的alpha因子均为所述第一预设值与所述源像素的alpha通道值之间的差值,且所述片元着色器输出的所述源像素的alpha通道值为所述第一预设值;

16、其中,所述源像素的颜色因子为所述源像素的颜色通道在混合时的权重,所述源像素的alpha因子为源像素的alpha通道在混合时的权重,所述目标像素的颜色因子为所述目标像素的颜色通道在混合时的权重,所述目标像素的alpha因子为所述目标像素的alpha通道在混合时的权重。

17、在另一种可能的实现方式中,所述混合功能对应的混合操作符包括加法(英文:addition)或减法(英文:subtraction),所述加法用于指示将所述源像素与所述目标像素相加,所述减法用于指示将所述源像素减去所述目标像素。

18、在另一种可能的实现方式中,所述方法还包括:

19、在片段着色之前,获取目标片段的深度值,所述目标片段为所述待渲染区域的任意一个片段;

20、将所述目标片段的深度值与深度缓冲区中相应位置的深度值进行比较;

21、当比较结果指示所述目标片段在屏幕上被遮挡时,丢弃所述目标片段。

22、根据本公开的另一方面,提供了一种渲染装置,所述装置包括:

23、第一获取模块,用于在混合功能开启的情况下,获取待渲染区域的渲染指令,所述混合功能用于指示将所述待渲染区域的不同像素进行混合,所述渲染指令用于指示对所述待渲染区域进行渲染;

24、第二获取模块,用于基于所述渲染指令获取所述待渲染区域的源像素和目标像素,所述源像素为片元着色器输出的像素,所述目标像素为帧缓冲区中已有的像素;

25、渲染模块,用于当识别出所述待渲染区域的所述目标像素在渲染时会被完全覆盖时,采用所述源像素对所述待渲染区域进行渲染。

26、在一种可能的实现方式中,所述装置还包括:

27、混合模块,用于当识别出所述待渲染区域的所述目标像素在渲染时不会被完全覆盖时,将所述源像素和所述目标像素进行混合得到混合像素;

28、所述渲染模块,还用于采用所述混合像素对所述待渲染区域进行渲染。

29、在另一种可能的实现方式中,所述渲染模块,还用于:

30、当所述源像素为完全不透明的像素时,采用所述源像素对所述待渲染区域进行渲染。

31、在另一种可能的实现方式中,所述渲染模块,还用于:

32、当所述源像素的颜色因子和所述源像素的alpha因子均为第一预设值,且所述目标像素的颜色因子和所述目标像素的alpha因子均为第二预设值时,采用所述源像素对所述待渲染区域进行渲染;

33、其中,所述源像素的颜色因子为所述源像素的颜色通道在混合时的权重,所述源像素的alpha因子为源像素的alpha通道在混合时的权重,所述目标像素的颜色因子为所述目标像素的颜色通道在混合时的权重,所述目标像素的alpha因子为所述目标像素的alpha通道在混合时的权重,所述第一预设值不同于所述第二预设值。

34、在另一种可能的实现方式中,所述第一预设值为1,所述第二预设值为0。

35、在另一种可能的实现方式中,所述源像素为完全不透明的像素的识别条件包括:所述源像素的颜色因子和所述源像素的alpha因子均为第一预设值,且所述目标像素的颜色因子和所述目标像素的alpha因子均为所述第一预设值与所述源像素的alpha通道值之间的差值,且所述片元着色器输出的所述源像素的alpha通道值为所述第一预设值;

36、其中,所述源像素的颜色因子为所述源像素的颜色通道在混合时的权重,所述源像素的alpha因子为源像素的alpha通道在混合时的权重,所述目标像素的颜色因子为所述目标像素的颜色通道在混合时的权重,所述目标像素的alpha因子为所述目标像素的alpha通道在混合时的权重。

37、在另一种可能的实现方式中,所述混合功能对应的混合操作符包括加法或减法,所述加法用于指示将所述源像素与所述目标像素相加,所述减法用于指示将所述源像素减去所述目标像素。

38、在另一种可能的实现方式中,所述装置还包括:测试模块;所述测试模块,用于:

39、在片段着色之前,获取目标片段的深度值,所述目标片段为所述待渲染区域的任意一个片段;

40、将所述目标片段的深度值与深度缓冲区中相应位置的深度值进行比较;

41、当比较结果指示所述目标片段在屏幕上被遮挡时,丢弃所述目标片段。

42、根据本公开的另一方面,提供了一种计算设备,所述计算设备包括:处理器;用于存储处理器可执行指令的存储器;

43、其中,所述处理器被配置为:

44、在混合功能开启的情况下,获取待渲染区域的渲染指令,所述混合功能用于指示将所述待渲染区域的不同像素进行混合,所述渲染指令用于指示对所述待渲染区域进行渲染;

45、基于所述渲染指令获取所述待渲染区域的源像素和目标像素,所述源像素为片元着色器输出的像素,所述目标像素为帧缓冲区中已有的像素;

46、当识别出所述待渲染区域的所述目标像素在渲染时会被完全覆盖时,采用所述源像素对所述待渲染区域进行渲染。

47、根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述的方法。

48、本公开实施例通过在混合功能开启的情况下,获取待渲染区域的渲染指令,混合功能用于指示将待渲染区域的不同像素进行混合,渲染指令用于指示对待渲染区域进行渲染;基于渲染指令获取待渲染区域的源像素和目标像素,源像素为片元着色器输出的像素,目标像素为帧缓冲区中已有的像素;当识别出待渲染区域的目标像素在渲染时会被完全覆盖时,采用源像素对待渲染区域进行渲染;可以在混合功能开启的情况下,识别待渲染区域的目标像素在渲染时是否会被源像素完全覆盖,从而进行优化处理,剔除不必要的混合操作,进行性能提升。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1