一种光照颜色显示方法、装置、电子设备及存储介质制造方法及图纸

技术编号:34092447 阅读:62 留言:0更新日期:2022-07-11 21:31
本发明专利技术涉及一种光照颜色显示方法、装置、电子设备及存储介质。本发明专利技术所述的一种光照颜色显示方法包括:获取画面中所有点光源的坐标和颜色;针对每一个待显示光照颜色的像素点,根据点光源的坐标,计算像素点对应的每个点光源的衰减值;根据所有点光源的坐标和颜色,计算每个像素点对应的每个点光源的单位光向量;根据单位光向量,计算每个像素点对应每个点光源的漫反射值和镜面反射值;根据漫反射值、镜面反射值和预定义环境光,计算每个像素点对应的光照颜色;获取画面预设的透明度值,根据透明度值和像素点对应的光照颜色,显示像素点的光照颜色。本发明专利技术所述的一种光照颜色显示方法,将光源交叉处光的颜色混合,提高了场景最终的着色效果。终的着色效果。终的着色效果。

【技术实现步骤摘要】
一种光照颜色显示方法、装置、电子设备及存储介质


[0001]本专利技术涉及光照渲染
,特别是涉及一种光照颜色显示方法、装置、电子设备及存储介质。

技术介绍

[0002]构建游戏场景的过程中,通常需要布置各种光源。不同的光源之间也有较大的区别。点光源与其他光源最主要的区别在于,点光源只会对以这个灯光为光源点向各个方向散发光线,而且它的的光照强度会随着沿着该点光源所在的位置发出的光线越来越弱。
[0003]游戏场景中的光照设置会直接影响游戏场景整体的渲染效果,比如当遇到像舞台这样的特殊场景时,则会需要大量的点光源。但是在同一场景中存在当一个物体周围放置了多个点光源的时候,该物体在固定范围内只接受和它距离最近的光源对它的影响,使得最终的环境无法到达想要的效果。
[0004]Unity通用渲染管线(Universal Render Pipeline,URP)中的默认材质着色器只会计算最近的点光源的影响,也就是说物体受距离最近的点光源的影响最大。这就导致我们可以很明显的看到两个点光源交界处,在物体上显示的该光源过渡仅仅只呈现距离该物体最近的那个光源的一种颜色。光源交叉处的并不存在颜色过渡,交叉区域只会呈现离该物体最近的一种颜色。这使得最终呈现光源颜色是突然的过渡,这样得到的效果很突兀。

技术实现思路

[0005]基于此,本专利技术的目的在于,提供一种光照颜色显示方法、装置、电子设备及存储介质,可以令点光源交汇处的过渡颜色不再只为单调的一种颜色,而是融合了交叉处多种光源的混合颜色。
[0006]第一方面,本专利技术提供一种光照颜色显示方法,包括以下步骤:
[0007]获取画面中所有点光源的坐标和颜色;
[0008]针对每一个待显示光照颜色的像素点,根据所述点光源的坐标,计算所述像素点对应的每个点光源的衰减值;
[0009]根据所有点光源的坐标和颜色,计算每个像素点对应的每个点光源的单位光向量;
[0010]根据所述单位光向量,计算每个像素点对应所述每个点光源的漫反射值和镜面反射值;
[0011]根据所述漫反射值、所述镜面反射值和预定义环境光,计算每个像素点对应的光照颜色;
[0012]获取画面预设的透明度值,根据所述透明度值和所述像素点对应的光照颜色,显示所述像素点的光照颜色。
[0013]进一步地,根据所述单位光向量,计算每个像素点对应所述每个点光源的漫反射值,包括:
[0014]使用以下公式,计算漫反射值:
[0015]D=a*L.
xyz
*saturate(dot(n,l))
[0016]其中,D为所述像素点对应点光源的漫反射值,a为漫反射系数,L.xyz为射入光源的位置,n为单位法向量,l为单位光向量;dot()函数表示将单位法向量和单位光向量进行点积运算,saturate()函数表示将点积运算的值返回在0

1之间。
[0017]进一步地,根据所述单位光向量,计算每个像素点对应所述每个点光源的镜面反射值,包括:
[0018]使用以下公式,计算镜面反射值:
[0019]S=K*a*saturate(dot(n,l))*(pow(max(dot(reflect(

l,n),v),0))
shininess
[0020]其中,S为所述像素点对应点光源的镜面反射值,K为材质反射的高光颜色,a为漫反射系数,n为单位法向量,l为单位光向量;dot()函数表示将单位法向量和单位光向量进行点积运算,saturate()函数表示将点积运算的值返回在0

1之间,reflectt()函数为计算反射的函数,max()函数表示取最大值,pow()函数用来求x的y次方的值,shininess为调节光泽度的指数。
[0021]进一步地,根据所有点光源的坐标和颜色,计算每个像素点对应的每个点光源的单位光向量,包括:
[0022]使用GetMainLight()函数得到主光源;
[0023]在Additional Pass中采用当前光源的位置减去片段着色器里的位置的方法,得到所述像素点与所述点光源的坐标;
[0024]对所述坐标进行归一化处理,得到所述像素点对应所述点光源的单位光向量。
[0025]进一步地,对所述坐标进行归一化处理,包括:
[0026]使用normalize()函数进行归一化处理,对所述点光源到所述像素点的入射光向量,使用normalize()函数进行归一化处理,得到长度为1的单位光向量。
[0027]进一步地,根据所述漫反射值、所述镜面反射值和预定义环境光,计算每个像素点对应的光照颜色,包括:
[0028]使用以下公式,计算每个像素点对应的光照颜色:
[0029]f=(D+S+_GlossyEnvironmentColor+m)*col.
rgb
[0030]其中,f为光照颜色,D为漫反射值,S为镜面反射值,col.rgb指代计算的这个点光源的颜色,_GlossyEnvironmentColor是URP预定义的环境光,m是用于调整效果的变量。
[0031]进一步地,所述预设的透明度为1.0。
[0032]第二方面,本专利技术还提供一种光照颜色显示装置,包括:
[0033]点光源获取模块,用于获取画面中所有点光源的坐标和颜色;
[0034]衰减值计算模块,用于针对每一个待显示光照颜色的像素点,根据所述点光源的坐标,计算所述像素点对应的每个点光源的衰减值;
[0035]单位光向量计算模块,用于根据所有点光源的坐标和颜色,计算每个像素点对应的每个点光源的单位光向量;
[0036]反射值计算模块,用于根据所述单位光向量,计算每个像素点对应所述每个点光源的漫反射值和镜面反射值;
[0037]光照颜色计算模块,用于根据所述漫反射值、所述镜面反射值和预定义环境光,计
算每个像素点对应的光照颜色;
[0038]显示模块,用于获取画面预设的透明度值,根据所述透明度值和所述像素点对应的光照颜色,显示所述像素点的光照颜色。
[0039]第三方面,本专利技术还提供一种电子设备,其特征在于,包括:
[0040]至少一个存储器以及至少一个处理器;
[0041]所述存储器,用于存储一个或多个程序;
[0042]当所述一个或多个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如本专利技术第一方面任一所述的一种光照颜色显示方法的步骤。
[0043]第四方面,本专利技术还提供一种计算机可读存储介质,其特征在于:
[0044]所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本专利技术第一方面任一所述的一种光照颜色显示方法的步骤。
[0045]本专利技术提供的一种光照颜色显示方法、装置、电子设备及存储介质,可以令点光源交汇处的过渡颜色不再只为单调的一种颜色本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种光照颜色显示方法,其特征在于,包括以下步骤:获取画面中所有点光源的坐标和颜色;针对每一个待显示光照颜色的像素点,根据所述点光源的坐标,计算所述像素点对应的每个点光源的衰减值;根据所有点光源的坐标和颜色,计算每个像素点对应的每个点光源的单位光向量;根据所述单位光向量,计算每个像素点对应所述每个点光源的漫反射值和镜面反射值;根据所述漫反射值、所述镜面反射值和预定义环境光,计算每个像素点对应的光照颜色;获取画面预设的透明度值,根据所述透明度值和所述像素点对应的光照颜色,显示所述像素点的光照颜色。2.根据权利要求1所述的一种光照颜色显示方法,其特征在于,根据所述单位光向量,计算每个像素点对应所述每个点光源的漫反射值,包括:使用以下公式,计算漫反射值:D=a*L.
xyz
*saturate(dot(n,l))其中,D为所述像素点对应点光源的漫反射值,a为漫反射系数,L.xyz为射入光源的位置,n为单位法向量,l为单位光向量;dot()函数表示将单位法向量和单位光向量进行点积运算,saturate()函数表示将点积运算的值返回在0

1之间。3.根据权利要求2所述的一种光照颜色显示方法,其特征在于,根据所述单位光向量,计算每个像素点对应所述每个点光源的镜面反射值,包括:使用以下公式,计算镜面反射值:S=K*a*saturate(dot(n,l))*(pow(max(dot(reflect(

l,n),v),0))
shininess
其中,S为所述像素点对应点光源的镜面反射值,K为材质反射的高光颜色,a为漫反射系数,n为单位法向量,l为单位光向量;dot()函数表示将单位法向量和单位光向量进行点积运算,saturate()函数表示将点积运算的值返回在0

1之间,reflectt()函数为计算反射的函数,max()函数表示取最大值,pow()函数用来求x的y次方的值,shininess为调节光泽度的指数。4.根据权利要求3所述的一种光照颜色显示方法,其特征在于,根据所有点光源的坐标和颜色,计算每个像素点对应的每个点光源的单位光向量,包括:使用GetMainLight()函数得到主光源;在Additional Pass中采用当前光源的位置...

【专利技术属性】
技术研发人员:罗胜舟王瑜琦刘平治张子慧许景星李维杰
申请(专利权)人:华南师范大学
类型:发明
国别省市:

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

1