CN116051713A - 渲染方法、电子设备和计算机可读存储介质 - Google Patents
渲染方法、电子设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN116051713A CN116051713A CN202210934789.2A CN202210934789A CN116051713A CN 116051713 A CN116051713 A CN 116051713A CN 202210934789 A CN202210934789 A CN 202210934789A CN 116051713 A CN116051713 A CN 116051713A
- Authority
- CN
- China
- Prior art keywords
- world coordinates
- geometric body
- coordinates
- geometry
- light
- 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
- 238000009877 rendering Methods 0.000 title claims abstract description 125
- 238000000034 method Methods 0.000 title claims abstract description 114
- 238000003860 storage Methods 0.000 title claims abstract description 17
- 238000004364 calculation method Methods 0.000 claims abstract description 56
- 238000004040 coloring Methods 0.000 claims abstract description 12
- 230000015654 memory Effects 0.000 claims description 37
- 230000001419 dependent effect Effects 0.000 claims description 26
- 239000013598 vector Substances 0.000 claims description 23
- 230000000007 visual effect Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 8
- 238000009826 distribution Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 abstract description 20
- 230000008569 process Effects 0.000 description 44
- 238000012545 processing Methods 0.000 description 21
- 239000010410 layer Substances 0.000 description 19
- 238000010586 diagram Methods 0.000 description 17
- 239000011159 matrix material Substances 0.000 description 14
- 230000006870 function Effects 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000012805 post-processing Methods 0.000 description 5
- 230000009466 transformation Effects 0.000 description 4
- 229920001621 AMOLED Polymers 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 230000002349 favourable effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000005286 illumination Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000003708 edge detection Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本申请提供一种渲染方法、电子设备和计算机可读存储介质,属于电子设备技术领域,方法包括:确定场景中的待渲染物体对应的几何体的世界坐标;基于几何体的世界坐标,确定所述几何体对应的包围盒在所述世界坐标中的顶点数据;基于包围盒的顶点数据,生成与视平面对应的掩膜贴图,对被所述包围盒覆盖的像素标记第一标识,其中,所述标记有第一标识的像素的范围包含所述几何体能够覆盖的所有像素;将具有第一标识的像素参与光线行进计算,得到描述几何体的表面的世界坐标;基于所述几何体的表面的世界坐标进行着色计算,得到渲染目标图像。该方法可以实现保持特效场景中图像运行帧率的同时,降低芯片功耗负载。
Description
技术领域
本申请涉及电子技术领域,尤其涉及一种渲染方法、电子设备及计算机可读存储介质。
背景技术
随着计算机技术的发展,越来越多的应用程序,,例如,游戏、视频等应用程序,要求显示更叫逼真的图面,也就是具有特效场景,例如,虚拟仿真,虚拟现实,增强显示等场景,会采用图形渲染技术,通过渲染技术提高画面的真实度,以给用户带来更好的体验。由此,如何提升画面的真实度成为业界关注的主要目标。
在移动端做图形渲染特效时,利用光线追踪实现丰富的几何模型特效。然而,由于现有的渲染特效的方法中,需要大量的计算,由此,会使得芯片的功耗大大增加,电子设备运行的帧率也会受到影响。
发明内容
有鉴于此,本发明提供一种渲染方法、电子设备和计算机可读存储介质,该方法可在图像渲染过程中降低计算量,在保持特效运行帧率的同时,降低芯片功耗负载。
本申请的一些实施方式提供了一种渲染方法和电子设备。以下从多个方面介绍本申请,以下多个方面的实施方式和有益效果可互相参考。
第一方面,本发明提供一种渲染方法,应用于电子设备,方法包括:确定场景中的待渲染物体对应的几何体的世界坐标;基于几何体的世界坐标,确定几何体对应的包围盒在世界坐标中的顶点数据;基于包围盒的顶点数据,生成与视平面对应的掩膜贴图,对被包围盒覆盖的像素标记第一标识,其中,标记有第一标识的像素的范围包含几何体能够覆盖的所有像素,视平面为与屏幕对应的二维图像;将具有第一标识的像素参与光线行进计算,得到描述几何体的表面的世界坐标;基于几何体的表面的世界坐标进行着色计算,得到渲染目标图像。
根据本申请实施例的渲染方法,通过渲染几何体的包围盒,生成Mask贴图,确定出与几何体关联的有效像素范围,只对有效像素范围之内的像素执行光线行进,并基于光线行进的步数和次数计算光线与几何体的交点,获得几何体表面坐标。从而可以大大减少参与计算的光线的数量,提高的渲染的速度,降低芯片功耗负载。
作为本申请第一方面的一个实施例,基于包围盒的顶点数据,生成与视平面对应的掩膜贴图,包括:创建一张与视平面图像,将视平面图像对应的像素值用第二标识初始化,第一标识不同于第二标识;基于包围盒的顶点数据将几何体对应的包围盒渲染到视平面图像上,得到掩膜贴图。通过不同的标识从而将包围盒所覆盖的像素和未覆盖的像素有效的区分,便于快速获取有效的像素。
作为本申请第一方面的一个实施例,将具有第一标识的像素参与光线行进计算,得到描述几何体的表面的世界坐标,包括:设置第一视角在世界坐标中的位置,将第一视角作为光线发出的起点;基于第一视角和具有第一标识的像素确定光线在世界坐标中发射方向,并将光线按照预设步长行进,每行进一个步长后确定光线头部的端点的世界坐标;当确定端点的世界坐标位于几何体的表面,则将端点的世界坐标作为几何体的表面的世界坐标。基于有效的像素参与光线行进计算,并快速的得到描述几何体的表面的世界坐标,较少了光线计算量。
作为本申请第一方面的一个实施例,当确定端点的世界坐标位于几何体的表面,包括:将端点的世界坐标代入符号距离场方程中,当方程中的因变量的结果为0,或与0的差值的绝对值在预设数值范围内,则确定端点的世界坐标位于几何体的表面。
作为本申请第一方面的一个实施例,当确定端点坐标位于几何体的外部,则继续将光线按照预设步长行进,直到确定端点位于几何体的表面或几何体的内部;将位于几何体内部的端点的世界坐标,按照预设步长减半,光线原来的行进的方向设为反方向,继续行进,直到端点位于几何体的表面;电子设备将位于几何体的表面的端点的世界坐标作为几何体的表面的世界坐标。该方法,有利于快速准确的找到光线与几何体表面的交点。
作为本申请第一方面的一个实施例,当光线行进的步数达到预设步数时,端点的世界坐标仍然没有位于几何体的表面时,电子设备判断光线不会与几何体的表面相交,并对不相交的光线对应的像素输出非几何体表面的坐标。可以避免无效的光线行进,降低计算量。
作为本申请第一方面的一个实施例,确定端点坐标位于几何体的外部,包括:
将端点的世界坐标代入符号距离场方程中,当方程中的因变量的结果大于0,或大于预设数值范围的上限,则确定端点的世界坐标位于几何体的外部。
作为本申请第一方面的一个实施例,确定端点坐标位于几何体的内部,包括:
将端点的世界坐标代入符号距离场方程中,当方程中的因变量的结果小于0,或小于预设数值范围的下限,则确定端点坐标位于几何体的内部。
作为本申请第一方面的一个实施例,基于几何体的表面的世界坐标进行着色计算,包括:确定当前像素对应的端点的法线坐标;基于法线坐标、端点的世界坐标、第一视角的观测向量、以及添加光源向量计算光线发生折射/或反射时的光能量分布的颜色信息;将颜色信息输出至掩膜贴图对应的像素中,得到渲染目标图像。该方法可以有效的计算出有效像素对应的颜色值,可以得到高质量的渲染效果。
作为本申请第一方面的一个实施例,确定当前像素对应的端点的法线坐标,包括:计算位于几何体的表面的世界坐标分别在世界空间中的X轴方向和Y轴方向的差分;构建几何体的表面的世界坐标在X轴和Y轴方向上的偏移向量,计算X轴和Y轴的偏移向量的叉积,得到端点对应的几何体的表面的法线坐标。
作为本申请第一方面的一个实施例,确定场景中的待渲染物体对应的几何体的世界坐标,包括:定义表达几何体的参数;基于几何体的参数确定几何体的世界坐标。不再通过模型资源的加载和渲染来生成模型几何信息,减少实时渲染过程中内存的开销,也便于光线头部的端点的计算。
作为本申请第一方面的一个实施例,顶点数据包括顶点坐标和顶点坐标的索引数据。
第二方面,本发明提供一种电子装置,方法包括:
坐标转换模块,用于确定场景中的待渲染物体对应的几何体的世界坐标;
顶点确认模块,用于基于几何体的世界坐标,确定几何体对应的包围盒在世界坐标中的顶点数据;
生成模块,用于基于包围盒的顶点数据,生成与视平面对应的掩膜贴图,对被包围盒覆盖的像素标记第一标识,其中,标记有第一标识的像素的范围包含几何体能够覆盖的所有像素,视平面为与屏幕对应的二维图像;
计算模块,用于将具有第一标识的像素参与光线行进计算,得到描述几何体的表面的世界坐标,以及基于几何体的表面的世界坐标进行着色计算,得到渲染目标图像。
根据本申请实施例的电子装置,通过渲染几何体的包围盒,生成Mask贴图,确定出与几何体关联的有效像素范围,只对有效像素范围之内的像素执行光线行进,并基于光线行进的步数和次数计算光线与几何体的交点,获得几何体表面坐标。从而可以大大减少参与计算的光线的数量,提高的渲染的速度,降低芯片功耗负载。
作为本申请第二方面的一个实施例,生成模块用于:创建一张与视平面图像,将视平面图像对应的像素值用第二标识初始化,第一标识不同于第二标识;基于包围盒的顶点数据将几何体对应的包围盒渲染到视平面图像上,得到掩膜贴图。通过不同的标识从而将包围盒所覆盖的像素和未覆盖的像素有效的区分,便于快速获取有效的像素。
作为本申请第二方面的一个实施例,计算模块用于:设置第一视角在世界坐标中的位置,将第一视角作为光线发出的起点;基于第一视角和具有第一标识的像素确定光线在世界坐标中发射方向,并将光线按照预设步长行进,每行进一个步长后确定光线头部的端点的世界坐标;当确定端点的世界坐标位于几何体的表面,则将端点的世界坐标作为几何体的表面的世界坐标。基于有效的像素参与光线行进计算,并快速的得到描述几何体的表面的世界坐标,较少了光线计算量。
作为本申请第二方面的一个实施例,计算模块用于:将端点的世界坐标代入符号距离场方程中,当方程中的因变量的结果为0,或与0的差值的绝对值在预设数值范围内,则确定端点的世界坐标位于几何体的表面。
作为本申请第二方面的一个实施例,当计算模块确定端点坐标位于几何体的外部,则用于继续将光线按照预设步长行进,直到确定端点位于几何体的表面或几何体的内部;将位于几何体内部的端点的世界坐标,按照预设步长减半,光线原来的行进的方向设为反方向,继续行进,直到端点位于几何体的表面;电子设备将位于几何体的表面的端点的世界坐标作为几何体的表面的世界坐标。该方法,有利于快速准确的找到光线与几何体表面的交点。
作为本申请第二方面的一个实施例,当光线行进的步数达到预设步数时,端点的世界坐标仍然没有位于几何体的表面时,计算模块判断光线不会与几何体的表面相交,并对不相交的光线对应的像素输出非几何体表面的坐标。可以避免无效的光线行进,降低计算量。
作为本申请第二方面的一个实施例,计算模块用于将端点的世界坐标代入符号距离场方程中,当方程中的因变量的结果大于0,或大于预设数值范围的上限,则确定端点的世界坐标位于几何体的外部。
作为本申请第二方面的一个实施例,计算模块用于将端点的世界坐标代入符号距离场方程中,当方程中的因变量的结果小于0,或小于预设数值范围的下限,则确定端点坐标位于几何体的内部。
作为本申请第二方面的一个实施例,电子装置还包括输出模块,计算模块用于确定当前像素对应的端点的法线坐标;基于法线坐标、端点的世界坐标、第一视角的观测向量、以及添加光源向量计算光线发生折射/或反射时的光能量分布的颜色信息;由输出模块将颜色信息输出至掩膜贴图对应的像素中,得到渲染目标图像。该方法可以有效的计算出有效像素对应的颜色值,可以得到高质量的渲染效果。
作为本申请第二方面的一个实施例,计算模块用于计算位于几何体的表面的世界坐标分别在世界空间中的X轴方向和Y轴方向的差分;构建几何体的表面的世界坐标在X轴和Y轴方向上的偏移向量,计算X轴和Y轴的偏移向量的叉积,得到端点对应的几何体的表面的法线坐标。
作为本申请第二方面的一个实施例,坐标转换模块,用于定义表达几何体的参数;基于几何体的参数确定几何体的世界坐标。不再通过模型资源的加载和渲染来生成模型几何信息,减少实时渲染过程中内存的开销,便于光线头部的端点的计算。
作为本申请第二方面的一个实施例,顶点数据包括顶点坐标和顶点坐标的索引数据。
第三方面,本申请还提供一种电子设备,包括:存储器,用于存储由设备的一个或多个处理器执行的指令,以及处理器,用于执行指令,以使得电子设备执行第一方面的技术方案中任意一种方法。
第四方面,本申请还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器运行时,使得处理器执行第一方面的技术方案中任意一种方法。
第五方面,本申请还提供一种包含指令的计算机程序产品,当该计算机程序产品在电子设备上运行时,使得处理器执行第一方面的技术方案中任意一种方法。
附图说明
图1为图形渲染的场景图;
图2为本申请一个实施例的包围盒渲染到视平面图像中的示意图。
图3为本申请一个实施例的电子设备的结构示意图;
图4为本申请一个实施例的电子设备的软件结构框图;
图5为本申请一个实施例的窗口的渲染方法的流程图;
图6为本申请一个实施例的几何体转换到世界空间中的结构示意图;
图7为本申请一个实施例的包围盒创建的流程的示意图;
图8为本申请一个实施例的掩膜贴图生成过程的示意图;
图9为本申请一个实施例的光线行进的结构示意图;
图10为本申请一个实施例的光线行进处理的流程图;
图11为本申请一个实施例的不同光线的头部的端点与几何体表面距离的示意图;
图12为本申请一个实施例的渲染方法的另一流程图;
图13为本申请一个实施例的电子装置的结构示意图;
图14为本申请一些实施例的一种片上系统的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
下面首先对本申请实施例中出现的名词进行解释说明。
几何体,是指三维(three dimensional,3D)场景中的物体模型,例如,3D场景中的茶壶模型。
视平面图像,是指与电子设备的屏幕相对应的平面图像,即二维(twodimensional,2D)平面,该视平面图像上对应设有像素。
掩膜贴图,将三维空间中的几何体投射到二维的视平面图像中,该视平面图像中包括与视平面对应的像素,即可理解为在屏幕空间上可见的内容直接投影至屏幕空间上,该过程也可以理解为光栅化的处理过程,将3D场景中的几何体通过多边形分割,例如三角形,将三角形的顶点的三维坐标转换为镜面图像上的二维坐标,使得几何体与镜面图像上的一些像素相对应,再对三角形的填充纹理,得到具有几何体数据的掩膜贴图。
符号距离场(Signed Distance Field,SDF),用于描述几何体(如圆形,直线或多几何体的组合等,其因变量表示在3D(2D)空间中将某点位置映射到其到最近平面(边缘)的距离,可以表示每个像素的值,即该像素的中心到最近的几何体的距离。
为了便于对本申请技术方案的理解,首先描述本申请所要解决的技术问题。
参考图1,图1示出了图形渲染的场景示意图,如图1所示,包括虚拟的3D场景以及真实场景,其中虚拟的3D场景中包括虚拟相机(视角)10、视平面图像20、几何体模型30、光源40以及光线50。在真实场景中包括电子设备60和用户70。视平面图像20渲染结果是以像素为单位的,而每一个像素的值是基于光线50穿过该像素与几何体的表面相交后,得到交点坐标,电子设备对交点坐标处利用着色算法计算颜色值,并输出到视平面图像20对应的像素上,最后得到渲染目标图像,电子设备60通过显示器显示出最终的渲染目标图像。用户70可以通过电子设备60的显示屏看到最终渲染的图像。
在一些实施例中,电子设备做图形渲染特效时,利用符号距离场模拟光线追踪,可以在没有模型几何数据的情况下实现丰富的几何模型特效。符号距离场模拟光线追踪需要对待渲染目标的每个像素,计算光线射线的位置和长度,通过循环迭代光线往某个方向的移动求解射线与几何模型的交点。其中,待渲染目标是基于电子设备的屏幕相对应的光栅化后的图像,也即图像的像素应当与屏幕的像素相关联,从而获得较好的画面。随着电子设备不断的更新发展,越来越高的屏幕图形渲染分辨率(对应图像的像素)从720p到1080p再到2k,分辨率不断增大,对应的像素的数量不断增多,也使得需要做射线求交的像素越来越多,电子设备的计算量和功耗也随之增加。若通过减少图像帧率的方式降低计算量,或者通过降低图像的像素数量,使得渲染后的场景画面达不到理想的播放效果。
基于上述存在的问题,本申请提供一种渲染方法,基于符号距离场的渲染优化技术,保持特效场景中图像运行帧率的同时,降低芯片功耗负载。
结合图1所示场景,对本申请实施例的渲染方法进行说明。如图1所示,该渲染方法可以由电子设备60执行。电子设备60获取场景中的待渲染物体对应的几何体模型,例如,天空、云朵、人物、房屋、树木、物品等模型。先确定几何体的自身坐标,也即模型坐标(modelcoordinates)。接下来,再将几何体的自身坐标转换为世界坐标(world coordinates)。具体而言,可通过模型矩阵(model matrix)转换得到几何体的世界坐标,其中模型矩阵可以是预先设定的矩阵。在场景中的所有待渲染的几何体都可以通过同一个模型矩阵转换的同一个世界空间(word space)内。基于几何体的世界坐标,为几何体建立包围盒,例如,轴对齐包围盒(Axis Aligned Bounding Box,AABB)、定向包容盒子(Oriented Bounding Box,OBB)或球形包围盒等,这些包围盒将几何体包围在其中。如图2所示,图2示出了包围盒渲染到视平面图像中的示意图。如图2所示,包围盒80将整个几何体30包围。电子设备确定包围盒80在世界坐标中的顶点数据,例如,顶点坐标和顶点索引等数据。如图2所示,电子设备基于包围盒的顶点数据,创建与视平面对应的掩膜贴图90,将包围盒80与视平面图像90中的部分像素相对应。由于包围盒80覆盖的像素的范围要大于几何体覆盖的像素的范围。因此,掩膜贴图90中包围盒80所覆盖的像素范围内包含几何体能够覆盖的所有像素。并且,电子设备对包围盒80覆盖的像素进行标记,例如,标记为数字1(第一标识)。而视平面图像中未被覆盖的像素则保持初始化的标记,例如,数字0(第二标识)。获得具有标记的掩膜贴图后,电子设备基于标识有1的像素参与光线行进计算,得到描述几何体的表面的世界坐标,基于参与计算的光线(与第一标识像素对应的光线)和几何体的表面的世界坐标进行着色计算,得到颜色值,作为对应的像素值,得到渲染目标图像。
本申请实施例的渲染方法,由于只对掩膜贴图中被包围盒覆盖的像素参与光线计算,而包围盒之外的像素不参与着色计算,因此,大大降低了渲染过程中的计算量,降低芯片功耗负载,不需要改变特效过程中图像运行的帧率,也可以减少计算量,提高计算速度。
本申请实施例的电子设备可以是手机、平板电脑、笔记本电脑、PC、移动互联网设备(mobile internet device,MID)、可穿戴设备,虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrial control)中的无线电子设备、无人驾驶(self driving)中的无线电子设备、远程手术(remote medical surgery)中的无线电子设备、智能电网(smart grid)中的无线电子设备、运输安全(transportationsafety)中的无线电子设备、智慧城市(smart city)中的无线电子设备、智慧家庭(smarthome)中的无线电子设备等。该电子设备可以是运行鸿蒙系统HarmonyOS、安卓系统、IOS系统、windows系统以及其他系统的设备。在该电子设备中可以运行有需要对3D场景进行渲染而得到二维图像的应用程序,例如游戏、视频等应用。
下面结合电子设备的具体结构对本申请实施例的渲染方法进行描述。
图3示出了电子设备100的结构示意图。如图3所示,电子设备300可以包括处理器310、存储器320、显示屏330和通信单元340等。这些部件可以通过通信总线连接,用于实现各个组件之间的通信。
可以理解的是,本发明实施例示意的结构并不构成对电子设备300的具体限定。在本申请另一些实施例中,电子设备300可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器310可以包括一个或多个处理单元。在一些实施例中,如图3所示,处理器310可以包括中央处理器(Central Processing Unit CPU)和图形处理器(graphicsprocessing unit,GPU)。
在另一些实施例中,处理器还可以包括应用处理器(application processor,AP),调制解调处理器,图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器310可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器310中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器310中的存储器为高速缓冲存储器。该存储器可以保存处理器310刚用过或循环使用的指令或数据。如果处理器310需要再次使用该指令或数据,可从所述存储器中直接调用。例如,在实时渲染时,可将待渲染的场景对应的数据,例如,人物、房屋、物品对应的几何体的顶点数据,坐标数据,材质、光照等数据进行存储,避免了重复存取,减少了处理器310的等待时间,因而提高了系统的效率。
在本申请的一个实施例中,CPU可以运行操作系统及各类应用程序,应用程序可以为图形类应用程序,比如游戏、视频播放器等。操作系统提供了系统图形库接口,应用程序通过该系统图形库接口,以及操作系统提供的驱动程序,生成用于渲染图形或图像帧的指令流,以及所需的相关渲染数据。指令流包含一些列的指令,这些指令通常为对系统图形库接口的调用指令。
GPU312,用于接收CPU发送的图形指令流,通过图形渲染管线(The GraphicsRendering Pipeline)生成掩膜贴图,在进步结合基于符号距离场模拟光线追踪得到渲染目标,将渲染目标通过操作系统的图层合成等流程,将渲染目标显示到显示屏330上。其中,图形渲染管线,也即渲染管线(the pipeline),可以称为渲染流水线、像素流水线或像素管线,是图形处理器内部用于处理图形信号的并行处理单元。
图形渲染管线的主要功能是根据给定的虚拟相机、三维物体和光源等,生成(或渲染)一个二维图像。GPU中可以包括多个渲染管线,多个渲染管线之间可以相互独立地并行处理图形信号。一条渲染管线可以在渲染图形或图像帧的过程中执行一些列操作,以一条渲染管线的操作为例,可以粗略的分为例如:顶点处理(Vertex Processing)、图元处理(Primitive Processing)、光栅化(Rasterization)、片段处理(Fragment Processing)等等。
在本申请的实施例中,通信单元340可以包括天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等,通过各部件的配合实现与其他电子设备进行通信。
在一些实施例中,电子设备300可以通过通信单元与云端服务器连接,从而获得3D场景的待渲染物体的数据,也可以与其他电子设备通信获得待渲染物体的数据等。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
在本申请的一个实施例中,当CPU将设定的参数以及顶点数据内容提交至GPU,GPU基于这些数据对场景中的几何体进行渲染完成后得到渲染目标,并将渲染目标存入帧缓冲区,由视频控制器按照逐帧读取帧缓冲区的数据,经过数据转换后最终在显示屏330上进行显示,用户可以通过显示屏330看到特效渲染图。
存储器320可以包括内部存储器和外部存储器。内部存储器可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如游戏,图像播放功能等)等。存储数据区可存储电子设备300使用过程中所创建的数据(比如经过CPU和GPU渲染得到的渲染目标图像数据等)等。此外,内部存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
在一些实施例中,处理器310通过运行存储在内部存储器的指令,例如,用于渲染图形或图像帧的指令流,以使得GPU根据指令流对待渲染的数据进行处理。
电子设备300的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android系统为例,示例性说明电子设备300的软件结构。
图4是本发明实施例的电子设备300的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图4所示,应用程序包可以包括游戏,视频,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图4所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,以使得最终渲染的图像按照对应的比例在显示屏上显示。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括游戏场景中的物体的几何体数据模型等,可以是视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于基于图形渲染管线实现图像渲染过程,并得到渲染目标,并进一步渲染目标进行图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
以上介绍了本申请实施例提供的渲染方法所应用的电子设备的具体结构,下面以电子设备是手机为例,详细介绍本申请实施例所提供的渲染方法的流程。
参阅图5,图5为本申请实施例提供的一种渲染方法的流程图。该流程示意图示出了6个步骤。如图5所示,该渲染方法包括S501-S506。该方法可以应用于具有如图3所示的硬件结构,和如图4所示的软件结构的电子设备中。或者比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置等类似的硬件结构和软件结构的电子设备中。
S501,获取场景中的待渲染物体对应的几何体。
在本申请的实施例中,场景中待渲染物体对应的几何体可以包括2D或3D场景中的模型以及赋予给模型的属性信息。例如,几何体模型可以是天空、白云、人物、建筑物、花草、树木、物品等模型,这些模型可以是通过三维建模或二维建模应用程序中绘制而成。场景中的模型具有自身坐标,模型的属性信息则可以包括模型的颜色、材质、光照强度、光线方向等属性信息。
可以理解的是,对于手机而言,待渲染物体对应的几何体模型就是由一些关联的数据组成,因此,本申请的几何体模型也可以理解为待渲染数据。
应理解,这些待渲染数据可以是在手机下载安装应用的过程中,保存在手机的存储器中,也可以是在手机在运行应用程序的过程中,例如,网络游戏,手机可以与服务器实时通信并获取游戏场景中的待渲染数据,以使得手机能够基于待渲染数据实现图像的渲染。
也就是说,手机可以通过读取本地的数据来获取待渲染数据,也可以是通过与其他设备通信连接,从其他设备实时获取待渲染数据,本申请对获取待渲染数据的具体方式不做限定。
在一些实施例中,手机还可以提供在世界空间中肉眼应该在什么位置和朝向看向世界空间中的物体,即设定相机位置和朝向,以及确定投影方式以及投影矩阵,其中投影方式可以为正交投影(orthographic projection)、透视投影(perspective projection),透视投影中还确定视椎体尺寸大小,相近平面和远平面的尺寸等数据。
在本申请的实施例中,S501所述的过程可以由图2所示的CPU来处理执行,并且相应的数据被存储。当CPU向GPU发出渲染指令后,GPU接收到指令后,基于这些数据执行图形渲染管线程序,以及基于符号距离场模拟光线追踪等过程,完成对几何体的渲染。即执行S502-S506。
S502,确定场景中的待渲染物体对应的几何体的世界坐标。
在该步骤中,由于几何体自身坐标只能表示形状,无法表达位置和姿态,因此,GPU首先根据几何体的自身坐标将其转换为世界坐标,即将几何体置于世界坐标中,从而确定几何体在世界坐标系中的位置以及姿态。并且在一个场景中存在多个几何体时,可以通过相同的模型矩阵,将这些拥有各自坐标的模型放置在同一个世界空间中。
参考图6所示,图6为本申请实施例的几何体转换到世界空间中的结构示意图。如图6所示,图中包括几何体对应的茶壶模型,对于茶壶模型而言,其具有自身坐标,将自身坐标转化到世界坐标中,即将茶壶模型的顶点坐标通过另一个更大的世界坐标进行表达,其中,由自身坐标到世界坐标,需乘以一个模型矩阵,从而获得茶壶在世界空间的位置和姿态。其中,由几何体自身坐标转换到世界坐标的过程,可以参考现有技术中的坐标转换过程,此处不再详细说明。
在本申请的一个实施例中,对于世界空间中的几何体可以通过几何参数(符号距离场方程)定义或描述世界空间中的几何体,例如,对于球体,定义球心世界坐标和球的半径;对于立方体,定义立体中心世界坐标以及立方体的方程中长宽高系数。用参数定义的方式可以不需要三维模型资源就可以渲染出模型的外观特征,可以减少内存空间的占用。
S503,基于几何体的世界坐标,确定几何体对应的包围盒在世界坐标中的顶点数据。
在本申请的实施例中,包围盒可以是AABB包围盒、OBB包围盒或球形包围盒。
在本申请的实施例中,当几何体通过几何参数定义时,手机可以根据几何参数表示的几何体的世界坐标(在世界空间中的位置)以及几何参数创建包围盒的顶点数据,其中顶点数据包括顶点在世界坐标中的顶点坐标,以及顶点坐标的索引数据。
下面以建立AABB包围盒为例对确定包围盒的顶点数据进行说明。
参考图7,图7为本申请实施例的包围盒创建的流程的示意图。首先用几何参数计算几何体在自身坐标中分别在X方向,Y方向和Z方向上的最大值和最小值。以几何体各顶点对称为例,则对称的几何体方程如下:
x≤|a|;
y≤|b|;
z≤|c|;
如图7中的a所示,基于上述几何体方程,计算几何体自身坐标中在x方向的最小值为-a,最大值为a,在Y方向上的最小值为-b,最大值为b,Z方向上的最小值为-c,最大值为c。基于几何体分别在自身坐标中x轴方向、y轴方向和z轴方向的最大值和最小值,确定出AABB包围盒的大小。如图7中的(b)所示,计算出包围盒的8个顶点坐标为:(a,b,c),(a,b,-c),(a,-b,c),(a,-b,-c),(-a,b,c),(-a,b,-c),(-a,-b,c),(-a,-b,-c),也就是说,包围盒将几何体包围。确定包围盒的顶点坐标后,再利用几何体在世界空间中对应的空间矩阵M,将M的空间变换应用到各个顶点坐标上,得到的包围盒的8个顶点在世界坐标中的顶点坐标为:(a,b,c)×M,(a,b,-c)×M,(a,-b,c)×M,(a,-b,-c)×M,(-a,b,c)×M,(-a,b,-c)×M,(-a,-b,c)×M,(-a,-b,-c)×M。手机获得顶点坐标后,确定顶点索引,例如,在包围盒的一个面构建三角形,每个面由4个顶点,其中三个点构成一个三角形,一个面可以构建2个三角形,其中,2个三角形中的两个点是重复使用的,因此,通过顶点索引排除重复的顶点数据。并构建包围盒的顶点数据的顶点缓存和索引缓存。以便于在GPU在接收到渲染指令时,从缓存中获取顶点数据,以执行对包围盒的渲染。本申请的实施例中,对于包围盒的顶点坐标转换的具体计算过程可参考现有技术,本申请对此不在详细说明。
S504,基于包围盒的顶点数据,生成与视平面对应的掩膜(Mask)贴图,标记掩膜贴图中被包围盒覆盖的像素。
该步骤可以理解为将包围盒的顶点坐标从世界坐标(三维坐标)转换到与屏幕像素对应的二维坐标的过程,也即对包围盒进行光栅化的过程。
在本申请的一个实施例中,首先对包围盒进行渲染,即对包围盒进行正交投影或透视投影。以透视投影为例,在GPU对包围盒进行渲染之前,首先可以从设备的存储区中获取相关的数据,例如,相机位置,视椎体的近平面和远平面的距离和大小、最终渲染目标尺寸(可与屏幕尺寸相对应)等数据。其中,渲染目标尺寸即为视平面图像的尺寸,渲染目标尺寸可以根据所需要的分辨率来确定,在进行渲染之前可以由CPU提供设定的分辨率参数,分辨率越大,渲染目标尺寸对应的像素数量越多,例如,分辨率为1600×1200,像素数量多,则计算量也相应的越大,显示的效果更为理想。
下面结合附图对掩膜贴图的生成过程进行详细的描述。
参考图8,图8示出了本申请实施例的掩膜贴图生成过程的示意图。如图8中的(a)所示,在世界空间中存在有一包围盒,该包围盒的获取过程可参考S503中的包围盒的获取过程。GPU获取相机位置后在世界空间中添加相机坐标(camera coordinates),即相机圆点(camera origin)坐标,相机用于模仿现实空间中观察包围盒的视角,包括在世界空间中的位置,以及观察物体的方向。其中,相机坐标可以通过包围盒的世界坐标与试图矩阵(viewmatrix)相乘得到。再以相机坐标作为视角,观察包围盒。再确定相机坐标后,再将相机坐标转换为屏幕坐标(Screen coordinates)。该过程中,首先以相机原点构建视锥体,如图8中的(a)所示,视椎体的近平面(视平面图像)可以是单通道8位的镜平面图像,与屏幕尺寸相对应,近平面上对应的像素与屏幕像素数量相同或成相应的比例。GPU投影之前,首先将近平面上的像素值设置为0(第二标识),投影时,将包围盒对应的三维的相机坐标乘以透视矩阵(perspective matrix)得到投影于近平面的二维的包围盒的模型,其中,视椎体的透视矩阵可基于近平面和远平面的空间矩阵得到,可以是由CPU提供相应的近平面、远平面的尺寸和位置,具体的计算过程可参考现有技术的转换过程。GPU得到包围盒的二维模型后,将该包围盒模型覆盖的像素值由0更改为1(第一标识),得到如图8中的(b)所示的具有标识的掩膜贴图。
在本申请的一个实施例中,掩膜贴图的实现过程可以为:1.创建Mask的VkImage赋值给VkFramebufferCreateInfo的pAttchments成员;2.通过设置VkRenderPassBeginInfo结构体中的pClearValues为0;3.调用指令vkCmdBeginRenderPass将Mask所有像素值初始化为0;4.绑定S503中创建的包围盒模型的顶点缓冲区和索引缓冲区,执行渲染,得到近平面的包围盒的模型。对于被包围盒覆盖的像素,着色器直接输出1,具体实现为:Out floatfragData;fragData=1。进一步可以理解为:步骤1,把创建的图像(Mask)句柄(VkImage)绑定到渲染目标(VkFramebufferCreateInfo的pAttchments成员);步骤2,设置图像绘制初始化的值为0;步骤3,调用绘制指令(vkCmdBeginRenderPass),CPU发送信号给GPU,GPU执行指令,并将Mask所有像素值初始化为0。步骤4,执行对包围盒模型的渲染流程,并将包围盒覆盖的像素标识为1.0(Out float fragData;fragData=1),得到掩膜贴图。
需要说明的是,本申请的实施例中,以第一标识为1,第二标识为0进行说明,在一些实施例中,也可以是其他标识,例如,第一标识为5,第二标识为1等数字表示,也可以是字母或符号等表示,本申请对此并不作限定。
S505,将标记有1的像素参与光线行进计算,得到描述几何体的表面的世界坐标。
在本申请的实施例中,光线行进的方向通过相机原点(第一视角)与标记有1的像素进行确定,即光线行进方向为从相机原点与像素的单位向量。光线行进的步长可以是预先根据场景的实际情况设定的值,例如,步长可以是1米、2米等。
GPU在确定光线行进的起点和方向后,按照设定的固定步长和前进次数,循环的每次让光线往前移动一个步长的距离,并确定移动之后的光线头部的端点对应的世界坐标,将端点对应的世界坐标代入参数表达几何体的符号距离场方程,求解方程的因变量。如果结果大于0或大于预设范围的上限,例如,预设范围为-0.01~0.01,上限为0.01,说明光线头部的端点位于几何体的外部,如果结果小于0或小于-0.01,说明光线头部的端点位于几何体的内部。如果结果等于0或在-0.01~0.01之内,表明该光线头部的端点位于几何体的表面。GPU对于计算结果等于0或者在-0.01~0.01之内对应的光线头部的端点的世界坐标作为几何体的表面的世界坐标。以上实施过程的细节在下面的实施例中,将结合附图进一步说明。
S506,基于几何体的表面的世界坐标进行着色计算,得到渲染目标图像。
基于上述步骤中获得的有效像素,即光线穿过的像素,最终与几何体表面相交,即为有效像素。基于有效像素和上述步骤中得到的表达几何体的表面的世界空间坐标。采用着色语言(OpenGL Shading Language,GLSL),即着色器GLSL的偏导数计算公式,计算出基于当前像素得到的几何体的表面的世界空间坐标分别在X方向和Y方向的差分,构建当前几何体的表面的空间坐标在X方向和Y方向上的偏移向量,并将两个向量的叉积近似为当前几何体的表面的法线坐标。其中,发现坐标的实现过程如下:
Vec3 Pos=CalculateWorldPosition();//计算像素对应的几何体表面世界坐标
Vec3 PosX=dFdX(Pos);
Vec3 PosY=dFdY(Pos);
Vec3 Normal=Cross(Pos-PosX,Pos-PosY);//计算像素对应的几何体表面的法线坐标
GPU再根据法线坐标,几何体所在的空间坐标,光源向量和观测向量(相机在世界空间中看向物体的朝向)计算反射、折射的光能量分布的颜色信息,输出到掩膜贴图中对应的像素中,得到渲染目标图像。
需要说明的是,在上述实施例中,提及的各种计算在没有明确说明具体计算方法时,均可采用现有技术方案进行计算,本申请不再进行介绍。
下面结合附图对S505步骤中实施的记有1的像素参与光线行进计算,得到描述几何体的表面的世界坐标的过程进行详细的说明。
参考图9,图9为本申请实施例的光线行进的结构示意图。如图9所示,包括相机910、掩膜贴图920、几何体930和光线941、光线942、光线943。其中,掩膜贴图930中的像素数量以9×8为例,被包围盒覆盖的像素标识有1。光线941头部的端点位于几何体930的表面上,即像素的射线与几何体相交(ray hit),光线942头部的端点落入几何体内部,光线943与几何体不相交,即像素的射线与几何体不相交(ray miss)。
以光线920为例,描述光线行进过程,如图9所示,光线941行进时,以相机910作为起点发射,以相机910到像素的单位向量为方向,穿过掩膜贴图中标记有1的像素,并射向几何体所在的世界空间。光线920按照设定的步长行进,例如,步长为1米,光线941每行进一步,即为行进1米(一个步长)距离。每行进一个步长后计算光线941头部的端点的世界坐标,在将端点的世界坐标代入表达几何体的符号距离场方程。若因变量的结果大于0,表明光线的端点a位于几何体的外部。如果结果小于0,表明光线的端点a位于几何体的内部。如果结果等于0,说明端点a位于几何体的表面。
以几何体是球体为例进行说明,球体的符号距离场方程为:
其中,x,y,z为空间中某一点在世界空间中的坐标,即为某点到球体球心的距离,R为球体半径。若要判断该点是否位于几何体的表面,将该点的世界坐标代入方程(1)中,求解因变量f(x,y,z)的结果,根据结果是正数、负数、或0的几种情况,判断光线是否与几何体相交。
接下来,以光线941行进第四步时,计算光线头部的端点与几何体的位置关系为例进行说明。如图9所示,光线941第四步时头部的端点a的世界坐标为a(x0,y0,z0),将a的世界坐标代入符号距离场方程(1)中,得到:
求解因变量f(x0,y0,z0)。如图9所示,将端点a的坐标代入符号距离场方程(1)后,因变量的结果远大于0,光线941并没有与几何体930表面相交。此时,光线941继续行进,直到在第七步时,得到光线头部的端点b的世界坐标,将b的世界坐标代入符号距离场方程(1)中,求因变量的结果恰好等于0,表明光线941与几何体930相交,交点b的世界坐标即为几何体表面上一点的世界坐标。
在本申请的一些实施例中,当计算的因变量f(x,y,z)的结果的绝对值接近0的数值(第一预设值)时,例如,0.01米等,则将当前光线头部对应的端点的空间坐标作为几何体的表面上的点的坐标。其中,该数值可以根据实际情况设定,设定时应当考虑实际场景和步长,应远远小于单位步长的长度。
基于上述针对光线941行进的判断过程,分别计算光线942和光线943,得到光线943在行进8步数后,光线头部的端点对应的因变量结果为负数,表明该光线落入几何体内部,而光线943在计算到步数大于设定步数后一直没有得到0或负数的结果时,表面该光线943可能不会与几何体相交,此时,不再对该光线943与几何体相交进行计算。
在一些实施例中,即使光线最终可能与几何体相交,但是光线行进的步数较大时,计算量会比较大,且求得的交点的位置较远,该点经过渲染后,对于视觉效果不会起到很好的效果,因此,将行进的步数设置最大上限值,具体可以根据实际场景设置,例如,步长可以为1米,即光线每前进一步即为前进1米的距离。在房间内或有局限空间的场景中,人眼可看到的物体较近,因此,可将前进的次数(前进的总步数)的上限设定为100次等。当场景为空旷的场地,或蓝天白云的场景中时,步长可以设定更长,例如5米,10米等,或者步数的上限可以设置更大,200步,500步等。本申请对此并不做限定。按照上述光线行进和计算方法,依次计算出掩膜贴图920中标记为1的像素对应的所有光线。这些光线在行进时,一些光线在行进N步后,头部恰好与几何体的表面相交,一些光线在行进N部后位于几何体内部,一些光线行进N步后位于几何体外部。对于每个光线与几何体相交的情况,分别进行处理。
在本申请的一个实施例中,对于位于几何体的外部的光线可以根据实际行进步数N与预设步数上限来确定当前光线是否能够与几何体相交。当步数N大于等于设定步数T时,光线头部的端点依然没有与几何体相交,如图9中的光线943,则手机可以确定该光线不会与几何体相交。
下面结合光线行进的流程图,对光线行进的过程进行说明。参考图10,图10示出了本申请实施例的光线行进处理的流程图。该流程可以由电子设备,例如手机执行,进一步可以由手机中的GPU执行,如图10所示,该流程图包括S1001-S1009。
S1001,光线初始化。
为光线设置行进参数,例如光线的行进的起点,光线行进的方向。其中,将相机原点(camera origin)作为光线行进的起点。其中,相机原点是指相机空间坐标,即相机在世界空间中的位置。将相机原点到像素(标识有1)的单位向量作为光线行进的方向。
S1002,光线头部沿前进方向移动固定步长。
在本申请的实施例中,固定步长可以根据场景进行设定,例如1米。行进的示意图可参考图9中的光线941。
S1003,光线头部的端点坐标代入方程,得到计算结果N。
具体计算过程,可以参考图9所示的光线941行进时,对头部的端点a的描述。
S1004,判断是否与几何体相交。
基于N的结果判断当前的光线的头部是否与几何体相交。其中,N是指因变量的结果,当N的值为0时,表明当前光线头部的端点位于几何体的表面,则GPU执行S1005。
在S1007,输出光线头部的端点世界坐标。将该端点的世界坐标作为描述几何体的表面的点坐标。
在S1004中,若N不等于0时,基于N*N0乘积的结果判断在几何体的内部或者是外部。其中,N0是用来表示上一次符号距离场算法的结果,N用来表示当前基于符号距离场计算的结果。当N*N0大于0时,表明光线前一次和当前一次箭头的方向相同,这种情况可能是都位于几何体内部,或者都位于几何体的外部。此时,GPU执行S1008,N0=N。即将N幅值N0,并保存,以便于下次循环计算时,判断光线是否与几何体相交或相撞。
在S1004中,若N不等于0时,当N*N0小于0时,表明光线前一次和当前一次箭头的方向相反,可能是上一次在光线头部位于几何体的外部,即N0为正值,而当前一次光线头部进入几何体内部,此时N值为负值;或者,上一次在光线头部位于几何体的内部,即N0为负值,而当前一次光线头部进入几何体的外部,N值为正值,这两种情况下N*N0小于0,GPU需要执行S1006和S1007,
在S1006中,步长减半。即取原来步长的一半进行光线行进。
在S1007中,前进的方向取反方向。由于当前和上一次光线头部分别位于几何体表面的两侧,因此,表面光线头部穿过了几何体表面,因此,需要掉头行进,并且步长取上一次行进步长的一半,可以快速的得到几何体表面的端点坐标。
随后,GPU执行S1008,将N幅值N0,并保存,以便于继续判断光线是否与几何体相交或相撞。
在S1009,判断当前迭代次数与T的关系。
其中,T为事先基于场景合理设置的最大迭代次数,即为光线行进设定的总步数的上限,当迭代次数>=T时,表明对应的光线可能不会与几何体的表面相交,并且接下来执行S1005,直接输出光线头部的端点的世界坐标,该输出值不用于描述几何体的表面。
若当迭代次数小于T时,GPU执行S1002,继续执行S1002。
即光线按照当前设定的步长继续行进,继续将每一次光线头部的端点代入方程,求当前的N值,构成循环体,直到当N为0,或者当前的迭代次数大于等于T时,输出端点值,从而基于有标识像素光线行进得到描述几何体的表面的世界坐标。
下面结合附图对光线行进的过程进行描述
参考图11,图11示出了本申请实施例的不同光线的头部的端点与几何体表面距离的示意图。如图11所示,许多条光线射出后,一些与几何体相交,一些无法与几何体相交,如图11中的光线911,即为N大于0的情况。其中,对于光线911属于N大于0的情况,在下面的步骤中进行介绍。
其中,与几何体相交的光线包括两种情况:第一种情况为,在光线行进n步时,与几何体相交直接得到交点,如图11所示的交点g和交点h,此时可以将g点和h点的世界坐标作为描述几何体的表面的坐标对应的输出至各自的像素中。此外,在一些实施例中,e点和f点,对应的值为-0.01和0.01,当与0接近的范围设定范围在-0.01~0.01之间(可包括两个端点)时,此时,认为e点和f点为交点,且对应的世界坐标作为描述几何体的表面的世界坐标。
第二种情况,即当N小于0,或小于设定范围的下限,例如-0.01时的情况,表面端点落入几何体内部,如图11所示,当光线头部从a点行进到b点(一个步长1米),此时,基于b点的坐标求得的N小于0,表明落入几何体的内部。GPU按照步长减半,行进方向取反,继续行进,如图11所示,从b点到c点,步长为0.5米,再基于c点计算N值,若N依然小于0,继续按照减半后的步长和反方向行进,如图11中的从c点到d点,直到光线头部的端点位于几何体的表面上,得到交点d。
在本申请的一个实施例中,当光线反向行进后,求得的N依然小于0时,则继续按照减半的步长(原步长的1/2)行进,直到与几何体的表面相交。
在本申请的一些实施例中,当基于反向行进的光线头部的端点求得的N大于0,则按照正向方向,步长再次减半(原步长的1/4),继续行进并计算N,如此循环,直到N为0。或循环后的总步数超过设定值,则不在对该光线进行计算。即对应图10中的N*N0<0的情况。
需要说明的是,本申请的上述实施例中,GPU执行的步骤也可以是由CPU执行,在一些实施例中,CPU执行的步骤也可以由GPU执行,或者都有GPU执行,或都由CPU执行,本申请对此并不作为限定。
基于上述图5描述的渲染方法,本申请还可以通过对上述步骤进行细分,或增加步骤,对应的得到如图12所示的本申请实施例的渲染方法的另一流程图。如图12所示,该流程图包括S1201-S1211。其中,这些步骤可以由部署在应用程序中的渲染引擎开始执行。该渲染引擎可以为处理器中的子模块。
S1201,执行场景更新。
可以理解为几何体空间信息更新。即为渲染引擎更新阶段,渲染引擎根据业务逻辑信息,例如动画更新后的数据,定义几何体的世界空间的核心参数。例如,球体需要定义球心世界坐标和球的半径,立方体需要定义立体中心世界坐标以及立方体的方程中长宽高系数。该步骤对应图5中的S501和S502。
S1202,构建包围盒。该步骤对应图5中的S503。
S1203,确定包围盒顶点数据。该步骤对应图5中的S503。
S1204,包围盒渲染。该步骤对应图5中的S504。
S1205,确定掩膜贴图。该步骤对应图5中的S504。
S1206,采样掩膜贴图。该步骤对应图5中的S505。
S1207,确定像素对应的采样值否为0。
若为0,处理器执行S1208,终止渲染或输出指定数据。即表面该像素对应的光线不会与几何体的表面相交,此时,该像素对应的光线不再参与距离场光线前进计算。
若不为0,处理器执行S1209,距离场光线前进,计算光线与几何体的表面的交点。该步骤对应图5中的S505。
S1210,交点着色。该步骤对应图5中的S506。
S1211,后处理渲染(Post Processing Render)。
该后处理渲染是对掩膜贴图的后处理,例如边缘检测、物体发光、体积光、信号故障效果的处理等。具体可参考现有技术中后处理渲染流程,本申请对此不再详细说明。
基于上述基于符号距离场模拟光线追踪,从而在不需要几何体模型的情况下,可以得到描述几何体表面的坐标,不再通过模型资源的加载和渲染来生成模型几何信息,减少实时渲染过程中内存的开销,便于光线头部的端点是否与几何体相交的判断。此外,由于通过渲染几何体的包围盒,生成Mask贴图,确定出与几何体关联的有效像素范围,只对有效像素范围之内的像素执行光线行进,并基于光线行进的步数和次数计算光线与几何体的交点,获得几何体表面坐标。从而可以大大减少参与计算的光线的数量,提高的渲染的速度,降低芯片功耗负载。同时,可以保持特效场景中图像运行帧率,确保更加的播放效果
参考图13,本申请还提供一种电子装置1300,电子装置1300包括:
坐标转换模块1310,用于确定场景中的待渲染物体对应的几何体的世界坐标;
顶点确认模块1320,用于基于几何体的世界坐标,确定几何体对应的包围盒在世界坐标中的顶点数据;
生成模块1330,用于基于包围盒的顶点数据,生成与视平面对应的掩膜贴图,对被包围盒覆盖的像素标记第一标识,其中,标记有第一标识的像素的范围包含几何体能够覆盖的所有像素,视平面为与屏幕对应的二维图像;
计算模块1340,用于将具有第一标识的像素参与光线行进计算,得到描述几何体的表面的世界坐标,以及基于几何体的表面的世界坐标进行着色计算,得到渲染目标图像。
根据本申请实施例的电子装置,通过渲染几何体的包围盒,生成Mask贴图,确定出与几何体关联的有效像素范围,只对有效像素范围之内的像素执行光线行进,并基于光线行进的步数和次数计算光线与几何体的交点,获得几何体表面坐标。从而可以大大减少参与计算的光线的数量,提高的渲染的速度,降低芯片功耗负载。
在本申请的一些实施例中,生成模块1330用于:创建一张与视平面图像,将视平面图像对应的像素值用第二标识初始化,第一标识不同于第二标识;基于包围盒的顶点数据将几何体对应的包围盒渲染到视平面图像上,得到掩膜贴图。通过不同的标识从而将包围盒所覆盖的像素和未覆盖的像素有效的区分,便于快速获取有效的像素。
在本申请的一些实施例中,计算模块1340用于:设置第一视角在世界坐标中的位置,将第一视角作为光线发出的起点;基于第一视角和具有第一标识的像素确定光线在世界坐标中发射方向,并将光线按照预设步长行进,每行进一个步长后确定光线头部的端点的世界坐标;当确定端点的世界坐标位于几何体的表面,则将端点的世界坐标作为几何体的表面的世界坐标。基于有效的像素参与光线行进计算,并快速的得到描述几何体的表面的世界坐标,较少了光线计算量。
在本申请的一些实施例中,计算模块1340用于:将端点的世界坐标代入符号距离场方程中,当方程中的因变量的结果为0,或与0的差值的绝对值在预设数值范围内,则确定端点的世界坐标位于几何体的表面。
在本申请的一些实施例中,当计算模块1340确定端点坐标位于几何体的外部,则用于继续将光线按照预设步长行进,直到确定端点位于几何体的表面或几何体的内部;将位于几何体内部的端点的世界坐标,按照预设步长减半,光线原来的行进的方向设为反方向,继续行进,直到端点位于几何体的表面;电子设备将位于几何体的表面的端点的世界坐标作为几何体的表面的世界坐标。该方法,有利于快速准确的找到光线与几何体表面的交点。
在本申请的一些实施例中,当光线行进的步数达到预设步数时,端点的世界坐标仍然没有位于几何体的表面时,计算模块1340用于判断光线不会与几何体的表面相交,并对不相交的光线对应的像素输出非几何体表面的坐标。可以避免无效的光线行进,降低计算量。
在本申请的一些实施例中,计算模块1340用于:将端点的世界坐标代入符号距离场方程中,当方程中的因变量的结果大于0,或大于预设数值范围的上限,则确定端点的世界坐标位于几何体的外部。
在本申请的一些实施例中,计算模块1340用于:将端点的世界坐标代入符号距离场方程中,当方程中的因变量的结果小于0,或小于预设数值范围的下限,则确定端点坐标位于几何体的内部。
在本申请的一些实施例中,电子装置还包括输出模块1350,计算模块1340用于:确定当前像素对应的端点的法线坐标;基于法线坐标、端点的世界坐标、第一视角的观测向量、以及添加光源向量计算光线发生折射/或反射时的光能量分布的颜色信息,由输出模块1350将颜色信息输出至掩膜贴图对应的像素中,得到渲染目标图像。该方法可以有效的计算出有效像素对应的颜色值,可以得到高质量的渲染效果。
在本申请的一些实施例中,计算模块1340用于:计算位于几何体的表面的世界坐标分别在世界空间中的X轴方向和Y轴方向的差分;构建几何体的表面的世界坐标在X轴和Y轴方向上的偏移向量,计算X轴和Y轴的偏移向量的叉积,得到端点对应的几何体的表面的法线坐标。
在本申请的一些实施例中,坐标转换模块1310用于:定义表达几何体的参数;基于几何体的参数确定几何体的世界坐标。不再通过模型资源的加载和渲染来生成模型几何信息,减少实时渲染过程中内存的开销,便于光线头部的端点的计算。
在本申请的一些实施例中,所述顶点数据包括顶点坐标和顶点坐标的索引数据。
本申请还提供一种电子设备,包括:
存储器,用于存储由设备的一个或多个处理器执行的指令,以及
处理器,用于执行上述实施例中结合图5至图12所解释的方法。
本申请还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器运行时,使得处理器执行上述实施例中图5至图12所解释的方法。
本申请还提供一种包含指令的计算机程序产品,当该计算机程序产品在电子设备上运行时,使得处理器执行上述实施例中图5至图12所示的方法。
现在参考图14,所示为根据本申请的一实施例的SoC(System on Chip,片上系统)1400的框图。在图14中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图14中,SoC1400包括:互连单元1450,其被耦合至应用处理器1410;系统代理单元1480;总线控制器单元1490;集成存储器控制器单元1440;一组或一个或多个协处理器1420,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(Static Random Access Memory,SRAM)单元1430;直接存储器存取(DMA)单元1460。在一个实施例中,协处理器1420包括专用处理器,诸如例如网络或通信处理器、压缩引擎、通用计算图形处理器(General Purpose Computing on GPU,GPGPU)、高吞吐量集成多核架构(Many Integrated Core,MIC)处理器、或嵌入式处理器等。
静态随机存取存储器(SRAM)单元1430中可以包括用于存储数据和/或指令的一个或多个计算机可读介质。计算机可读存储介质中可以存储有指令,具体而言,存储有该指令的暂时和永久副本。该指令可以包括:由处理器中的至少一个单元执行时使Soc1400执行根据上述实施例中的拍摄方法,具体可参照上述实施例图5和图12所解释的渲染方法,在此不再赘述。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(Digital Signal Processor,DSP)、微控制器、专用集成电路(应用application Specific Integrated Circuit,ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、光盘只读存储器(Compact Disc Read Only Memory,CD-ROMs)、磁光盘、只读存储器(Read OnlyMemory,ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(Erasable ProgrammableRead Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically ErasableProgrammable Read Only Memory,EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明书附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (15)
1.一种渲染方法,应用于电子设备,其特征在于,所述方法包括:
确定场景中的待渲染物体对应的几何体的世界坐标;
基于所述几何体的世界坐标,确定所述几何体对应的包围盒在所述世界坐标中的顶点数据;
基于所述包围盒的顶点数据,生成与视平面对应的掩膜贴图,对被所述包围盒覆盖的像素标记第一标识,其中,所述标记有第一标识的像素的范围包含所述几何体能够覆盖的所有像素,所述视平面为与屏幕对应的二维图像;
将具有所述第一标识的像素参与光线行进计算,得到描述所述几何体的表面的世界坐标;
基于所述几何体的表面的世界坐标进行着色计算,得到渲染目标图像。
2.根据权利要求1所述的方法,其特征在于,基于所述包围盒的顶点数据,生成与视平面对应的掩膜贴图,包括:
创建一张与所述视平面图像,将所述视平面图像对应的像素值用第二标识初始化,所述第一标识不同于所述第二标识;
基于所述包围盒的顶点数据将所述几何体对应的包围盒渲染到所述视平面图像上,得到所述掩膜贴图。
3.根据权利要求1或2所述的方法,其特征在于,将具有所述第一标识的像素参与光线行进计算,得到描述所述几何体的表面的世界坐标,包括:
设置第一视角在所述世界坐标中的位置,将所述第一视角作为光线发出的起点;
基于所述第一视角和具有所述第一标识的像素确定所述光线在所述世界坐标中发射方向,并将所述光线按照预设步长行进,每行进一个步长后确定光线头部的端点的世界坐标;
当确定所述端点的世界坐标位于所述几何体的表面,则将所述端点的世界坐标作为所述几何体的表面的世界坐标。
4.根据权利要求3所述的方法,其特征在于,确定所述端点的世界坐标位于所述几何体的表面,包括:
将所述端点的世界坐标代入符号距离场方程中,当方程中的因变量的结果为0,或与0的差值的绝对值在预设数值范围内,则确定所述端点的世界坐标位于所述几何体的表面。
5.根据权利要求3所述的方法,其特征在于,当确定所述端点的世界坐标位于所述几何体的外部,则继续将所述光线按照预设步长行进,直到确定所述端点位于所述几何体的表面或所述几何体的内部;
将位于所述几何体内部的所述端点的世界坐标,按照预设步长减半,光线原来的行进的方向设为反方向,继续行进,直到所述端点位于所述几何体的表面;
所述电子设备将位于所述几何体的表面的所述端点的世界坐标作为所述几何体的表面的世界坐标。
6.根据权利要求4或5所述的方法,其特征在于,当所述光线行进的步数达到预设步数时,所述端点的世界坐标仍然没有位于所述几何体的表面时,所述电子设备判断所述光线不会与所述几何体的表面相交,并对不相交的所述光线对应的像素输出非几何体表面的坐标。
7.根据权利要求5或6所述的方法,其特征在于,确定所述端点的世界坐标位于所述几何体的外部,包括:
将所述端点的世界坐标代入符号距离场方程中,当方程中的因变量的结果大于0,或大于所述预设数值范围的上限,则确定所述端点的世界坐标位于所述几何体的外部。
8.根据权利要求5或6所述的方法,其特征在于,确定所述端点坐标位于所述几何体的内部,包括:
将所述端点的世界坐标代入符号距离场方程中,当方程中的因变量的结果小于0,或小于所述预设数值范围的下限,则确定所述端点坐标位于所述几何体的内部。
9.根据权利要求3-8任一项所述的方法,其特征在于,基于所述几何体的表面的世界坐标进行着色计算,包括:
确定当前像素对应的端点的法线坐标;
基于所述法线坐标、所述端点的世界坐标、所述第一视角的观测向量、以及添加光源向量计算光线发生折射/或反射时的光能量分布的颜色信息;
将所述颜色信息输出至所述掩膜贴图对应的像素中,得到渲染目标图像。
10.根据权利要求9所述的方法,其特征在于,确定当前像素对应的端点的法线坐标,包括:
计算位于所述几何体的表面的世界坐标分别在所述世界空间中的X轴方向和Y轴方向的差分;
构建所述几何体的表面的世界坐标在X轴和Y轴方向上的偏移向量,计算X轴和Y轴的偏移向量的叉积,得到所述端点对应的几何体的表面的法线坐标。
11.根据权利要求1-10任一项所述的方法,其特征在于,确定场景中的待渲染物体对应的几何体的世界坐标,包括:
定义表达几何体的参数;
基于所述几何体的参数确定所述几何体的世界坐标。
12.根据权利要求1-10任一项所述的方法,其特征在于,所述顶点数据包括顶点坐标和顶点坐标的索引数据。
13.一种电子设备,其特征在于,包括:
存储器,用于存储由设备的一个或多个处理器执行的指令,以及
处理器,用于执行所述指令,以使得所述电子设备执行权利要求1-12任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器运行时,使得所述处理器执行权利要求1-12任一项所述的方法。
15.一种包含指令的计算机程序产品,其特征在于,当该计算机程序产品在电子设备上运行时,使得处理器执行权利要求1-12任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210934789.2A CN116051713B (zh) | 2022-08-04 | 2022-08-04 | 渲染方法、电子设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210934789.2A CN116051713B (zh) | 2022-08-04 | 2022-08-04 | 渲染方法、电子设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116051713A true CN116051713A (zh) | 2023-05-02 |
CN116051713B CN116051713B (zh) | 2023-10-31 |
Family
ID=86122389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210934789.2A Active CN116051713B (zh) | 2022-08-04 | 2022-08-04 | 渲染方法、电子设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116051713B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116824028A (zh) * | 2023-08-30 | 2023-09-29 | 腾讯科技(深圳)有限公司 | 图像着色方法、装置、电子设备、存储介质及程序产品 |
CN117560578A (zh) * | 2024-01-12 | 2024-02-13 | 北京睿呈时代信息科技有限公司 | 基于三维场景渲染且视点无关的多路视频融合方法及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1085471A2 (en) * | 1999-09-14 | 2001-03-21 | Sony Computer Entertainment Inc. | Method of creating a dynamic image, storage medium and program executing apparatus |
CN102708585A (zh) * | 2012-05-09 | 2012-10-03 | 北京像素软件科技股份有限公司 | 一种渲染模型轮廓边缘的方法 |
CN107452048A (zh) * | 2016-05-30 | 2017-12-08 | 网易(杭州)网络有限公司 | 全局光照的计算方法及装置 |
CN112734896A (zh) * | 2021-01-08 | 2021-04-30 | 网易(杭州)网络有限公司 | 环境遮蔽渲染方法、装置、存储介质及电子设备 |
CN113077539A (zh) * | 2021-04-08 | 2021-07-06 | 网易(杭州)网络有限公司 | 目标虚拟模型的渲染方法、装置及电子设备 |
CN113178014A (zh) * | 2021-05-27 | 2021-07-27 | 网易(杭州)网络有限公司 | 场景模型渲染方法、装置、电子设备和存储介质 |
WO2021208486A1 (zh) * | 2020-04-16 | 2021-10-21 | 深圳先进技术研究院 | 一种相机坐标变换方法、终端以及存储介质 |
CN113674389A (zh) * | 2021-10-25 | 2021-11-19 | 深圳须弥云图空间科技有限公司 | 场景渲染方法、装置、电子设备及存储介质 |
CN113936097A (zh) * | 2021-09-30 | 2022-01-14 | 完美世界(北京)软件科技发展有限公司 | 体积云渲染方法、设备及存储介质 |
CN114049421A (zh) * | 2021-11-23 | 2022-02-15 | 中山大学 | 基于cpu的静态场景光线追踪棋盘渲染方法、系统及存储介质 |
CN114581589A (zh) * | 2020-11-30 | 2022-06-03 | 华为技术有限公司 | 图像处理方法及相关装置 |
-
2022
- 2022-08-04 CN CN202210934789.2A patent/CN116051713B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1085471A2 (en) * | 1999-09-14 | 2001-03-21 | Sony Computer Entertainment Inc. | Method of creating a dynamic image, storage medium and program executing apparatus |
CN102708585A (zh) * | 2012-05-09 | 2012-10-03 | 北京像素软件科技股份有限公司 | 一种渲染模型轮廓边缘的方法 |
CN107452048A (zh) * | 2016-05-30 | 2017-12-08 | 网易(杭州)网络有限公司 | 全局光照的计算方法及装置 |
WO2021208486A1 (zh) * | 2020-04-16 | 2021-10-21 | 深圳先进技术研究院 | 一种相机坐标变换方法、终端以及存储介质 |
CN114581589A (zh) * | 2020-11-30 | 2022-06-03 | 华为技术有限公司 | 图像处理方法及相关装置 |
CN112734896A (zh) * | 2021-01-08 | 2021-04-30 | 网易(杭州)网络有限公司 | 环境遮蔽渲染方法、装置、存储介质及电子设备 |
CN113077539A (zh) * | 2021-04-08 | 2021-07-06 | 网易(杭州)网络有限公司 | 目标虚拟模型的渲染方法、装置及电子设备 |
CN113178014A (zh) * | 2021-05-27 | 2021-07-27 | 网易(杭州)网络有限公司 | 场景模型渲染方法、装置、电子设备和存储介质 |
CN113936097A (zh) * | 2021-09-30 | 2022-01-14 | 完美世界(北京)软件科技发展有限公司 | 体积云渲染方法、设备及存储介质 |
CN113674389A (zh) * | 2021-10-25 | 2021-11-19 | 深圳须弥云图空间科技有限公司 | 场景渲染方法、装置、电子设备及存储介质 |
CN114049421A (zh) * | 2021-11-23 | 2022-02-15 | 中山大学 | 基于cpu的静态场景光线追踪棋盘渲染方法、系统及存储介质 |
Non-Patent Citations (2)
Title |
---|
AVELINA HADJI-KYRIACOU ET AL: "Raymarching Distance Fields with CUDA", ELECTRONICS, no. 10, pages 1 - 26 * |
乐璐: "模型转换符号距离场算法实现", 现代计算机, no. 12, pages 12 - 16 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116824028A (zh) * | 2023-08-30 | 2023-09-29 | 腾讯科技(深圳)有限公司 | 图像着色方法、装置、电子设备、存储介质及程序产品 |
CN116824028B (zh) * | 2023-08-30 | 2023-11-17 | 腾讯科技(深圳)有限公司 | 图像着色方法、装置、电子设备、存储介质及程序产品 |
CN117560578A (zh) * | 2024-01-12 | 2024-02-13 | 北京睿呈时代信息科技有限公司 | 基于三维场景渲染且视点无关的多路视频融合方法及系统 |
CN117560578B (zh) * | 2024-01-12 | 2024-04-16 | 北京睿呈时代信息科技有限公司 | 基于三维场景渲染且视点无关的多路视频融合方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116051713B (zh) | 2023-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230053462A1 (en) | Image rendering method and apparatus, device, medium, and computer program product | |
CN116051713B (zh) | 渲染方法、电子设备和计算机可读存储介质 | |
CN102622776B (zh) | 三维环境重构 | |
CN111369655B (zh) | 渲染方法、装置和终端设备 | |
CN106575445B (zh) | 毛皮虚拟化身动画 | |
WO2012037157A2 (en) | System and method for displaying data having spatial coordinates | |
CN113808245B (zh) | 用于遍历光线追踪加速结构的增强技术 | |
US20130257856A1 (en) | Determining a View of an Object in a Three-Dimensional Image Viewer | |
KR20080090671A (ko) | 3d 객체 모델에 텍스쳐를 매핑하는 방법 및 장치 | |
Kersten et al. | Virtual reality for cultural heritage monuments–from 3D data recording to immersive visualisation | |
CN111784833A (zh) | 基于WebGL的洪水演进态势三维动态可视化展示方法 | |
US10325403B2 (en) | Image based rendering techniques for virtual reality | |
CN105184843B (zh) | 一种基于OpenSceneGraph的三维动画制作方法 | |
CN104867175A (zh) | 一种虚拟效果图实景展示装置及其实现方法 | |
JP2012190428A (ja) | 立体映像視覚効果処理方法 | |
US9401044B1 (en) | Method for conformal visualization | |
CN114375464A (zh) | 使用边界体积表示对虚拟空间中的动态单元进行光线追踪 | |
JP7460778B2 (ja) | モバイル機器における大規模建築物の拡張現実具現のためのデータ最適化及びインターフェース向上方法 | |
Trapp et al. | Colonia 3D communication of virtual 3D reconstructions in public spaces | |
CN114781140A (zh) | 激光雷达点云仿真方法、装置和计算机设备 | |
Stemkoski et al. | Developing Graphics Frameworks with Java and OpenGL | |
CN114020390A (zh) | Bim模型显示方法、装置、计算机设备和存储介质 | |
WO2024027237A1 (zh) | 渲染的优化方法、电子设备和计算机可读存储介质 | |
Tao | A VR/AR-based display system for arts and crafts museum | |
WO2024027286A1 (zh) | 渲染方法、装置、设备及存储介质 |
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 |