高光渲染方法、装置、电子设备及存储介质
文献发布时间:2023-06-19 19:20:08
技术领域
本发明涉及渲染技术领域,尤其涉及一种高光渲染方法、装置、电子设备及存储介质。
背景技术
为了渲染出渲染颗粒状高光反射(glitter)材质效果,可以由美术人员制作一张高精细的法线贴图,然后按照光照模型的算法,使用高精细的法线贴图中的数据作为法线,计算光照反射从而达到glitter效果,但是这种方式存在制作成本较高且不能复用的缺点。
为了解决上述缺点,现有方案通过美术人员编写染色器采样噪声贴图来制作所需法线分部函数,然后把游戏摄像机射线向量数据作为参数传入法线分部函数得到每个像素对应的法线数据,最后根据每个像素对应的法线数据计算光照模型的光照反射,但这种方式也存在光照模型计算复杂度高,性能开销大的缺点。
发明内容
本发明提供了一种高光渲染方法、装置、电子设备及存储介质,用于通过哈希函数来模拟光照模型的计算结果,从而减少性能开销。
本发明实施例的第一方面提供一种高光渲染方法,包括:获取摄像机坐标和待渲染模型的UV坐标;根据所述摄像机坐标和所述待渲染模型的UV坐标生成每个像素点的视线向量;根据所述待渲染模型的UV坐标和预置的哈希函数生成哈希高光函数,所述哈希高光函数用于指示单元格的高光效果,其中,所述单元格包括多个像素点;根据所述哈希高光函数、所述每个像素点的视线向量和所述待渲染模型的UV坐标对所述待渲染模型进行渲染,得到高光效果的初始模型。
本发明实施例的第二方面提供了一种高光渲染装置,包括:获取模块,用于获取摄像机坐标和待渲染模型的UV坐标;第一生成模块,用于根据所述摄像机坐标和所述待渲染模型的UV坐标生成每个像素点的视线向量;第二生成模块,用于根据所述待渲染模型的UV坐标和预置的哈希函数生成哈希高光函数,所述哈希高光函数用于指示单元格的高光效果,其中,所述单元格包括多个像素点;渲染模块,用于根据所述哈希高光函数、所述每个像素点的视线向量和所述待渲染模型的UV坐标对所述待渲染模型进行渲染,得到高光效果的初始模型。
本发明实施例的第三方面提供了一种电子设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述电子设备执行上述的高光渲染方法。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的高光渲染方法。
本发明实施例提供的技术方案中,获取摄像机坐标和待渲染模型的UV坐标;根据摄像机坐标和待渲染模型的UV坐标生成每个像素点的视线向量;根据待渲染模型的UV坐标和预置的哈希函数生成哈希高光函数,哈希高光函数用于指示单元格的高光效果,其中,所述单元格包括多个像素点;根据哈希高光函数、每个像素点的视线向量和待渲染模型的UV坐标对待渲染模型进行渲染,得到高光效果的初始模型。本发明实施例,通过哈希函数来计算摄像机向量的哈希值,模拟光照模型的法线计算结果,从而实现高光的反射效果,避免了对光照模型的渲染计算,降低了性能开销。
附图说明
图1为本发明实施例中高光渲染方法的一个实施例示意图;
图2为本发明实施例中高光渲染方法的另一个实施例示意图;
图3为本发明实施例中单元格的高光效果的一个示意图;
图4为本发明实施例中单元格的高光效果的另一个示意图;
图5为本发明实施例中高光渲染方法的另一个实施例示意图;
图6为本发明实施例中高光渲染装置的一个实施例示意图;
图7为本发明实施例中电子设备的一个实施例示意图。
具体实施方式
本发明提供了一种高光渲染方法、装置、电子设备及存储介质,用于通过哈希函数来计算摄像机向量的哈希值,模拟光照模型的法线计算结果,从而减少性能开销。
可以理解的是,本发明可以应用在电子设备上,作为示例而非限定的是,电子设备可为移动终端,本申请以移动终端为例进行说明。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1,本发明实施例提供的高光渲染方法的一个流程图,具体包括:
101、获取摄像机坐标和待渲染模型的UV坐标。
需要说明的是,摄像机坐标是在游戏引擎中的世界空间坐标体系下,摄像机到渲染目标像素的三维向量,待渲染模型的UV坐标包括了多个像素的坐标,其中,待渲染模型的UV坐标是一个二维参数,而摄像机坐标是一个三维参数。
102、根据摄像机坐标和待渲染模型的UV坐标生成每个像素点的视线向量。
将摄像机坐标和待渲染模型的UV坐标中各个像素点的坐标取差值,得到每个像素点的视线向量,视线向量即摄像机在世界空间下的坐标位置到染色器目标像素在世界空间坐标位置的向量,随着摄像机坐标位置的变化,每个像素点的视线向量也会发生变化。
需要说明的是,从摄像机的坐标位置看向各个像素点,即通过每个像素点对应的视线向量计算各个像素点高光,替代了采样噪声纹理贴图的过程,减少带宽消耗,并且因为不使用噪声纹理贴图,避免了出现纹理重复的问题。
103、根据待渲染模型的UV坐标和预置的哈希函数生成哈希高光函数,哈希高光函数用于指示单元格的高光效果,其中,单元格包括多个像素点。
需要说明的是,预置的哈希函数是具有生成伪随机数的特征,即输入固定参数会返回固定结果。因此,将摄像机的视线向量与待渲染模型的表面uv坐标作为参数输入哈希函数,最后会得到每个单元格的固定发光结果,即单元格的高光效果。
例如,假设输入的目标UV坐标为(1,1),那么将目标UV坐标与预置的浮点参数进行第一次相乘,例如,预置的浮点参数取(123.339,456.532),第一次相乘结果为(123.339,456.532),对第一次相乘结果取小数部分,得到第一小数(0.339,0.532),将第一小数与第一预设坐标(例如,(23.4,23.4))相加,得到第一求和结果(23.739,23.932),将第一小数与第一求和结果相乘,得到第二相乘结果(8.047521,12.731824),然后将第二相乘结果与第一小数求和,得到第二求和结果(8.386521,13.263824),将第二求和结果的第一通道值和第二通道值相乘,得到第三相乘结果111.237338516,对第三相乘结果取小数部分,得到第二小数,0.237338516,第二小数即为哈希函数生成的一个伪随机数,即哈希高光函数的一个单元格高光效果的反光值,根据反光值生成对应的高光效果。
可以理解的是,根据引擎的不同,第二小数的小数位数量也不同,可以根据实际情况进行设置,此处不做限定。
104、根据哈希高光函数、每个像素点的视线向量和待渲染模型的UV坐标对待渲染模型进行渲染,得到高光效果的初始模型。
在渲染过程中可以调用哈希高光函数1次,也可以调用哈希高光函数2次,还可以调用哈希高光函数3次及以上。
例如,当渲染过程中调用了哈希高光函数1次时,根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标与预设的UV缩放值,生成第一计算结果,UV缩放值用于控制颗粒状高光的形状大小;根据第一计算结果对待渲染模型进行渲染,生成高光效果的初始模型。其中,将视线向量与待渲染模型的UV坐标作为参数连接到哈希高光函数的输入端,根据哈希高光函数的第一计算结果进行渲染。
例如,当渲染过程中调用了哈希高光函数2次时,将视线向量与待渲染模型的UV坐标作为参数连接到哈希高光函数的输入端,根据哈希高光函数的两次计算结果进行渲染。其中,两次的UV参数必须不一致,目的是为了避免2次计算的单元格的高光效果完全一样,因为最后的结果要让两次计算的结果相乘得出一个单元格发光频率更低的计算结果。例如,某一个单元格第一次计算结果为0.5,第二次(经过坐标偏移后)计算结果为0.15,那么两次相乘就是0.075,总的来说目的就是为了让整体的单元格发光频率更低了,增强随机感。其中,高光效果的初始模型为呈现颗粒状。
需要说明的是,每增加一次哈希高光函数的调用,都需要进行一次计算,新增的计算过程中使用的UV参数与前几次计算过程中使用的UV参数要有所区别,因此,当渲染过程中调用了哈希高光函数3次时,根据3次的计算结果进行渲染。当调用次数过多时,可能导致高光效果中每个单元的发光概率太低,因此结合实际需要,本申请实施例以2次为例进行说明,即让整体的单元格发光频率更低,又避免了发光频率的取值太小。
可以理解的是,在待渲染模型的UV坐标条件下,通过哈希函数计算摄像机向量对应的哈希值,并将哈希值确定为单元格的反光值,成功模拟了通过法线分布函数计算法线的过程,避免了大量的光照模型渲染计算,从而节省了硬件性能开销。
本发明实施例,通过哈希函数来计算摄像机向量的哈希值,模拟光照模型的法线计算结果,从而实现颗粒状高光的反射效果,避免了对光照模型的渲染计算,降低了性能开销。
请参阅图2,本发明实施例提供的高光渲染方法的另一个流程图,具体包括:
201、获取摄像机坐标和待渲染模型的UV坐标。
需要说明的是,摄像机坐标是在游戏引擎中的世界空间坐标体系下,摄像机到渲染目标像素的三维向量,待渲染模型的UV坐标包括了多个像素的坐标,其中,待渲染模型的UV坐标是一个二维参数,而摄像机坐标是一个三维参数。
202、根据摄像机坐标和待渲染模型的UV坐标生成每个像素点的视线向量。
具体的,根据待渲染模型的UV坐标确定每个像素点的像素坐标;将每个像素点的像素坐标分别减去摄像机坐标,生成多个初始向量;将多个初始向量进行归一化处理,得到多个归一化向量;将多个归一化向量分别与预置的摄像机缩放值进行相乘,得到多个视线向量,其中,每个视线向量对应一个不同的像素点。其中,根据待渲染模型的UV坐标确定每个像素点的像素坐标具体包括:获取每个像素点的UV坐标,然后将每个像素点的UV坐标与预设倍数进行相乘,得到每个像素点的候选坐标,通过Frac函数从每个像素点的候选坐标中提取小数部分,得到每个像素点的像素坐标。其中,预设倍数为常数,根据实际情况进行设置,像素点的像素坐标是指每个像素点在单元格坐标系内的像素坐标,单元格坐标系是指UV坐标系放大预设倍数后得到的坐标系。
可以理解的是,该步骤计算将会得到一个随摄像机位置变化而变化的一维浮点数值(float)并且该值的变化系数受到摄像机缩放值(camera_scale)影响,其关系是该摄像机缩放值越小,摄像机移动产生的变化之越小,反之越大。
需要说明的是,从摄像机的坐标位置看向各个像素点,即通过每个像素点对应的视线向量计算各个像素点高光,替代了采样噪声纹理贴图的过程,减少带宽消耗,并且因为不使用噪声纹理贴图,避免了出现纹理重复的问题。
203、根据待渲染模型的UV坐标将待渲染模型划分为规格大小相同的多个单元格,得到单元格坐标。
具体的,根据预置的网格参数对待渲染模型的UV坐标进行划分,得到划分后的UV坐标;对划分后的UV坐标进行向下取整,得到单元格坐标。例如,假设某个像素点的坐标为(12.5,17.25),经过floor函数向下取整后,得到的单元格坐标为(12,17)。
需要说明的是,网格参数用于指示网格的规格大小,例如,网格参数除了可以指示包含的像素点数量,还可以指示像素点的分布比例,例如,可以规定单元格的长和宽都是10个像素单位,长和宽的像素单位数量可以相同也可以不同。
204、将单元格坐标输入预置的哈希函数,得到每个单元格的反光值,哈希函数用于生成伪随机数。
需要说明的是,预置的哈希函数生成的伪随机数,是通过将二维的单元格坐标转换为一维的反光值,只要输入的参数不变,该功能函数永远返回一个固定的结果。将摄像机的视线向量变化产生的浮点float值加入到了hash21函数(哈希函数)计算出的随机值上,并且用sin函数去计算该结果得到了一个-1到1之间浮点float值。因为每个像素用哈希函数计算得到的随机值是固定值,但是因为视线向量的变化(例如,我朝世界空间的x方向移动镜头一段距离,那么用视线向量计算出的输入值就会改变),使用sin函数得到的值就会改变,但只要返回刚刚的地点就会得到与之前一样的计算结果。
此外,当输入的单元格坐标改变,该哈希函数返回的值也会改变,并且大概率不会与之前其他输入参数得到结果相同,即具有一定的伪随机性。当没有视线向量参与计算时,得到的单元格的高光效果如图3所示,整体呈颗粒状。
205、根据每个单元格的反光值、每个视线向量的长度和预置的平滑函数生成哈希高光函数,哈希高光函数用于指示单元格的高光效果。
根据每个单元格的反光值、每个视线向量的长度和预置的平滑函数生成哈希高光函数,哈希高光函数用于指示单元格的高光效果。当有视线向量参与计算时,得到的单元格的高光效果如图4所示。
可以理解的是,图3和图4中的颗粒状高光效果是由多个单元格的高光组合得到,每个单元格的高光效果根据使用的函数差异,可以呈现不同的形状,例如可以是方形、圆形、椭圆形或三角形,具体此处不做限定。图3和图4中的圆形高光仅作为一种实现方式。
206、根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标与预设的UV缩放值,生成第一计算结果,UV缩放值用于控制颗粒状高光的形状大小。
具体的,将待渲染模型的UV坐标与预设的UV缩放值相乘,得到第一缩放UV坐标;将每个像素点的视线向量和第一缩放UV坐标输入第一哈希高光函数,得到第一计算结果。
例如,当预设的UV缩放值为100时,即将0到1的UV坐标,变成100*100的单元格,每个单元格的规格为0.01。假设预设的UV缩放值为50时,得到50*50的单元格,每个单元格的规格为0.02。本步骤中调用了一次哈希高光函数,命名为第一哈希高光函数。
207、根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标、预设的UV偏移值与预设的UV缩放值,生成第二计算结果。
具体的,将待渲染模型的UV坐标与预设的UV偏移值相加,得到偏移UV坐标;将偏移UV坐标与预设的UV缩放值相乘,得到第二缩放UV坐标;将每个像素点的视线向量和第二缩放UV坐标输入第二哈希高光函数,得到第二计算结果。例如,当预设的UV缩放值为100,预设的UV偏移值为0.5时,即将0.5到1.5的UV坐标,变成100*100的单元格,每个单元格的规格为0.05。假设UV坐标为(1,1),那么偏移UV坐标为(1.5,1.5),进行缩放后,得到的第二缩放UV坐标为(0.015,0.015),将视线向量和第二缩放UV坐标输入到哈希高光函数中,得到第二计算结果。本步骤中也调用了一次哈希高光函数,命名为第二哈希高光函数。
208、根据第一计算结果和第二计算结果对待渲染模型进行渲染,生成高光效果的初始模型。
具体的,将第一计算结果和第二计算结果相乘,得到第一乘积;根据第一乘积对待渲染模型进行渲染,得到高光效果的初始模型。
在渲染过程中调用了哈希高光函数2次,将视线向量与待渲染模型的UV坐标作为参数连接到哈希高光函数的输入端,其中,两次的UV参数必须不一致,目的是为了避免2次计算的单元格的高光效果完全一样,因为最后的结果要让两次计算的结果相乘得出一个单元格发光频率更低的计算结果。例如,某一个单元格第一次计算结果为0.5,第二次(经过坐标偏移后)计算结果为0.15,那么两次相乘就是0.075,总的来说目的就是为了让整体的单元格发光频率更低了,增强随机感。其中,高光效果的初始模型为呈现颗粒状。
需要说明的是,在传统渲染颗粒状高光glitter的方式下,因为需要使用法线分布函数计算法线,所以需要用到大量的计算资源,而本实施例中没有计算法线分布函数的过程,所以所需要的计算资源很小,移动端完全可以运行,提高了应用范围。
本发明实施例,在待渲染模型的UV坐标条件下,通过哈希函数计算摄像机向量对应的哈希值,并将哈希值确定为单元格的反光值,成功模拟了通过光照模型的法线分布函数计算法线的过程,从而实现颗粒状高光的反射效果,避免了对光照模型的渲染计算,降低了性能开销。
请参阅图5,本发明实施例提供的高光渲染方法的另一个流程图,具体包括:
501、获取摄像机坐标和待渲染模型的UV坐标。
502、根据摄像机坐标和待渲染模型的UV坐标生成每个像素点的视线向量。
503、根据待渲染模型的UV坐标将待渲染模型划分为规格大小相同的多个单元格,得到单元格坐标。
504、将单元格坐标输入预置的哈希函数,得到每个单元格的反光值,哈希函数用于生成伪随机数。
505、根据每个单元格的反光值、每个视线向量的长度和预置的平滑函数生成哈希高光函数,哈希高光函数用于指示单元格的高光效果。
506、根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标与预设的UV缩放值,生成第一计算结果,UV缩放值用于控制颗粒状高光的形状大小。
507、根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标、预设的UV偏移值与预设的UV缩放值,生成第二计算结果。
508、根据第一计算结果和第二计算结果对待渲染模型进行渲染,生成高光效果的初始模型。
具体的,将第一计算结果和第二计算结果相乘,得到第一乘积;根据第一乘积对待渲染模型进行渲染,得到高光效果的初始模型。
步骤501-508与步骤201-208类似,具体此处不再赘述。
509、调整高光效果的初始模型中高光亮度和高光颜色,生成高光效果的目标模型。
具体的,对高光效果的初始模型进行解析,得到第一乘积;将第一乘积与预置的亮度参数进行相乘,得到第二乘积,亮度参数用于控制颗粒状高光的亮度大小;将第二乘积与预设的颜色参数相乘,得到第三乘积;将第三乘积连接到待渲染模型的自发光颜色参数,生成颗粒状高光的目标模型。
需要说明的是,第一乘积是初始模型中计算得到的各个单元格的反光值,通过预置的亮度参数进行优化,使渲染结果与传统渲染方式生成的颗粒状高光效果更相似。其中,预置的亮度参数取值越大,表示亮度越大;预设的颜色参数可以根据实际情况进行调整,例如,可以是(0,0.413,1),也可以是(0,0.746,1),具体此处不做限定。
本发明实施例,在待渲染模型的UV坐标条件下,通过哈希函数计算摄像机向量对应的哈希值,并将哈希值确定为单元格的反光值,成功模拟了通过光照模型的法线分布函数计算法线的过程,从而实现颗粒状高光的反射效果,避免了对光照模型的渲染计算,降低了性能开销。
上面对本发明实施例中高光渲染方法进行了描述,下面对本发明实施例中高光渲染装置进行描述,请参阅图6,本发明实施例中高光渲染装置的一个实施例包括:
获取模块601,用于获取摄像机坐标和待渲染模型的UV坐标;
第一生成模块602,用于根据所述摄像机坐标和所述待渲染模型的UV坐标生成每个像素点的视线向量;
第二生成模块603,用于根据所述待渲染模型的UV坐标和预置的哈希函数生成哈希高光函数,所述哈希高光函数用于指示单元格的高光效果,其中,所述单元格包括多个像素点;
渲染模块604,用于根据所述哈希高光函数、所述每个像素点的视线向量和所述待渲染模型的UV坐标对所述待渲染模型进行渲染,得到高光效果的初始模型。
在一种可行的实施方式中,渲染模块604包括:
第一生成单元6041,用于根据所述每个像素点的视线向量、所述哈希高光函数、所述待渲染模型的UV坐标与预设的UV缩放值,生成第一计算结果,所述UV缩放值用于控制颗粒状高光的形状大小;
渲染单元6042,用于根据第一计算结果对所述待渲染模型进行渲染,生成高光效果的初始模型。
在一种可行的实施方式中,渲染模块604还包括:
所述第一生成单元6041,用于根据所述每个像素点的视线向量、所述哈希高光函数、所述待渲染模型的UV坐标与预设的UV缩放值,生成第一计算结果,所述UV缩放值用于控制颗粒状高光的形状大小;
第二生成单元6043,用于根据所述每个像素点的视线向量、所述哈希高光函数、所述待渲染模型的UV坐标、预设的UV偏移值与预设的UV缩放值,生成第二计算结果;
所述渲染单元6042,还用于根据第一计算结果和第二计算结果对所述待渲染模型进行渲染,生成高光效果的初始模型。
在一种可行的实施方式中,第一生成单元6041具体用于:
将所述待渲染模型的UV坐标与预设的UV缩放值相乘,得到第一缩放UV坐标;
将所述每个像素点的视线向量和所述第一缩放UV坐标输入第一哈希高光函数,得到第一计算结果。
在一种可行的实施方式中,第二生成单元6043具体用于:
将所述待渲染模型的UV坐标与预设的UV偏移值相加,得到偏移UV坐标;
将所述偏移UV坐标与预设的UV缩放值相乘,得到第二缩放UV坐标;
将所述每个像素点的视线向量和所述第二缩放UV坐标输入第二哈希高光函数,得到第二计算结果。
在一种可行的实施方式中,所述渲染单元6042具体用于:
将所述第一计算结果和所述第二计算结果相乘,得到第一乘积;
根据所述第一乘积对所述待渲染模型进行渲染,得到颗粒状高光的初始模型。
在一种可行的实施方式中,所述高光渲染装置还包括:
调整模块605,用于调整所述高光效果的初始模型中高光亮度和高光颜色,生成高光效果的目标模型。
在一种可行的实施方式中,所述调整模块605具体用于:
对所述颗粒状高光的初始模型进行解析,得到第一乘积;
将所述第一乘积与预置的亮度参数进行相乘,得到第二乘积,所述亮度参数用于控制颗粒状高光的亮度大小;
将所述第二乘积与预设的颜色参数相乘,得到第三乘积;
将所述第三乘积连接到所述待渲染模型的自发光颜色参数,生成高光效果的目标模型。
在一种可行的实施方式中,所述第二生成模块603包括:
划分单元6031,用于根据所述待渲染模型的UV坐标将所述待渲染模型划分为规格大小相同的多个单元格,得到单元格坐标;
输入单元6032,用于将所述单元格坐标输入预置的哈希函数,得到每个单元格的反光值,所述哈希函数用于生成伪随机数;
第三生成单元6033,用于根据每个单元格的反光值、每个视线向量的长度和预置的平滑函数生成哈希高光函数,所述哈希高光函数用于指示单元格的高光效果。
在一种可行的实施方式中,所述划分单元6031具体用于:
根据预置的网格参数对所述待渲染模型的UV坐标进行划分,得到划分后的UV坐标;
对所述划分后的UV坐标进行向下取整,得到单元格坐标。
在一种可行的实施方式中,所述第一生成模块602具体用于:
根据所述待渲染模型的UV坐标确定每个像素点的像素坐标;
将所述每个像素点的像素坐标分别减去所述摄像机坐标,生成多个初始向量;
将所述多个初始向量进行归一化处理,得到多个归一化向量;
将所述多个归一化向量分别与预置的摄像机缩放值进行相乘,得到多个视线向量,其中,每个视线向量对应一个不同的像素点。
本发明实施例,在待渲染模型的UV坐标条件下,通过哈希函数计算摄像机向量对应的哈希值,并将哈希值确定为单元格的反光值,成功模拟了通过光照模型的法线分布函数计算法线的过程,从而实现颗粒状高光的反射效果,避免了对光照模型的渲染计算,降低了性能开销。
图7是本发明实施例提供的一种电子设备的结构示意图,该电子设备700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processingunits,CPU)710(例如,一个或一个以上处理器)和存储器720,一个或一个以上存储应用程序733或数据732的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器720和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对电子设备700中的一系列指令操作。更进一步地,处理器710可以设置为与存储介质730通信,在电子设备700上执行存储介质730中的一系列指令操作。
电子设备700还可以包括一个或一个以上电源740,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口760,和/或,一个或一个以上操作设备731,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图7示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
作为示例而非限定的是,电子设备700可为移动终端。
本发明实施例提供了一种电子设备,包括:存储器和至少一个处理器,存储器中存储有指令;至少一个处理器调用存储器中的指令,以使得电子设备执行上述的高光渲染方法,具体方法步骤包括:获取摄像机坐标和待渲染模型的UV坐标;根据摄像机坐标和待渲染模型的UV坐标生成每个像素点的视线向量;根据待渲染模型的UV坐标和预置的哈希函数生成哈希高光函数,哈希高光函数用于指示单元格的高光效果,其中,单元格包括多个像素点;根据哈希高光函数、每个像素点的视线向量和待渲染模型的UV坐标对待渲染模型进行渲染,得到高光效果的初始模型。通过哈希函数来计算摄像机向量的哈希值,模拟光照模型的法线计算结果,从而实现颗粒状高光的反射效果,避免了对光照模型的渲染计算,降低了性能开销。
上述根据哈希高光函数、每个像素点的视线向量和待渲染模型的UV坐标对待渲染模型进行渲染,得到高光效果的初始模型,包括:根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标与预设的UV缩放值,生成第一计算结果,UV缩放值用于控制颗粒状高光的形状大小;根据第一计算结果对待渲染模型进行渲染,生成高光效果的初始模型。该方式,对哈希高光函数的调用过程进行了细化,通过UV坐标值得到第一计算结果,根据第一计算结果渲染得到高光效果的初始模型,实现颗粒状高光的渲染效果。
上述根据哈希高光函数、每个像素点的视线向量和待渲染模型的UV坐标对待渲染模型进行渲染,得到高光效果的初始模型,包括:根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标与预设的UV缩放值,生成第一计算结果,UV缩放值用于控制颗粒状高光的形状大小;根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标、预设的UV偏移值与预设的UV缩放值,生成第二计算结果;根据第一计算结果和第二计算结果对待渲染模型进行渲染,生成高光效果的初始模型。该方式,对哈希高光函数的调用过程进行了细化,通过不同的UV坐标值得到不同的两个计算结果,并将两个计算结果相乘,降低了每个颗粒状高光的发光频率,增强了随机性。
上述根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标与预设的UV缩放值,生成第一计算结果,包括:将待渲染模型的UV坐标与预设的UV缩放值相乘,得到第一缩放UV坐标;将每个像素点的视线向量和第一缩放UV坐标输入第一哈希高光函数,得到第一计算结果。该方式,对第一计算结果进行了细化,通过预设的UV缩放值,将待渲染模型的UV坐标划分为多个单元格的高光效果,增加了高光的颗粒感。
上述根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标、预设的UV偏移值与预设的UV缩放值,生成第二计算结果,包括:将待渲染模型的UV坐标与预设的UV偏移值相加,得到偏移UV坐标;将偏移UV坐标与预设的UV缩放值相乘,得到第二缩放UV坐标;将每个像素点的视线向量和第二缩放UV坐标输入第二哈希高光函数,得到第二计算结果。该方式,对第二计算结果进行了细化,通过预设的UV缩放值,将待渲染模型的UV坐标划分为多个单元格的高光效果,增加了高光的颗粒感。
上述根据第一计算结果和第二计算结果对待渲染模型进行渲染,生成高光效果的初始模型,包括:将第一计算结果和第二计算结果相乘,得到第一乘积;根据第一乘积对待渲染模型进行渲染,得到高光效果的初始模型。该方式,将两次计算结果进行相乘,减小了每个单元格的反光值,降低了颗粒状高光的发光频率。
上述在根据哈希高光函数、每个像素点的视线向量和待渲染模型的UV坐标对待渲染模型进行渲染,得到高光效果的初始模型之后,还包括:调整高光效果的初始模型中高光亮度和高光颜色,生成高光效果的目标模型。该方式,追加了对模型的高光亮度和高光颜色的优化过程,提高了颗粒状高光的反射效果。
上述调整高光效果的初始模型中高光亮度和高光颜色,生成高光效果的目标模型,包括:对高光效果的初始模型进行解析,得到第一乘积;将第一乘积与预置的亮度参数进行相乘,得到第二乘积,亮度参数用于控制颗粒状高光的亮度大小;将第二乘积与预设的颜色参数相乘,得到第三乘积;将第三乘积连接到待渲染模型的自发光颜色参数,生成高光效果的目标模型。该方式,对优化过程进行了细化,引入了颜色参数和亮度参数,提供了具体的优化方式,增强了颗粒状高光的反射效果。
上述根据待渲染模型的UV坐标和预置的哈希函数生成哈希高光函数,哈希高光函数用于指示单元格的高光效果,包括:根据待渲染模型的UV坐标将待渲染模型划分为规格大小相同的多个单元格,得到单元格坐标;将单元格坐标输入预置的哈希函数,得到每个单元格的反光值,哈希函数用于生成伪随机数;根据每个单元格的反光值、每个视线向量的长度和预置的平滑函数生成哈希高光函数,哈希高光函数用于指示单元格的高光效果。该方式,对哈希高光函数的生成过程进行了细化,避免了计算法线分布函数,降低了计算开销。
上述根据待渲染模型的UV坐标将待渲染模型划分为规格大小相同的多个单元格,得到单元格坐标,包括:根据预置的网格参数对待渲染模型的UV坐标进行划分,得到划分后的UV坐标;对划分后的UV坐标进行向下取整,得到单元格坐标。该方式,对单元格坐标的确定过程进行了细化,提供了一种具体实施方式,提高了计算效率。
上述根据摄像机坐标和待渲染模型的UV坐标生成每个像素点的视线向量,包括:根据待渲染模型的UV坐标确定每个像素点的像素坐标;将每个像素点的像素坐标分别减去摄像机坐标,生成多个初始向量;将多个初始向量进行归一化处理,得到多个归一化向量;将多个归一化向量分别与预置的摄像机缩放值进行相乘,得到多个视线向量,其中,每个视线向量对应一个不同的像素点。该方式,对视线向量的生成过程进行了细化,减少了计算开销,增加了应用范围。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述高光渲染方法的步骤,步骤具体包括:
获取摄像机坐标和待渲染模型的UV坐标;根据摄像机坐标和待渲染模型的UV坐标生成每个像素点的视线向量;根据待渲染模型的UV坐标和预置的哈希函数生成哈希高光函数,哈希高光函数用于指示单元格的高光效果,其中,单元格包括多个像素点;根据哈希高光函数、每个像素点的视线向量和待渲染模型的UV坐标对待渲染模型进行渲染,得到高光效果的初始模型。通过哈希函数来计算摄像机向量的哈希值,模拟光照模型的法线计算结果,从而实现颗粒状高光的反射效果,避免了对光照模型的渲染计算,降低了性能开销。
上述根据哈希高光函数、每个像素点的视线向量和待渲染模型的UV坐标对待渲染模型进行渲染,得到高光效果的初始模型,包括:根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标与预设的UV缩放值,生成第一计算结果,UV缩放值用于控制颗粒状高光的形状大小;根据第一计算结果对待渲染模型进行渲染,生成高光效果的初始模型。该方式,对哈希高光函数的调用过程进行了细化,通过UV坐标值得到第一计算结果,根据第一计算结果渲染得到高光效果的初始模型,实现颗粒状高光的渲染效果。
上述根据哈希高光函数、每个像素点的视线向量和待渲染模型的UV坐标对待渲染模型进行渲染,得到高光效果的初始模型,包括:根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标与预设的UV缩放值,生成第一计算结果,UV缩放值用于控制颗粒状高光的形状大小;根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标、预设的UV偏移值与预设的UV缩放值,生成第二计算结果;根据第一计算结果和第二计算结果对待渲染模型进行渲染,生成高光效果的初始模型。该方式,对哈希高光函数的调用过程进行了细化,通过不同的UV坐标值得到不同的两个计算结果,并将两个计算结果相乘,降低了每个颗粒状高光的发光频率,增强了随机性。
上述根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标与预设的UV缩放值,生成第一计算结果,包括:将待渲染模型的UV坐标与预设的UV缩放值相乘,得到第一缩放UV坐标;将每个像素点的视线向量和第一缩放UV坐标输入第一哈希高光函数,得到第一计算结果。该方式,对第一计算结果进行了细化,通过预设的UV缩放值,将待渲染模型的UV坐标划分为多个单元格的高光效果,增加了高光的颗粒感。
上述根据每个像素点的视线向量、哈希高光函数、待渲染模型的UV坐标、预设的UV偏移值与预设的UV缩放值,生成第二计算结果,包括:将待渲染模型的UV坐标与预设的UV偏移值相加,得到偏移UV坐标;将偏移UV坐标与预设的UV缩放值相乘,得到第二缩放UV坐标;将每个像素点的视线向量和第二缩放UV坐标输入第二哈希高光函数,得到第二计算结果。该方式,对第二计算结果进行了细化,通过预设的UV缩放值,将待渲染模型的UV坐标划分为多个单元格的高光效果,增加了高光的颗粒感。
上述根据第一计算结果和第二计算结果对待渲染模型进行渲染,生成颗粒状高光的初始模型,包括:将第一计算结果和第二计算结果相乘,得到第一乘积;根据第一乘积对待渲染模型进行渲染,得到颗粒状高光的初始模型。该方式,将两次计算结果进行相乘,减小了每个单元格的反光值,降低了颗粒状高光的发光频率。
上述在根据哈希高光函数、每个像素点的视线向量和待渲染模型的UV坐标对待渲染模型进行渲染,得到高光效果的初始模型之后,还包括:调整高光效果的初始模型中高光亮度和高光颜色,生成高光效果的目标模型。该方式,追加了对模型的高光亮度和高光颜色的优化过程,提高了颗粒状高光的反射效果。
上述调整高光效果的初始模型中高光亮度和高光颜色,生成高光效果的目标模型,包括:对高光效果的初始模型进行解析,得到第一乘积;将第一乘积与预置的亮度参数进行相乘,得到第二乘积,亮度参数用于控制颗粒状高光的亮度大小;将第二乘积与预设的颜色参数相乘,得到第三乘积;将第三乘积连接到待渲染模型的自发光颜色参数,生成高光效果的目标模型。该方式,对优化过程进行了细化,引入了颜色参数和亮度参数,提供了具体的优化方式,增强了颗粒状高光的反射效果。
上述根据待渲染模型的UV坐标和预置的哈希函数生成哈希高光函数,哈希高光函数用于指示单元格的高光效果,包括:根据待渲染模型的UV坐标将待渲染模型划分为规格大小相同的多个单元格,得到单元格坐标;将单元格坐标输入预置的哈希函数,得到每个单元格的反光值,哈希函数用于生成伪随机数;根据每个单元格的反光值、每个视线向量的长度和预置的平滑函数生成哈希高光函数,哈希高光函数用于指示单元格的高光效果。该方式,对哈希高光函数的生成过程进行了细化,避免了计算法线分布函数,降低了计算开销。
上述根据待渲染模型的UV坐标将待渲染模型划分为规格大小相同的多个单元格,得到单元格坐标,包括:根据预置的网格参数对待渲染模型的UV坐标进行划分,得到划分后的UV坐标;对划分后的UV坐标进行向下取整,得到单元格坐标。该方式,对单元格坐标的确定过程进行了细化,提供了一种具体实施方式,提高了计算效率。
上述根据摄像机坐标和待渲染模型的UV坐标生成每个像素点的视线向量,包括:根据待渲染模型的UV坐标确定每个像素点的像素坐标;将每个像素点的像素坐标分别减去摄像机坐标,生成多个初始向量;将多个初始向量进行归一化处理,得到多个归一化向量;将多个归一化向量分别与预置的摄像机缩放值进行相乘,得到多个视线向量,其中,每个视线向量对应一个不同的像素点。该方式,对视线向量的生成过程进行了细化,减少了计算开销,增加了应用范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
- 小程序的界面渲染方法、装置、电子设备和存储介质
- 在canvas中渲染数据的方法、装置、电子设备及存储介质
- 图像光效处理方法和装置、电子设备、存储介质
- 电子设备的显示控制方法、装置、电子设备和存储介质
- 电子设备控制方法及装置、电子设备及存储介质
- 高光渲染方法、装置、介质及电子设备
- 高光渲染方法、装置、介质及电子设备