CN111724313A - 一种阴影贴图生成方法与装置 - Google Patents
一种阴影贴图生成方法与装置 Download PDFInfo
- Publication number
- CN111724313A CN111724313A CN202010367850.0A CN202010367850A CN111724313A CN 111724313 A CN111724313 A CN 111724313A CN 202010367850 A CN202010367850 A CN 202010367850A CN 111724313 A CN111724313 A CN 111724313A
- Authority
- CN
- China
- Prior art keywords
- pixel point
- shadow
- value
- shadow map
- pixel
- 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
- 238000000034 method Methods 0.000 title claims abstract description 100
- 238000004590 computer program Methods 0.000 claims abstract description 22
- 238000009877 rendering Methods 0.000 claims description 47
- 230000015654 memory Effects 0.000 claims description 25
- 238000004364 calculation method Methods 0.000 abstract description 9
- 230000009466 transformation Effects 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 43
- 238000004422 calculation algorithm Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000006837 decompression Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000013507 mapping Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
- G06T7/507—Depth or shape recovery from shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/90—Dynamic range modification of images or parts thereof
- G06T5/94—Dynamic range modification of images or parts thereof based on local image properties, e.g. for local contrast enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/90—Determination of colour characteristics
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Generation (AREA)
Abstract
本发明的目的是提供一种阴影贴图生成方法、装置以及计算机设备、计算机可读存储介质与计算机程序产品。计算机设备为待生成阴影的第一物体渲染第一阴影贴图,其中,所述第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征;对所述第一阴影贴图中的每个像素点逐个进行模糊处理得到所述第一物体的第二阴影贴图,所述模糊处理包括结合当前像素点的相邻像素点的像素值,来调整所述当前像素点的像素值。与现有技术相比,本发明去除了冗余的数学转换,并通过引入轮廓模糊即得到可以直接使用的软阴影,因此大幅减少了产生软阴影的计算代价且生成的软阴影质量较高。
Description
技术领域
本发明涉及阴影渲染技术领域,尤其涉及一种阴影贴图生成方法。
背景技术
所谓软阴影(Soft Shadow),其作用就是要模拟实际阴影的渐变且在阴影周边制造虚化的效果。
目前基于深度的软阴影实现都是在生成阴影的深度值上做处理,主要有VSM(variance shadow map,方差阴影映射)、ESM(exponential shadow map指数阴影映射)以及改进的ESM等。处理完的深度值再经过模糊算法去掉阴影的边缘锯齿,在使用时再经过处理得到软阴影。
主流的VSM、ESM这些软阴影方案,在模糊软化阴影前要经过数学转换深度值,模糊时又要经过比较复杂的blur方法去模糊深度值,以及需要相对高精度的深度贴图。同时在使用阴影时,这些方案又要经过数学转换来采样深度值方可得到阴影。整个过程比较复杂,而且有多次的数学转换。
主流的VSM和ESM这些只处理深度值来进行软阴影的算法,前后要经过三次的转换才能得到软阴影,这是因为深度贴图中的深度值的精度带来的天然的梯度造成的锯齿,不经过处理直接去模糊也得不到符合实际的软阴影边缘,所以这些算法在模糊前转换阴影,模糊后使用时再转换阴影才能使用,同时需要相对较大尺寸的深度贴图。
因此,如何在阴影生成过程中无须经历多次数学转换,同时也不要求较大分辨率的阴影贴图,而能获得质量较高的软阴影成为亟待解决的问题。
发明内容
本发明的目的是提供一种阴影贴图生成方法、装置以及计算机设备、计算机可读存储介质与计算机程序产品。
根据本发明的一个方面,提供了一种阴影贴图生成方法,其中,包括以下步骤:
为待生成阴影的第一物体渲染第一阴影贴图,其中,所述第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征,在像素着色器中将所述第一物体的像素点的深度值写入到所述第一阴影贴图对应像素点的颜色信息通道中以及将所述第一物体的像素点的颜色值写到所述第一阴影贴图对应像素点的透明通道中,得到所述第一阴影贴图;
对所述第一阴影贴图中的每个像素点逐个进行模糊处理得到所述第一物体的第二阴影贴图,所述模糊处理包括结合当前像素点的相邻像素点的像素值,来调整所述当前像素点的像素值。
根据本发明的一个方面,还提供了一种阴影贴图生成装置,其中,包括:
渲染装置,用于为待生成阴影的第一物体渲染第一阴影贴图,其中,所述第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征,在像素着色器中将所述第一物体的像素点的深度值写入到所述第一阴影贴图对应像素点的颜色信息通道中以及将所述第一物体的像素点的颜色值写到所述第一阴影贴图对应像素点的透明通道中,得到所述第一阴影贴图;
模糊装置,用于对所述第一阴影贴图中的每个像素点逐个进行模糊处理得到所述第一物体的第二阴影贴图,所述模糊处理包括结合当前像素点的相邻像素点的像素值,来调整所述当前像素点的像素值。
根据本发明的一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现根据本发明的一个方面的一种阴影贴图生成方法。
根据本发明的一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现根据本发明的一个方面的一种阴影贴图生成方法。
根据本发明的一个方面,还提供了一种计算机程序产品,当所述计算机程序产品被计算设备执行时实现根据本发明的一个方面的一种阴影生成贴图方法。
与现有技术相比,本发明将深度值写入物体的第一阴影贴图的颜色信息通道并将颜色值写入第一阴影贴图的A通道,通过结合相邻像素点的各对应通道值来对第一阴影贴图中的各像素点进行模糊处理,以获得调整后阴影渐变且消除边缘锯齿的第二阴影贴图。据此,本发明去除了冗余的数学转换,并通过引入轮廓模糊即得到可以直接使用的软阴影,因此大幅减少了产生软阴影的计算代价且生成的软阴影质量较高。此外,本发明对阴影贴图的分辨率要求不高,从而可以大幅降低产生软阴影的阴影贴图的分辨率,由此减少了对内存资源的占用,同时提高了渲染阴影贴图的效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出根据本发明的一个实施例的一种生成阴影贴图的方法流程图;
图2示出根据本发明的一个示例的一种模糊处理的过程示意图;
图3(a)示出根据本发明的一个实施例的一种生成阴影贴图的方法流程图;
图3(b)示出图3(a)所示实施例中步骤330的子步骤的流程图;
图4示出根据本发明的一个实施例的一种生成阴影贴图的装置示意图;
图5示出根据本发明的一个实施例的一种生成阴影贴图的装置示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
在更加详细地讨论示例性实施例之前应当提到的是,本发明的一些示例性实施例被描述为由方框图表述的装置和由流程图表述的过程或方法。虽然流程图将本发明的操作过程描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。本发明的过程可在其操作执行完毕时被终止,但也可包括未在所述流程图中示出的额外步骤。本发明的过程可以对应于方法、功能、规程、子例程、子程序等。
以下讨论的由流程图示出的方法和由方框图示出的装置,可以通过硬件、软件、固件、中间件、微代码、硬件描述语言、或其任意组合实现。当以软件、固件、中间件或微代码实现时,执行必要任务的程序代码或代码段可被存储于机器或诸如存储介质的计算机可读介质。(一个或多个)处理器可以执行所述必要任务。
类似地,还将理解任何流程表、流程图、状态转换图,诸如此类,表示各种过程,其可以被充分地描述为存储于计算机可读介质内的程序代码并因此被计算设备或处理器执行,无论这些计算设备或处理器是否被明确示出。
本文中,术语“存储介质”可以表示一个或多个用于存储数据的设备,包括只读存储器(ROM),随机存取存储器(RAM),磁性RAM,内核存储器,磁盘存储介质,光存储介质,闪存设备和/或其他用于存储信息的机器可读介质。术语“计算机可读介质”可包括但不限于,便携的或固定的存储设备,光存储设备,及各种其他能够存储和/或包含指令和/或数据的介质。
代码段可表示规程、功能、子程序、程序、例程、子例程、模块、软件包、类,或指令、数据结构或程序描述的任一组合。一个代码段可以通过传递和/或接收信息、数据、自变量、参数或存储内容,与另一个代码段或硬件电路相耦合。信息、自变量、参数、数据等,可以经由包括存储共享、信息传递、令牌传递、网络传输等任一合适方式,被传递、转发或发射。
在上下文中所称“计算机设备”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的电子设备,其至少可以包括处理器与存储器,其中由处理器执行在存储器中预存的程序指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。
上述“计算机设备”通常以通用计算机设备的形式表现,其组件可以包括但不限于:一个或者多个处理器或者处理单元、系统存储器。系统存储器可以包括易失性存储器形式的计算机可读介质,例如随机存取存储器(RAM)和/或高速缓存存储器。“计算机设备”可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机可读存储介质。存储器可以包括至少一个计算机程序产品,该计算机程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能和/或方法。处理器通过运行存储在存储器中的程序,从而执行各种功能应用以及数据处理。
例如,存储器中存储有用于执行本发明的各项功能和处理的计算机程序,处理器执行相应计算机程序时,本发明生成阴影贴图的方案被实现。
典型地,计算机设备例如包括用户设备与网络设备。其中,所述用户设备包括但不限于个人计算机(PC)、笔记本电脑、移动终端等,所述移动终端包括但不限于智能手机、平板电脑等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
下面结合附图对本发明作进一步详细描述。
图1示出根据本发明的一个实施例的方法流程图,其中具体示出一种生成阴影贴图的过程。
如图1所示,在步骤110中,计算机设备为待生成阴影的第一物体渲染第一阴影贴图,其中,所述第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征,在像素着色器中将所述第一物体的像素点的深度值写入到所述第一阴影贴图对应像素点的颜色信息通道中以及将所述第一物体的像素点的颜色值写入到所述第一阴影贴图对应像素点的透明通道中,得到所述第一阴影贴图;在步骤120中,计算机设备对所述第一阴影贴图中的每个像素点逐个进行模糊处理得到所述第一物体的第二阴影贴图,所述模糊处理包括结合当前像素点的相邻像素点的像素值,来调整所述当前像素点的像素值。
具体地,在步骤110中,计算机设备为待生成阴影的第一物体渲染第一阴影贴图。
在此,计算机设备可以为任何可以执行本发明方案的电子设备,典型地如服务器。
根据本发明的一个示例,通过阴影相机来为第一物体渲染第一阴影贴图;其中,阴影相机的位置和朝向根据光源的位置和朝向来设置。典型地,阴影相机例如可以采用Shader map等贴图生成转换工具。以阴影相机视锥范围进行裁剪,视锥范围内的物体即待生成阴影的第一物体。
例如,根据要渲染阴影的区域中心,朝方向光的反方向,延长一个可以看到所有要渲染物体的值,来设置阴影相机的位置。关于朝向,即将方向光的光照方向设置给阴影相机。
其中,所渲染的第一阴影贴图中每个像素点的像素值由颜色信息通道和透明通道来表征。
在此,各颜色信息通道例如RGB通道。深度值是一个三维概念,其意指物体渲染获得的阴影中一个像素点相对于阴影相机的距离。透明通道(A通道),即alpha通道,一般用做轮廓通道,由于其中写入像素点的颜色值,故该透明通道中的颜色值也可以被理解为透明度。
在渲染过程中,阴影相机提交要渲染的第一物体的顶点信息和索引信息到渲染管线,并调用图形处理器(GPU),GPU的顶点着色器(VertexShader)根据该顶点信息转换为第一物体的顶点坐标信息并输出至像素着色器(PixelShader),PixelShader计算当前物体三角面中像素点对应的深度值并将其写入该像素点在第一阴影贴图中对应像素点的颜色信息通道以及将该像素点的颜色值写入在第一阴影贴图中对应像素点的透明通道中,渲染管线根据像素点的像素值渲染获得第一阴影贴图。
在此,依据待生成阴影精度要求,第一物体的像素点的深度值可以写入到第一阴影贴图对应像素点的颜色信息通道R通道或RGB通道中。
具体地,待生成阴影精度要求可以根据第一物体与游戏中当前玩家角色虚拟距离来判断。设定一个预设距离,该预设距离可以依照角色视野即角色虚拟摄像机半径来设定,如300m或500m。当该虚拟距离小于该预设距离时,阴影精度要求高,则深度值写入颜色信息通道的RGB通道。当该虚拟距离大于该预设距离时,阴影精度要求低,则深度值写入颜色信息通道的R通道。
本发明中,RGBA四个通道的值采用0到1的浮点值。可替代地,RGBA也可以转成0-255的整数值。
因此,当采用0-1的浮点值,第一阴影贴图中阴影部分的像素点的A通道值被赋值为1;当采用0-255的浮点值,阴影部分的像素点的A通道值被赋值为255。第一阴影贴图中其他部分(即无阴影的空白部分)的RGB通道值和A通道值均为0,即RGBA值=[0,0,0,0]。
在步骤120中,计算机设备对第一阴影贴图中的每个像素点逐个进行模糊处理得到第一物体的第二阴影贴图,所述模糊处理包括结合当前像素点的相邻像素点的像素值,来调整当前像素点的像素值。
例如,计算机设备对第一阴影贴图中的每个像素点,结合其相邻像素点,将当前像素点在各颜色信息通道的值调整为对应颜色信息通道中的最大值以及将当前像素点在A通道的值调整为A通道中的均值,由此模糊处理后得到第二阴影贴图。
具体地,根据本发明的一个示例,配合参阅图2,模糊处理具体包括:
在步骤201中,计算机设备根据当前像素点及其相邻像素点各自在各颜色信息通道中的值和在透明通道中的值,将当前像素点在各颜色信息通道中的值调整为各颜色信息通道中的均值以及将当前像素点在透明通道中的值调整为透明通道中的均值;
在步骤202中,计算机设备根据当前像素点及其相邻像素点各自在各颜色信息通道中的值,获取其中各颜色信息通道中的最大值;
在步骤203中,计算机设备将当前像素点当前所采用的各颜色信息通道中的均值替换为相应颜色信息通道中的最大值。
在此,相邻像素点可以是以当前像素点为中心的周围8个像素点,也可以是当前像素点的上下左右4个方向上的像素点。
以周围8个像素点进行计算举例,根据本发明的一个示例,当前像素点标记为M0(R0,G0,B0,1),其周围8个相邻像素点被依次标记为M1(R1,G1,B1,1)、M2(R2,G2,B2,0)、M3(R3,G3,B3,0)、M4(R4,G4,B4,0)、M5(R5,G5,B5,0)、M6(R6,G6,B6,1)、M7(R7,G7,B7,1)、M8(R8,G8,B8,1)。当对M0模糊处理后,R0=R最大值=Max【R0,R1,R2,R3,R4,R5,R6,R7,R8】,G0=G最大值=Max【G0,G1,G2,G3,G4,G5,G6,G7,G8】,B0=B最大值=Max【B0,B1,B2,B3,B4,B5,B6,B7,B8】,A0=A均值=(1+1+0=0+0+0+1+1+1)/9=0.55555556,由此获得调整后的像素点M0(R最大值,G最大值,B最大值,0.55555556)。
据此,对第一阴影贴图中的每个像素点在RGBA通道上的相应值均会调整,以得到模糊处理后的第二阴影贴图。第二阴影贴图中阴影边缘的透明度降低且锯齿也被消除。
根据本发明的一个实施例,在步骤110中,计算机设备为待生成阴影的第一物体渲染第一阴影贴图。第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征。其中,第一物体的像素点的深度值为该像素点相对于阴影相机的距离,第一物体的像素点的颜色值为预设值。
如果对待生成阴影的精度要求较高,具体如,在第一物体与游戏中当前玩家角色虚拟距离小于预设距离的情况下,在像素着色器中将第一物体的像素点的深度值写入到第一阴影贴图对应像素点的颜色信息通道的RGB通道以及将第一物体的像素点的颜色值写入到第一阴影贴图对应像素点的透明通道中。
深度值的写入方式更具体可以为将深度值压缩到RGB三个颜色信息通道中。例如,深度值为一个浮点数(float值),该float值被压缩成三部分,分别写入RGB通道中;当使用的时候,再按照解压算法对三部分计算出原始的float值。
当第一物体离阴影相机近,通常需要阴影精度高,则深度值为32位浮点数。现有技术一般是写入到RGBA四个通道(每个通道各8位)。本发明中,深度值只写到RGB三个通道中,剩下8位不写到A通道,A通道的值为1,用作区分阴影边缘和空白区域。
接下来,在步骤120中,计算机设备对第一阴影贴图中的每个像素点逐个进行模糊处理得到第一物体的第二阴影贴图。其中,模糊处理包括结合当前像素点的相邻像素点的像素值,来调整当前像素点的像素值。据此,第二阴影贴图中像素点的深度值为按照解压算法对该像素点调整后的RGB通道的值计算出的值。
根据本发明的一个实施例,在步骤110中,计算机设备为待生成阴影的第一物体渲染第一阴影贴图。第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征。其中,第一物体的像素点的深度值为该像素点相对于阴影相机的距离,第一物体的像素点的颜色值为预设值。
如果对待生成阴影的精度要求不高,具体如,在第一物体与游戏中当前玩家角色虚拟距离大于预设距离的情况下,在像素着色器中将第一物体的像素点的深度值写入到第一阴影贴图对应像素点的颜色信息通道的R通道以及将第一物体的像素点的颜色值写入到第一阴影贴图对应像素点的透明通道中。
深度值的写入方式更具体可以为对R通道赋值。当第一物体离阴影相机远,需要阴影精度低(太远都看不到阴影),则深度值为8位浮点数,可以只写到R通道中。
接下来,在步骤120中,计算机设备对第一阴影贴图中的每个像素点逐个进行模糊处理得到第一物体的第二阴影贴图。其中,模糊处理包括结合当前像素点的相邻像素点的像素值,来调整当前像素点的像素值。据此,第二阴影贴图中像素点的深度值为该像素点调整后的R通道的值。
上述实施例将深度值写入第一物体的第一阴影贴图的颜色信息通道并将颜色值写入第一阴影贴图的A通道,通过结合相邻像素点的各对应通道值来对第一阴影贴图中的各像素点进行模糊处理,由此得到调整后阴影渐变且消除边缘锯齿的第二阴影贴图。据此,上述实施例去除了冗余的数学转换,并通过引入轮廓模糊即得到可以直接使用的软阴影,因此大幅减少了产生软阴影的计算代价且生成的软阴影质量较高。此外,由于上述实施例对阴影贴图的分辨率要求不高,从而可以大幅降低产生软阴影的阴影贴图的分辨率,由此减少了对内存资源的占用,同时提高了渲染阴影贴图的效率。
根据本发明的一个实施例,在对第一阴影贴图进行模糊处理得到第二阴影贴图后,还可以继续对第二阴影贴图进行处理,从而获得反向调整后的第三阴影贴图。
具体地,参阅图3(a),在步骤310中,计算机设备为待生成阴影的第一物体渲染第一阴影贴图,其中,第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征,在像素着色器中将第一物体的像素点的深度值写入到第一阴影贴图对应像素点的颜色信息通道中以及将第一物体的像素点的颜色值写入到第一阴影贴图对应像素点的透明通道中,得到第一阴影贴图;在步骤320中,计算机设备对第一阴影贴图中的每个像素点逐个进行模糊处理得到第一物体的第二阴影贴图,模糊处理包括结合当前像素点的相邻像素点的像素值,来调整当前像素点的像素值;在步骤330中,针对每个处于第一物体的第二阴影贴图中的第二物体的像素点,计算机设备根据该像素点当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,得到第一物体的第三阴影贴图。
在此,步骤310和步骤320所执行的操作与步骤110和步骤120中相同,不再赘述。以下将详细描述步骤330。
在步骤330中,对于每个处于第一物体的第二阴影贴图中的第二物体的像素点,计算机设备根据该像素点当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,即当前透明通道值越大,将该像素点的各颜色信息通道值调整地越小,当前透明通道值越小,将该像素点的各颜色信息通道值调整地越大。
根据本发明的一个示例,RGBA通道值为0-1之间的浮点数。反向调整具体为:针对每个处于第一物体的第二阴影贴图中的第二物体的像素点,以1减去该像素点的A通道值后,分别乘以该像素点的各RGB通道值,即新的各RGB通道值为(1-A)*R,(1-A)*G,(1-A)*B,由此调整获得第三阴影贴图。
根据本发明的一个示例,继续参阅图3(b),步骤330可以被进一步分为两个子步骤3301和3302。在步骤3301中,如果一个处于第一物体的第二阴影贴图中的第二物体的像素点的深度值大于该像素点在第二阴影贴图中的深度值,则该像素点处于第一物体的阴影中;在步骤3302中,对于每个步骤3301中识别的处于第一物体的阴影中的第二物体的像素点,根据该像素点当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,得到第一物体的第三阴影贴图。
其中,步骤3301可以识别出每个处于第一物体的第二阴影贴图中的第二物体的像素点。
根据本发明的一个示例,该第二物体的一个像素点相对光源的深度值即为步骤110中在渲染第一阴影贴图时为该像素点计算确定的深度值x,对步骤120中调整获得的第二阴影贴图采样同一像素点的深度值y,如果深度值x大于深度值y,则认为该像素点处于第一物体的阴影中。
随后,步骤3302中,计算机设备对步骤3301中识别出的每个处于第一物体的第二阴影贴图中的第二物体的像素点,根据该像素点当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,即当前透明通道值越大,将该像素点的各颜色信息通道值调整地越小,当前透明通道值越小,将该像素点的各颜色信息通道值调整地越大。
根据本发明的一个实施例,在步骤310中,计算机设备为待生成阴影的第一物体渲染第一阴影贴图。第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征。其中,第一物体的像素点的深度值为该像素点相对于阴影相机的距离,第一物体的像素点的颜色值为预设值。
如果对待生成阴影的精度要求较高,具体如,在第一物体与游戏中当前玩家角色虚拟距离小于预设距离的情况下,在像素着色器中将第一物体的像素点的深度值写入到第一阴影贴图对应像素点的颜色信息通道的RGB通道以及将第一物体的像素点的颜色值写入到第一阴影贴图对应像素点的透明通道中。
深度值的写入方式更具体可以为将深度值压缩到RGB三个颜色信息通道中。例如,深度值为一个浮点数(float值),该float值被压缩成三部分,分别写入RGB通道中;当使用的时候,再按照解压算法对三部分计算出原始的float值。
接下来,在步骤320中,计算机设备对第一阴影贴图中的每个像素点逐个进行模糊处理得到第一物体的第二阴影贴图。其中,模糊处理包括结合当前像素点的相邻像素点的像素值,来调整当前像素点的像素值。此时,第二阴影贴图中像素点的深度值为按照解压算法对该像素点调整后的RGB通道的值计算出的值。
在步骤3301中,如果一个处于第一物体的第二阴影贴图中的第二物体的像素点的深度值大于该像素点在第二阴影贴图中的深度值,则该像素点处于第一物体的阴影中。
该第二物体的一个像素点相对光源的深度值即为步骤310中在渲染第一阴影贴图时压缩至RGB通道的深度值x1,步骤320中获得的第二阴影贴图中对同一像素点的RGB通道值进行了调整,对调整后的RGB通道的值解压计算出深度值y1,如果深度值x1大于深度值y1,则认为该像素点处于第一物体的阴影中。
在步骤3302中,对于每个步骤3301中识别的处于第一物体的阴影中的第二物体的像素点,根据该像素点当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,得到第一物体的第三阴影贴图。
根据本发明的一个实施例,在步骤310中,计算机设备为待生成阴影的第一物体渲染第一阴影贴图。第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征。其中,第一物体的像素点的深度值为该像素点相对于阴影相机的距离,第一物体的像素点的颜色值为预设值。
如果对待生成阴影的精度要求不高,具体如,在第一物体与游戏中当前玩家角色虚拟距离大于预设距离的情况下,在像素着色器中将第一物体的像素点的深度值写入到第一阴影贴图对应像素点的颜色信息通道的R通道以及将第一物体的像素点的颜色值写入到第一阴影贴图对应像素点的透明通道中。
深度值的写入方式更具体可以为对R通道赋值。当第一物体离阴影相机远,需要阴影精度低,则深度值为8位浮点数,可以只写到R通道中。
接下来,在步骤320中,计算机设备对第一阴影贴图中的每个像素点逐个进行模糊处理得到第一物体的第二阴影贴图。其中,模糊处理包括结合当前像素点的相邻像素点的像素值,来调整当前像素点的像素值。据此,第二阴影贴图中像素点的深度值为该像素点调整后的R通道的值。
在步骤3301中,如果一个处于第一物体的第二阴影贴图中的第二物体的像素点的深度值大于该像素点在第二阴影贴图中的深度值,则该像素点处于第一物体的阴影中。
该第二物体的一个像素点相对光源的深度值即为步骤310中在渲染第一阴影贴图时写入通道的深度值x2,步骤320中获得的第二阴影贴图中对同一像素点的R通道值进行了调整,该调整后的R通道值即为深度值y2,如果深度值x2大于深度值y2,则认为该像素点处于第一物体的阴影中。
在步骤3302中,对于每个步骤3301中识别的处于第一物体的阴影中的第二物体的像素点,根据该像素点当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,得到第一物体的第三阴影贴图。
上述实施例继获得阴影渐变且消除边缘锯齿的第一物体的第二阴影贴图之后,继续反向调整处于该第二阴影贴图中的第二物体的像素点的各颜色信息通道值,以获得第一物体的第三阴影贴图。在此,由于处于第一物体的阴影中的第二物体也会产生阴影,故需要模糊处理第二物体处于第一物体的阴影中的阴影部分。由于上述实施例对阴影贴图的分辨率要求不高,从而可以大幅降低阴影贴图的分辨率,由此减少了对内存资源的占用,同时提高了渲染阴影贴图的效率。
图4示出根据本发明的一个实施例的装置示意图,其中具体示出一种生成阴影贴图的装置。
如图4所示,阴影贴图生成装置40被布置于计算机设备400中,阴影渲染装置40包括渲染装置41和模糊装置42。
其中,渲染装置41为待生成阴影的第一物体渲染第一阴影贴图,其中,所述第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征,在像素着色器中将所述第一物体的像素点的深度值写入到所述第一阴影贴图对应像素点的颜色信息通道中以及将所述第一物体的像素点的颜色值写入到所述第一阴影贴图对应像素点的透明通道中,得到所述第一阴影贴图;模糊装置42对所述第一阴影贴图中的每个像素点逐个进行模糊处理得到所述第一物体的第二阴影贴图,所述模糊处理包括结合当前像素点的相邻像素点的像素值,来调整所述当前像素点的像素值。
具体地,渲染装置41为待生成阴影的第一物体渲染第一阴影贴图。
根据本发明的一个示例,渲染装置41通过阴影相机来为第一物体渲染第一阴影贴图;其中,阴影相机的位置和朝向根据光源的位置和朝向来设置。典型地,阴影相机例如可以采用Shader map等贴图生成转换工具。以阴影相机视锥范围进行裁剪,视锥范围内的物体即待生成阴影的第一物体。在此,阴影相机可以作为渲染装置41为第一物体渲染第一阴影贴图,也可以集成于渲染装置41来为第一物体渲染第一阴影贴图。
例如,根据要渲染阴影的区域中心,朝方向光的反方向,延长一个可以看到所有要渲染物体的值,来设置阴影相机的位置。关于朝向,即将方向光的光照方向设置给阴影相机。
其中,所渲染的第一阴影贴图中每个像素点的像素值由颜色信息通道和透明通道来表征。
在此,各颜色信息通道例如RGB通道。深度值是一个三维概念,其意指物体渲染获得的阴影中一个像素点相对于阴影相机的距离。透明通道(A通道),即alpha通道,一般用做轮廓通道,由于其中写入像素点的颜色值,故该透明通道中的颜色值也可以被理解为透明度。
在渲染过程中,阴影相机提交要渲染的第一物体的顶点信息和索引信息到渲染管线,并调用图形处理器(GPU),GPU的顶点着色器(VertexShader)根据该顶点信息转换为第一物体的顶点坐标信息并输出至像素着色器(PixelShader),PixelShader计算当前物体三角面中像素点对应的深度值并将其写入该像素点在第一阴影贴图中对应像素点的颜色信息通道以及将该像素点的颜色值写入在第一阴影贴图中对应对应像素点的透明通道中,渲染管线根据像素点的像素值渲染获得第一阴影贴图。
在此,依据待生成阴影精度要求,第一物体的像素点的深度值可以写入到第一阴影贴图对应像素点的颜色信息通道R通道或RGB通道中。
具体地,待生成阴影精度要求可以根据第一物体与游戏中当前玩家角色虚拟距离来判断。设定一个预设距离,该预设距离可以依照角色视野即角色虚拟摄像机半径来设定,如300m或500m。当该虚拟距离小于该预设距离时,阴影精度要求高,则深度值写入颜色信息通道的RGB通道。当该虚拟距离大于该预设距离时,阴影精度要求低,则深度值写入颜色信息通道的R通道。
本发明中,RGBA四个通道的值采用0到1的浮点值。可替代地,RGBA也可以转成0-255的整数值。
因此,当采用0-1的浮点值,第一阴影贴图中阴影部分的像素点的A通道值被赋值为1;当采用0-255的浮点值,阴影部分的像素点的A通道值被赋值为255。第一阴影贴图中其他部分(即无阴影的空白部分)的RGB通道值和A通道值均为0,即RGBA值=[0,0,0,0]。
接下来,模糊装置42对第一阴影贴图中的每个像素点逐个进行模糊处理得到第一物体的第二阴影贴图,所述模糊处理包括结合当前像素点的相邻像素点的像素值,来调整当前像素点的像素值。
例如,模糊装置42对第一阴影贴图中的每个像素点,结合其相邻像素点,将当前像素点在各颜色信息通道的值调整为对应颜色信息通道中的最大值以及将当前像素点在A通道的值调整为A通道中的均值,由此模糊处理后得到第二阴影贴图。
具体地,根据本发明的一个示例,模糊处理具体包括:模糊装置42根据当前像素点及其相邻像素点各自在各颜色信息通道中的值和在透明通道中的值,将当前像素点在各颜色信息通道中的值调整为各颜色信息通道中的均值以及将当前像素点在透明通道中的值调整为透明通道中的均值;模糊装置42根据当前像素点及其相邻像素点各自在各颜色信息通道中的值,获取其中各颜色信息通道中的最大值;模糊装置42将当前像素点当前所采用的各颜色信息通道中的均值替换为相应颜色信息通道中的最大值。
在此,相邻像素点可以是以当前像素点为中心的周围8个像素点,也可以是当前像素点的上下左右4个方向上的像素点。
以周围8个像素点进行计算举例,根据本发明的一个示例,当前像素点标记为M0(R0,G0,B0,1),其周围8个相邻像素点被依次标记为M1(R1,G1,B1,1)、M2(R2,G2,B2,0)、M3(R3,G3,B3,0)、M4(R4,G4,B4,0)、M5(R5,G5,B5,0)、M6(R6,G6,B6,1)、M7(R7,G7,B7,1)、M8(R8,G8,B8,1)。当对M0模糊处理后,R0=R最大值=Max【R0,R1,R2,R3,R4,R5,R6,R7,R8】,G0=G最大值=Max【G0,G1,G2,G3,G4,G5,G6,G7,G8】,B0=B最大值=Max【B0,B1,B2,B3,B4,B5,B6,B7,B8】,A0=A均值=(1+1+0=0+0+0+1+1+1)/9=0.55555556,由此获得调整后的像素点M0(R最大值,G最大值,B最大值,0.55555556)。
据此,对第一阴影贴图中的每个像素点在RGBA通道上的相应值均会调整,以得到模糊处理后的第二阴影贴图。第二阴影贴图中阴影边缘的透明度降低且锯齿也被消除。
根据本发明的一个实施例,渲染装置41为待生成阴影的第一物体渲染第一阴影贴图。第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征。其中,第一物体的像素点的深度值为该像素点相对于阴影相机的距离,第一物体的像素点的颜色值为预设值。
如果对待生成阴影的精度要求较高,具体如,在第一物体与游戏中当前玩家角色虚拟距离小于预设距离的情况下,在像素着色器中将第一物体的像素点的深度值写入到第一阴影贴图对应像素点的颜色信息通道的RGB通道以及将第一物体的像素点的颜色值写入到第一阴影贴图对应像素点的透明通道中。
深度值的写入方式更具体可以为将深度值压缩到RGB三个颜色信息通道中。例如,深度值为一个浮点数(float值),该float值被压缩成三部分,分别写入RGB通道中;当使用的时候,再按照解压算法对三部分计算出原始的float值。
当第一物体离阴影相机近,通常需要阴影精度高,则深度值为32位浮点数。现有技术一般是写入到RGBA四个通道(每个通道各8位)。本发明中,深度值只写到RGB三个通道中,剩下8位不写到A通道,A通道的值为1,用作区分阴影边缘和空白区域。
接下来,模糊装置42对第一阴影贴图中的每个像素点逐个进行模糊处理得到第一物体的第二阴影贴图。其中,模糊处理包括结合当前像素点的相邻像素点的像素值,来调整当前像素点的像素值。据此,第二阴影贴图中像素点的深度值为按照解压算法对该像素点调整后的RGB通道的值计算出的值。
根据本发明的一个实施例,渲染装置41为待生成阴影的第一物体渲染第一阴影贴图。第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征。其中,第一物体的像素点的深度值为该像素点相对于阴影相机的距离,第一物体的像素点的颜色值为预设值。
如果对待生成阴影的精度要求不高,具体如,在第一物体与游戏中当前玩家角色虚拟距离大于预设距离的情况下,在像素着色器中将第一物体的像素点的深度值写入到第一阴影贴图对应像素点的颜色信息通道的R通道以及将第一物体的像素点的颜色值写入到第一阴影贴图对应像素点的透明通道中。
深度值的写入方式更具体可以为对R通道赋值。当第一物体离阴影相机远,需要阴影精度低,则深度值为8位浮点数,可以只写到R通道中。
接下来,模糊装置42对第一阴影贴图中的每个像素点逐个进行模糊处理得到第一物体的第二阴影贴图。其中,模糊处理包括结合当前像素点的相邻像素点的像素值,来调整当前像素点的像素值。据此,第二阴影贴图中像素点的深度值为该像素点调整后的R通道的值。
上述实施例将深度值写入第一物体的第一阴影贴图的颜色信息通道并将颜色值写入第一阴影贴图的A通道,通过结合相邻像素点的各对应通道值来对第一阴影贴图中的各像素点进行模糊处理,由此得到调整后阴影渐变且消除边缘锯齿的第二阴影贴图。据此,上述实施例去除了冗余的数学转换,并通过引入轮廓模糊即得到可以直接使用的软阴影,因此大幅减少了产生软阴影的计算代价且生成的软阴影质量较高。此外,由于上述实施例对阴影贴图的分辨率要求不高,从而可以大幅降低产生软阴影的阴影贴图的分辨率,由此减少了对内存资源的占用,同时提高了渲染阴影贴图的效率。
根据本发明的一个实施例,阴影贴图生成装置在对第一阴影贴图进行模糊处理得到第二阴影贴图后,还可以继续对第二阴影贴图进行处理,从而获得反向调整后的第三阴影贴图。
具体地,参阅图5,阴影贴图生成装置50被布置于计算机设备500中,阴影渲染装置50包括渲染装置51、模糊装置52和调整装置53。
其中,渲染装置51为待生成阴影的第一物体渲染第一阴影贴图,其中,所述第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征,在像素着色器中将所述第一物体的像素点的深度值写入到所述第一阴影贴图对应像素点的颜色信息通道中以及将所述第一物体的像素点的颜色值写入到所述第一阴影贴图对应像素点的透明通道中,得到所述第一阴影贴图;模糊装置52对所述第一阴影贴图中的每个像素点逐个进行模糊处理得到所述第一物体的第二阴影贴图,所述模糊处理包括结合当前像素点的相邻像素点的像素值,来调整所述当前像素点的像素值;针对每个处于第一物体的第二阴影贴图中的第二物体的像素点,调整装置53根据该像素点的当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,得到第一物体的第三阴影贴图。
在此,渲染装置51和模糊装置52所执行的操作与渲染装置41和模糊装置42所执行的操作相同,不再赘述。以下将详细描述调整装置53的操作。
对于每个处于第一物体的第二阴影贴图中的第二物体的像素点,调整装置53根据该像素点当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,即当前透明通道值越大,将该像素点的各颜色信息通道值调整地越小,当前透明通道值越小,将该像素点的各颜色信息通道值调整地越大。
根据本发明的一个示例,RGBA通道值为0-1之间的浮点数。反向调整具体为:针对每个处于第一物体的第二阴影贴图中的第二物体的像素点,以1减去该像素点的A通道值后,分别乘以该像素点的各RGB通道值,即新的各RGB通道值为(1-A)*R,(1-A)*G,(1-A)*B,由此调整获得第三阴影贴图。
根据本发明的一个示例,调整装置53可以被进一步包括两个装置:识别装置5301和反调装置5302。如果一个处于第一物体的第二阴影贴图中的第二物体的像素点的深度值大于该像素点在第二阴影贴图中的深度值,识别装置5301则认为该像素点处于第一物体的阴影中;对于每个识别装置5301识别的处于第一物体的阴影中的第二物体的像素点,反调装置5302根据该像素点当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,得到第一物体的第三阴影贴图。
其中,识别装置5301可以识别出每个处于第一物体的第二阴影贴图中的第二物体的像素点。
根据本发明的一个示例,该第二物体的一个像素点相对光源的深度值即为渲染装置51在渲染第一阴影贴图时为该像素点计算确定的深度值x,对模糊装置52中调整获得的第二阴影贴图采样同一像素点的深度值y,如果深度值x大于深度值y,则识别装置5301认为该像素点处于第一物体的阴影中。
随后,反调装置5302对识别装置5301识别出的每个处于第一物体的第二阴影贴图中的第二物体的像素点,根据该像素点当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,即当前透明通道值越大,将该像素点的各颜色信息通道值调整地越小,当前透明通道值越小,将该像素点的各颜色信息通道值调整地越大。
根据本发明的一个实施例,渲染装置51为待生成阴影的第一物体渲染第一阴影贴图。第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征。其中,第一物体的像素点的深度值为该像素点相对于阴影相机的距离,第一物体的像素点的颜色值为预设值。
如果对待生成阴影的精度要求较高,具体如,在第一物体与游戏中当前玩家角色虚拟距离小于预设距离的情况下,在像素着色器中将第一物体的像素点的深度值写入到第一阴影贴图对应像素点的颜色信息通道的RGB通道以及将第一物体的像素点的颜色值写入到第一阴影贴图对应像素点的透明通道中。
深度值的写入方式更具体可以为将深度值压缩到RGB三个颜色信息通道中。例如,深度值为一个浮点数(float值),该float值被压缩成三部分,分别写入RGB通道中;当使用的时候,再按照解压算法对三部分计算出原始的float值。
接下来,模糊装置52对第一阴影贴图中的每个像素点逐个进行模糊处理得到第一物体的第二阴影贴图。其中,模糊处理包括结合当前像素点的相邻像素点的像素值,来调整当前像素点的像素值。此时,第二阴影贴图中像素点的深度值为按照解压算法对该像素点调整后的RGB通道的值计算出的值。
如果一个处于第一物体的第二阴影贴图中的第二物体的像素点的深度值大于该像素点在第二阴影贴图中的深度值,则识别装置5301识别出该像素点处于第一物体的阴影中。
该第二物体的一个像素点相对光源的深度值即为渲染装置51在渲染第一阴影贴图时压缩至RGB通道的深度值x1,模糊装置52获得的第二阴影贴图中对同一像素点的RGB通道值进行了调整,对调整后的RGB通道的值解压计算出深度值y1,如果深度值x1大于深度值y1,识别装置5301则认为该像素点处于第一物体的阴影中。
对于每个识别装置5301识别的处于第一物体的阴影中的第二物体的像素点,反调装置5302根据该像素点当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,得到第一物体的第三阴影贴图。
根据本发明的一个实施例,渲染装置51为待生成阴影的第一物体渲染第一阴影贴图。第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征。其中,第一物体的像素点的深度值为该像素点相对于阴影相机的距离,第一物体的像素点的颜色值为预设值。
如果对待生成阴影的精度要求不高,具体如,在第一物体与游戏中当前玩家角色虚拟距离大于预设距离的情况下,在像素着色器中将第一物体的像素点的深度值写入到第一阴影贴图对应像素点的颜色信息通道的R通道以及将第一物体的像素点的颜色值写入到第一阴影贴图对应像素点的透明通道中。
深度值的写入方式更具体可以为对R通道赋值。当第一物体离阴影相机远,需要阴影精度低,则深度值为8位浮点数,可以只写到R通道中。
接下来,模糊装置52对第一阴影贴图中的每个像素点逐个进行模糊处理得到第一物体的第二阴影贴图。其中,模糊处理包括结合当前像素点的相邻像素点的像素值,来调整当前像素点的像素值。据此,第二阴影贴图中像素点的深度值为该像素点调整后的R通道的值。
如果一个处于第一物体的第二阴影贴图中的第二物体的像素点的深度值大于该像素点在第二阴影贴图中的深度值,识别装置5301则该像素点处于第一物体的阴影中。
该第二物体的一个像素点相对光源的深度值即为渲染装置51在渲染第一阴影贴图时写入通道的深度值x2,模糊装置52获得的第二阴影贴图中对同一像素点的R通道值进行了调整,该调整后的R通道值即为深度值y2,如果深度值x2大于深度值y2,识别装置5301则认为该像素点处于第一物体的阴影中。
对于每个识别装置5301识别的处于第一物体的阴影中的第二物体的像素点,反调装置5302根据该像素点当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,得到第一物体的第三阴影贴图。
上述实施例继获得阴影渐变且消除边缘锯齿的第一物体的第二阴影贴图之后,继续反向调整处于该第二阴影贴图中的第二物体的像素点的各颜色信息通道值,以获得第一物体的第三阴影贴图。在此,由于处于第一物体的阴影中的第二物体也会产生阴影,故需要模糊处理第二物体处于第一物体的阴影中的阴影部分。由于上述实施例对阴影贴图的分辨率要求不高,从而可以大幅降低阴影贴图的分辨率,由此减少了对内存资源的占用,同时提高了渲染阴影贴图的效率。
需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本发明的至少一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算设备执行时,通过该计算设备的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用/提供本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算设备的工作存储器中。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
虽然前面特别示出并且描述了示例性实施例,但是本领域技术人员将会理解的是,在不背离权利要求书的精神和范围的情况下,在其形式和细节方面可以有所变化。这里所寻求的保护在所附权利要求书中做了阐述。在下列编号条款中规定了各个实施例的这些和其他方面:
1.一种阴影贴图生成方法,其中,包括以下步骤:
为待生成阴影的第一物体渲染第一阴影贴图,其中,所述第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征,在像素着色器中将所述第一物体的像素点的深度值写入到所述第一阴影贴图对应像素点的颜色信息通道中以及将所述第一物体的像素点的颜色值写到所述第一阴影贴图对应像素点的透明通道中,得到所述第一阴影贴图;
对所述第一阴影贴图中的每个像素点逐个进行模糊处理得到所述第一物体的第二阴影贴图,所述模糊处理包括结合当前像素点的相邻像素点的像素值,来调整所述当前像素点的像素值。
2.根据条款1所述的方法,其中,所述第一物体的像素点的深度值为该像素点相对于阴影相机的距离,所述第一物体的像素点的颜色值为预设值。
3.根据条款2所述的方法,其中,所述深度值与所述颜色值为浮点数,所述预设值为1。
4.根据条款2所述的方法,其中,所述在像素着色器中将所述第一物体的像素点的深度值写入到所述第一阴影贴图对应像素点的颜色信息通道中,具体为依据待生成阴影精度要求将所述深度值写入所述颜色信息通道的R通道或RGB通道中。
5.根据条款4所述的方法,其中,所述依据待生成阴影精度要求将所述深度值写入所述颜色信息通道,具体包括:
在所述第一物体与游戏中当前玩家角色虚拟距离小于预设距离的情况下,所述深度值写入方式为写入所述颜色信息通道的RGB通道;
在所述第一物体与游戏中当前玩家角色虚拟距离大于预设距离的情况下,所述深度值写入方式为写入所述颜色信息通道的R通道。
6.根据条款5所述的方法,其中,在所述第一物体与游戏中当前玩家角色虚拟距离大于预设距离的情况下,将所述第一物体的像素点的深度值写入其颜色信息通道的R通道,所述写入过程为赋值过程。
7.根据条款5所述的方法,其中,在所述第一物体与游戏中当前玩家角色虚拟距离小于预设距离的情况下,将所述第一物体的像素点的深度值写入其颜色信息通道的RGB通道,所述写入过程为将所述深度值压缩成三部分,分别写入RGB通道。
8.根据条款1至7中任一项所述的方法,其中,所述当前像素点的像素值的调整步骤具体包括:
根据所述当前像素点及其相邻像素点各自在各颜色信息通道中的值和在透明通道中的值,将所述当前像素点在各颜色信息通道中的值调整为各颜色信息通道中的均值以及将所述当前像素点在透明通道中的值调整为透明通道中的均值;
根据所述当前像素点及其相邻像素点各自在各颜色信息通道中的值,获取其中各颜色信息通道中的最大值;
将所述当前像素点当前所采用的各颜色信息通道中的均值替换为相应颜色信息通道中的最大值。
9.根据条款8所述的方法,其中,所述相邻像素点为所述当前像素点的周围8个像素点。
10.根据条款1所述的方法,其中,在得到所述第一物体的所述第二阴影贴图之后,该方法还包括:
针对每个处于所述第一物体的所述第二阴影贴图中的第二物体的像素点,根据该像素点的当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,得到所述第一物体的第三阴影贴图。
11.根据条款10所述的方法,其中,处于所述第一物体的所述第二阴影贴图中的所述第二物体的像素点通过如下方式判断:
如果所述第二物体的像素点的深度值大于所述第一物体的所述第二阴影贴图中该像素点的深度值,则该像素点处于所述第一物体的阴影中。
12.根据条款11所述的方法,其中,在所述第一物体与游戏中当前玩家角色虚拟距离大于预设距离的情况下,将所述第一物体的像素点的深度值写入其颜色信息通道的R通道,所述写入过程为赋值过程;所述第二阴影贴图中像素点的深度值为该像素点所述调整后的R通道的值。
13.根据条款11所述的方法,其中,在所述第一物体与游戏中当前玩家角色虚拟距离小于预设距离的情况下,将所述第一物体的像素点的深度值写入其颜色信息通道的RGB通道,所述写入过程为将所述深度值压缩成三部分,分别写入RGB通道;所述第二阴影贴图中像素点的深度值为按照解压算法对该像素点所述调整后的RGB通道的值计算出的值。
14.根据条款10至13中任一项所述的方法,其中,所述反向调整具体包括:
针对每个处于所述第一物体的所述第二阴影贴图中的所述第二物体的像素点,以1减去该像素点在透明通道的值后,分别乘以该像素点在各颜色信息通道的值。
15.一种阴影贴图生成装置,其中,包括:
渲染装置,用于为待生成阴影的第一物体渲染第一阴影贴图,其中,所述第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征,在像素着色器中将所述第一物体的像素点的深度值写入到所述第一阴影贴图对应像素点的颜色信息通道中以及将所述第一物体的像素点的颜色值写到所述第一阴影贴图对应像素点的透明通道中,得到所述第一阴影贴图;
模糊装置,用于对所述第一阴影贴图中的每个像素点逐个进行模糊处理得到所述第一物体的第二阴影贴图,所述模糊处理包括结合当前像素点的相邻像素点的像素值,来调整所述当前像素点的像素值。
16.根据条款15所述的装置,其中,所述第一物体的像素点的深度值为该像素点相对于阴影相机的距离,所述第一物体的像素点的颜色值为预设值。
17.根据条款16所述的装置,其中,所述深度值与所述颜色值为浮点数,所述预设值为1。
18.根据条款16所述的装置,其中,所述在像素着色器中将所述第一物体的像素点的深度值写入到所述第一阴影贴图对应像素点的颜色信息通道中,具体为依据待生成阴影精度要求将所述深度值写入所述颜色信息通道的R通道或RGB通道中。
19.根据条款18所述的装置,其中,所述依据待生成阴影精度要求将所述深度值写入所述颜色信息通道的操作具体包括:
在所述第一物体与游戏中当前玩家角色虚拟距离小于预设距离的情况下,所述深度值写入方式为写入所述颜色信息通道的RGB通道;
在所述第一物体与游戏中当前玩家角色虚拟距离大于预设距离的情况下,所述深度值写入方式为写入所述颜色信息通道的R通道。
20.根据条款19所述的装置,其中,在所述第一物体与游戏中当前玩家角色虚拟距离大于预设距离的情况下,将所述第一物体的像素点的深度值写入其颜色信息通道的R通道,所述写入过程为赋值过程。
21.根据条款19所述的装置,其中,在所述第一物体与游戏中当前玩家角色虚拟距离小于预设距离的情况下,将所述第一物体的像素点的深度值写入其颜色信息通道的RGB通道,所述写入过程为将所述深度值压缩成三部分,分别写入RGB通道。
22.根据条款15至21中任一项所述的装置,其中,所述当前像素点的像素值的调整步骤具体包括:
根据所述当前像素点及其相邻像素点各自在各颜色信息通道中的值和在透明通道中的值,将所述当前像素点在各颜色信息通道中的值调整为各颜色信息通道中的均值以及将所述当前像素点在透明通道中的值调整为透明通道中的均值;
根据所述当前像素点及其相邻像素点各自在各颜色信息通道中的值,获取其中各颜色信息通道中的最大值;
将所述当前像素点当前所采用的各颜色信息通道中的均值替换为相应颜色信息通道中的最大值。
23.根据条款22所述的装置,其中,所述相邻像素点为所述当前像素点的周围8个像素点。
24.根据条款15所述的装置,其中,在得到所述第一物体的所述第二阴影贴图之后,该装置还包括:
调整装置,用于针对每个处于所述第一物体的所述第二阴影贴图中的第二物体的像素点,根据该像素点的当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,得到所述第一物体的第三阴影贴图。
25.根据条款24所述的装置,其中,处于所述第一物体的所述第二阴影贴图中的所述第二物体的像素点通过如下方式判断:
如果所述第二物体的像素点的深度值大于所述第一物体的所述第二阴影贴图中该像素点的深度值,则该像素点处于所述第一物体的阴影中。
26.根据条款24所述的方法,其中,在所述第一物体与游戏中当前玩家角色虚拟距离大于预设距离的情况下,将所述第一物体的像素点的深度值写入其颜色信息通道的R通道,所述写入过程为赋值过程;所述第二阴影贴图中像素点的深度值为该像素点所述调整后的R通道的值。
27.根据条款24所述的方法,其中,在所述第一物体与游戏中当前玩家角色虚拟距离小于预设距离的情况下,将所述第一物体的像素点的深度值写入其颜色信息通道的RGB通道,所述写入过程为将所述深度值压缩成三部分,分别写入RGB通道;所述第二阴影贴图中像素点的深度值为按照解压算法对该像素点所述调整后的RGB通道的值计算出的值。
28.根据条款24至27中任一项所述的装置,其中,所述反向调整具体包括:
针对每个处于所述第一物体的所述第二阴影贴图中的所述第二物体的像素点,以1减去该像素点在透明通道的值后,分别乘以该像素点在各颜色信息通道的值。
29.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如条款1至14中任一项所述的方法。
30.一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如条款1至14中任一项所述的方法。
31.一种计算机程序产品,当所述计算机程序产品被计算机设备执行时实现如条款1至14中任一项所述的方法。
Claims (10)
1.一种阴影贴图生成方法,其中,包括以下步骤:
为待生成阴影的第一物体渲染第一阴影贴图,其中,所述第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征,在像素着色器中将所述第一物体的像素点的深度值写入到所述第一阴影贴图对应像素点的颜色信息通道中以及将所述第一物体的像素点的颜色值写到所述第一阴影贴图对应像素点的透明通道中,得到所述第一阴影贴图;
对所述第一阴影贴图中的每个像素点逐个进行模糊处理得到所述第一物体的第二阴影贴图,所述模糊处理包括结合当前像素点的相邻像素点的像素值,来调整所述当前像素点的像素值。
2.根据权利要求1所述的方法,其中,所述第一物体的像素点的深度值为该像素点相对于阴影相机的距离,所述第一物体的像素点的颜色值为预设值。
3.根据权利要求2所述的方法,其中,所述在像素着色器中将所述第一物体的像素点的深度值写入到所述第一阴影贴图对应像素点的颜色信息通道中,具体为依据待生成阴影精度要求将所述深度值写入所述颜色信息通道的R通道或RGB通道中。
4.根据权利要求1所述的方法,其中,在得到所述第一物体的所述第二阴影贴图之后,该方法还包括:
针对每个处于所述第一物体的所述第二阴影贴图中的第二物体的像素点,根据该像素点的当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,得到所述第一物体的第三阴影贴图。
5.一种阴影贴图生成装置,其中,包括:
渲染装置,用于为待生成阴影的第一物体渲染第一阴影贴图,其中,所述第一阴影贴图中的每个像素点的像素值由颜色信息通道RGB和透明通道A来表征,在像素着色器中将所述第一物体的像素点的深度值写入到所述第一阴影贴图对应像素点的颜色信息通道中以及将所述第一物体的像素点的颜色值写到所述第一阴影贴图对应像素点的透明通道中,得到所述第一阴影贴图;
模糊装置,用于对所述第一阴影贴图中的每个像素点逐个进行模糊处理得到所述第一物体的第二阴影贴图,所述模糊处理包括结合当前像素点的相邻像素点的像素值,来调整所述当前像素点的像素值。
6.根据权利要求5所述的装置,其中,所述第一物体的像素点的深度值为该像素点相对于阴影相机的距离,所述第一物体的像素点的颜色值为预设值。
7.根据权利要求5所述的装置,其中,在得到所述第一物体的所述第二阴影贴图之后,该装置还包括:
调整装置,用于针对每个处于所述第一物体的所述第二阴影贴图中的第二物体的像素点,根据该像素点的当前在透明通道的值对该像素点在各颜色信息通道的值进行反向调整,得到所述第一物体的第三阴影贴图。
8.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至4中任一项所述的方法。
10.一种计算机程序产品,当所述计算机程序产品被计算机设备执行时实现如权利要求1至4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010367850.0A CN111724313B (zh) | 2020-04-30 | 2020-04-30 | 一种阴影贴图生成方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010367850.0A CN111724313B (zh) | 2020-04-30 | 2020-04-30 | 一种阴影贴图生成方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111724313A true CN111724313A (zh) | 2020-09-29 |
CN111724313B CN111724313B (zh) | 2023-08-01 |
Family
ID=72563658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010367850.0A Active CN111724313B (zh) | 2020-04-30 | 2020-04-30 | 一种阴影贴图生成方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111724313B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112215936A (zh) * | 2020-10-16 | 2021-01-12 | 广州虎牙科技有限公司 | 图像渲染方法、装置、电子设备及存储介质 |
CN112274932A (zh) * | 2020-10-29 | 2021-01-29 | 完美世界(重庆)互动科技有限公司 | 游戏资源数据处理方法及装置、存储介质、计算机设备 |
CN113836705A (zh) * | 2021-09-06 | 2021-12-24 | 网易(杭州)网络有限公司 | 光照数据的处理方法、装置、存储介质和电子装置 |
CN115170722A (zh) * | 2022-07-05 | 2022-10-11 | 中科传媒科技有限责任公司 | 3d实时软阴影获取方法、装置和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055645A (zh) * | 2007-05-09 | 2007-10-17 | 北京金山软件有限公司 | 一种阴影实现的方法及装置 |
CN103198516A (zh) * | 2011-11-29 | 2013-07-10 | 苹果公司 | 动态图形界面阴影 |
CN109949401A (zh) * | 2019-03-14 | 2019-06-28 | 成都风际网络科技股份有限公司 | 一种移动平台的非静态物体非实时阴影渲染的方法 |
CN109993823A (zh) * | 2019-04-11 | 2019-07-09 | 腾讯科技(深圳)有限公司 | 阴影渲染方法、装置、终端及存储介质 |
US20200035004A1 (en) * | 2018-06-26 | 2020-01-30 | Here Global B.V. | Map generation system and method for generating an accurate building shadow |
-
2020
- 2020-04-30 CN CN202010367850.0A patent/CN111724313B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055645A (zh) * | 2007-05-09 | 2007-10-17 | 北京金山软件有限公司 | 一种阴影实现的方法及装置 |
CN103198516A (zh) * | 2011-11-29 | 2013-07-10 | 苹果公司 | 动态图形界面阴影 |
CN105678837A (zh) * | 2011-11-29 | 2016-06-15 | 苹果公司 | 动态图形界面阴影 |
US20200035004A1 (en) * | 2018-06-26 | 2020-01-30 | Here Global B.V. | Map generation system and method for generating an accurate building shadow |
CN109949401A (zh) * | 2019-03-14 | 2019-06-28 | 成都风际网络科技股份有限公司 | 一种移动平台的非静态物体非实时阴影渲染的方法 |
CN109993823A (zh) * | 2019-04-11 | 2019-07-09 | 腾讯科技(深圳)有限公司 | 阴影渲染方法、装置、终端及存储介质 |
Non-Patent Citations (2)
Title |
---|
JEFFREY K. NOEL ET AL: "The Shadow Map A General Contact Definition for Capturing the Dynamics of Biomolecular Folding and Function", 《THE JOURNAL OF PHYSICAL CHEMISTRY B》 * |
谭力恒等: "全球虚拟地理环境中实时阴影关键技术研究", 《系统仿真学报》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112215936A (zh) * | 2020-10-16 | 2021-01-12 | 广州虎牙科技有限公司 | 图像渲染方法、装置、电子设备及存储介质 |
CN112274932A (zh) * | 2020-10-29 | 2021-01-29 | 完美世界(重庆)互动科技有限公司 | 游戏资源数据处理方法及装置、存储介质、计算机设备 |
CN112274932B (zh) * | 2020-10-29 | 2024-02-27 | 完美世界(重庆)互动科技有限公司 | 游戏资源数据处理方法及装置、存储介质、计算机设备 |
CN113836705A (zh) * | 2021-09-06 | 2021-12-24 | 网易(杭州)网络有限公司 | 光照数据的处理方法、装置、存储介质和电子装置 |
CN115170722A (zh) * | 2022-07-05 | 2022-10-11 | 中科传媒科技有限责任公司 | 3d实时软阴影获取方法、装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111724313B (zh) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111724313B (zh) | 一种阴影贴图生成方法与装置 | |
CN107392988B (zh) | 利用投影几何失真用于以可变采样率渲染的系统、方法和计算机程序产品 | |
US10102603B2 (en) | Scheme for compressing vertex shader output parameters | |
US8704830B2 (en) | System and method for path rendering with multiple stencil samples per color sample | |
RU2419881C2 (ru) | Анизометрический синтез текстуры | |
CN111612882B (zh) | 图像处理方法、装置、计算机存储介质及电子设备 | |
CN107886552B (zh) | 贴图处理方法和装置 | |
JP4982498B2 (ja) | ベクトルグラフィック画像のアンチエイリアス | |
CN105574931B (zh) | 一种电子地图道路绘制方法及装置 | |
US9501860B2 (en) | Sparse rasterization | |
US10540789B2 (en) | Line stylization through graphics processor unit (GPU) textures | |
US7038678B2 (en) | Dependent texture shadow antialiasing | |
CN113240783B (zh) | 风格化渲染方法和装置、可读存储介质、电子设备 | |
JP2017062789A (ja) | グラフィックス処理装置、及びテクスチャリングのためのlodを決定する方法 | |
US9218679B2 (en) | Reduced bitcount polygon rasterization | |
EP1227443B1 (en) | System and method for fast and smooth rendering of lit, textured spheres | |
US11804008B2 (en) | Systems and methods of texture super sampling for low-rate shading | |
CN111739074B (zh) | 一种场景多点光源渲染方法及装置 | |
US10269168B2 (en) | Graphics processing systems | |
US11989807B2 (en) | Rendering scalable raster content | |
CN114387315A (zh) | 图像处理模型训练、图像处理方法、装置、设备及介质 | |
US11776179B2 (en) | Rendering scalable multicolored vector content | |
JP2011086235A (ja) | 画像処理装置、画像処理方法および画像処理プログラム | |
CN116957967A (zh) | 3d界面色差解决方法、系统、设备及介质 | |
JP2004054635A (ja) | 画像処理装置およびその方法 |
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 |