CN109544674A - 一种体积光实现方法及装置 - Google Patents
一种体积光实现方法及装置 Download PDFInfo
- Publication number
- CN109544674A CN109544674A CN201811396621.0A CN201811396621A CN109544674A CN 109544674 A CN109544674 A CN 109544674A CN 201811396621 A CN201811396621 A CN 201811396621A CN 109544674 A CN109544674 A CN 109544674A
- Authority
- CN
- China
- Prior art keywords
- space
- vertex
- model
- volume
- conversion
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/55—Radiosity
-
- 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
- Y02B—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
- Y02B20/00—Energy efficient lighting technologies, e.g. halogen lamps or gas discharge lamps
- Y02B20/40—Control techniques providing energy savings, e.g. smart controller or presence detection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本公开提供一种体积光实现方法及装置,涉及图像处理技术领域。本公开提供的体积光实现方法及装置,在三维游戏场景中,设定光源并创建渲染模型后,将渲染模型的顶点作为模型空间的顶点,并对模型空间进行空间转换,以得到裁剪空间,在得到裁剪空间后,输出裁剪空间的顶点坐标,将裁剪空间的顶点组装为图元并光栅化为体积光片元,将模型空间的顶点进行插值运算,根据进行插值运算后的模型空间的顶点坐标对体积光片元进行着色,得到体积光片元的颜色以及透明度,进而降低了三维游戏场景中体积光模拟的计算量。
Description
技术领域
本公开涉及图像处理技术领域,具体而言,涉及一种体积光实现方法及装置。
背景技术
在当今的三维游戏场景中,遮光物体被光源照射时,在其周围呈现的光的放射性泄露,称其为体积光。例如太阳照到树上,会从树叶的缝隙中透过形成光柱。之所以称之为体积光,是因为这种特效下的光照相比以往游戏中的光照给人视觉上以空间的感觉,进而体积光让游戏玩家拥有更真实的感觉。
现如今三维(3Dimensions,3D)游戏已不仅仅局限在个人计算机(personalcomputer,PC)机中安装运行,在可移动设备(比如手机)中安装运行已成为了一种趋势。但是由于可移动设备的性能及其电量的限制,在PC机中使用的现有体积光模拟技术,过于复杂,使用在可移动设备中时会导致游戏渲染效率低下,耗电量大增。
发明内容
有鉴于此,本公开提供一种体积光实现方法及装置。
本公开提供的一种体积光实现方法,所述方法包括:
设定光源位置并创建渲染模型。
将所述渲染模型的顶点作为模型空间的顶点并将所述模型空间进行空间转换,得到裁剪空间。
输出所述裁剪空间的顶点坐标。
将所述裁剪空间的顶点组装为图元并光栅化为体积光片元,以及将所述模型空间的顶点进行插值运算。
根据进行插值运算后的所述模型空间的顶点坐标对所述体积光片元进行着色,得到所述体积光片元的颜色以及透明度。
进一步的,将所述渲染模型的顶点作为模型空间的顶点并将所述模型空间进行空间转换,得到裁剪空间的步骤包括:
判断所述光源位置是否在游戏场景中摄像机的可视范围内,如果所述光源位置在可视范围内,根据光源朝向以及游戏场景中摄像机的视角方向计算参考点,以根据所述参考点将所述渲染模型的顶点作为模型空间的顶点并将所述模型空间进行空间转换,得到裁剪空间。
进一步的,将所述模型空间进行空间转换,得到裁剪空间的步骤包括:
对所述模型空间进行世界转换,得到世界空间。
对所述世界空间进行视见转换,得到相机空间。
对所述相机空间进行投影转换,得到裁剪空间。
进一步的,对所述模型空间进行世界转换,得到世界空间的步骤包括:
对所述模型空间的顶点设定渲染尺寸比例。
根据设定有渲染尺寸比例的顶点坐标、摄像机的视角方向向量以及所述参考点的位置坐标对所述模型空间进行世界转换,以得到世界空间。
进一步的,在根据进行插值运算后的所述模型空间的顶点坐标对所述体积光片元进行着色,得到所述体积光片元的颜色以及透明度之后,所述方法还包括:
将所述体积光片元的颜色以及透明度与游戏场景中实体片元的颜色以及透明度进行混合操作,得到渲染后的游戏场景中实体片元的颜色以及透明度。
本公开提供一种体积光实现装置,包括设定模块、处理模块以及存储模块;
所述存储模块预存有顶点着色器、片元着色器以及光栅器。
所述设定模块用于设定光源位置并创建渲染模型。
所述处理模块用于将所述渲染模型的顶点作为模型空间的顶点并通过所述顶点着色器将所述模型空间进行空间转换,得到裁剪空间;
所述处理模块用于在得到所述裁剪空间后,输出所述裁剪空间的顶点坐标。
所述处理模块用于通过所述光栅器将所述裁剪空间的顶点组装为图元并光栅化为体积光片元,以及将所述模型空间的顶点进行插值运算。
所述处理模块用于通过所述片元着色器根据进行插值运算后的所述模型空间的顶点坐标对所述体积光片元集合进行着色,得到所述体积光片元的颜色以及透明度。
进一步的,所述体积光实现装置还包括判断模块,所述处理模块用于将所述渲染模型的顶点作为模型空间的顶点并通过所述顶点着色器将所述模型空间进行空间转换,得到裁剪空间包括:
所述判断模块用于判断所述光源位置是否在游戏场景中摄像机的可视范围内。
其中,如果所述光源位置在可视范围内,所述处理模块用于根据光源朝向以及游戏场景中摄像机的视角方向计算参考点,以使所述处理模块根据所述参考点将所述渲染模型的顶点作为模型空间的顶点并通过所述顶点着色器将所述模型空间进行空间转换,得到裁剪空间。
进一步的,所述处理模块通过所述顶点着色器将所述模型空间进行空间转换,得到裁剪空间包括:
所述处理模块用于对所述模型空间进行世界转换,得到世界空间。
所述处理模块用于对所述世界空间进行视见转换,得到相机空间。
所述处理模块用于对所述相机空间进行投影转换,得到裁剪空间。
进一步的,所述处理模块用于对所述模型空间进行世界转换,得到世界空间包括:
所述处理模块用于对所述模型空间的顶点设定渲染尺寸比例,并根据设定有渲染尺寸比例的顶点坐标、摄像机的视角方向向量以及所述参考点的位置坐标对所述模型空间进行世界转换,以得到世界空间。
进一步的,所述体积光实现装置还包括渲染模块,在得到所述体积光片元的颜色以及透明度之后,
所述渲染模块用于将所述体积光片元的颜色以及透明度与游戏场景中实体片元的颜色以及透明度进行混合操作,得到渲染后的场景实体片元的颜色以及透明度。
本公开提供的体积光实现方法及装置,在三维游戏场景中,设定光源并创建渲染模型后,将渲染模型的顶点作为模型空间的顶点,并对模型空间进行空间转换,以得到裁剪空间,在得到裁剪空间后,输出裁剪空间的顶点坐标,将裁剪空间的顶点组装为图元并光栅化为体积光片元,同时,将模型空间的顶点进行插值运算,根据进行插值运算后的模型空间的顶点坐标对体积光片元进行着色,得到体积光片元的颜色以及透明度,进而降低了三维游戏场景中体积光模拟的计算量,提高了游戏场景渲染的效率。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本公开所提供的电子设备的方框示意图。
图2为本公开所提供的体积光实现装置的方框示意图。
图3为本公开所提供的体积光实现方法的一种流程示意图。
图4为本公开所提供的体积光实现方法中的渲染模型示意图。
图5为本公开所提供的体积光实现方法的另一种流程示意图。
图6为本公开所提供的体积光实现方法的又一种流程示意图。
图7为本公开所提供的体积光实现方法中的空间顶点转换示意图。
图8为本公开所提供的体积光实现方法的又一种流程示意图。
图标:100-电子设备;10-体积光实现装置;11-设定模块;12-处理模块;13-存储模块;14-判断模块;15-渲染模块;20-存储器;30-显卡单元;40-处理器;50-通信单元。
具体实施方式
下面将结合本公开中附图,对本公开中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
体积光作为游戏场景中的光照特效,让游戏玩家拥有更真实的感觉。现如今三维(3 Dimensions,3D)游戏已不仅仅局限在个人计算机(personal computer,PC)机中安装运行,能在可移动设备(比如手机)中安装运行已成为了一种趋势。但是由于可移动设备的性能及其电量的限制,在PC机中使用的现有体积光模拟技术,过于复杂,使用在可移动设备中时导致游戏渲染效率低下,耗电量大增。
目前,常用的体积光实现方法是使用光线追踪技术。光线追踪(Ray tracing)是三维计算机图形学中的特殊渲染算法,跟踪从眼睛发出的光线而不是光源发出的光线,通过这样一项技术生成编排好的场景的数学模型显现出来。但是这种体积光实现方法算法复杂,计算成本非常高,游戏渲染效率低下。
针对上述问题,本公开提供一种体积光实现方法及装置,以改善上述问题。
请结合参阅图1,本公开所提供的体积光实现方法应用于电子设备100,由所述电子设备100执行本公开所提供的体积光实现方法。在本公开中,所述电子设备100可以是,但不限于,个人电脑(Personal Computer,PC)、笔记本电脑、个人数字助理(PersonalDigital Assistant,PDA)或具有图像处理功能的服务器等具有游戏场景模拟处理能力的电子设备100。
所述电子设备100包括图2所示的体积光实现装置10、存储器20、处理器40、通信单元50以及显卡单元30;所述存储器20、处理器40、通信单元50以及显卡单元30各个元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互直接可通过一条或多条通讯总线或信号线实现电性连接。所述体积光实现装置10包括至少一个可以软件或固件(Firmware)的形式存储于所述存储器20中的软件功能模块,所述处理器40通过运行存储在存储器20内的软件程序以及模块,从而执行各种功能应用以及数据处理。
所述存储器20可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
所述处理器40可以是一种集成电路芯片,具有信号的处理能力。所述处理器40可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等。
所述通信单元50用于通过网络建立所述电子设备100与其他外部设备之间的通信连接,并通过所述网络进行数据传输。
所述显卡单元30用于对图形数据进行运算处理,所述显卡单元30的核心部件为图形处理器(Graphics Processing Unit,GPU),用于将电子设备100所需的图形数据信息进行转换驱动,并控制显示器进行显示。
请结合参阅图3,图3为本公开所提供的一种体积光实现方法的流程示意图。下面对图3所示的体积光实现方法的具体流程进行详细阐述。
步骤S10:设定光源位置并创建渲染模型。
其中,在三维游戏场景中,所述光源可以为游戏场景中的太阳、月亮、灯光等场景物体,其位置根据游戏场景中的具体情况而设定。在设定好所述光源位置后,创建渲染模型。
其中,所述渲染模型为几何面片,可选的,本公开所创建的渲染模型为四边形面片;所述四边形面片由四个顶点坐标构成的四边形呈现,顶点坐标的设置不限定,可选的,本公开为了方便设置,将顶点坐标设置为(-1,1)、(1,1)、(-1,-1)和(-1,1)。如图4所示,初始的四个顶点连线组成两个三角形,进而构成一个正四边形平面。
步骤S20:将所述渲染模型的顶点作为模型空间的顶点并将所述模型空间进行空间转换,得到裁剪空间。
其中,所述渲染模型为四边形面片,而所述四边形面片是由四个顶点坐标构成的四边形,进而,将所述四边形面片的四个顶点作为模型空间的顶点。在将所述渲染模型的顶点作为模型空间的顶点后,对所述模型空间进行一系列空间转换的运算,最终得到裁剪空间。
步骤S30:输出所述裁剪空间的顶点坐标。
其中,在得到所述裁剪空间后,输出所述裁剪空间的顶点坐标,输出的所述裁剪空间的顶点坐标保存在GPU指定的寄存器中,等待处理;同时,所述模型空间的顶点坐标也保存在GPU指定的寄存器中,等待处理;保存所述裁剪空间的顶点坐标的寄存器与保存所述模型空间的顶点坐标的寄存器不同。
步骤S40:将所述裁剪空间的顶点组装为图元并光栅化为体积光片元,以及将所述模型空间的顶点进行插值运算。
其中,将保存在GPU指定的寄存器中的所述裁剪空间的顶点组装为图元,所述图片可以为三角形、点、线段等。进一步的,将所述裁剪空间的顶点组装的图元被适当处理,进而确定显示屏幕上的2D形式,即显示屏幕上显示图象的区域。最后,将处理后的图元光栅化为体积光片元。其中,各个顶点数据均在各片元之间执行插值计算,且各个片元被赋予插值数据。
进一步的,将保存在GPU指定的另一寄存器中的所述模型空间的顶点进行插值运算。
步骤S50:根据进行插值运算后的所述模型空间的顶点坐标对所述体积光片元进行着色,得到所述体积光片元的颜色以及透明度。
其中,将插值运算后的所述模型空间的顶点坐标作为参数对所述体积光片元进行着色,得到所述体积光片元的颜色以及透明度。其运算公式如下:
float factor=clamp(1.0-length(pos2.xy),0,1);
o_color.rg b=volumetric LightColor.rgb;
o_color.a=volumetric LightColor.a*facto r;
其中,pos2.xy表示插值运算后的所述模型空间的顶点坐标;length(pos2.xy)表示向量的长度,即返回插值运算后的所述模型空间的顶点坐标pos2.xy作为一个平面向量的模长;clamp函数将1-length(pos2.xy)的数值限制在给定的区间(0,1)之间;factor表示如果1-length(pos2.xy)的值小于0,则取0值,如果1-length(pos2.xy)的值大于1,则取1值,通过float factor=clamp(1.0-length(pos2.xy),0,1)公式可以确定体积光片元的区域。
volumetricLightColor.rgb为体积光片元颜色;volumetricLightColor.a为体积光片元透明度。
o_color.rgb=volumetricLightColor.rgb表示设定体积光的颜色。其中,体积光片元的颜色可以任意指定。
o_color.a=volumetricLightColor.a*factor表示在区域内设定体积光片元的透明度。其中,通过控制体积光片元的透明度,可以实现体积光的渐隐和渐现,进而烘托游戏场景的效果。
进一步的,请结合参阅图5,将所述渲染模型的顶点作为模型空间的顶点并将所述模型空间进行空间转换,得到裁剪空间的步骤包括以下步骤。
步骤S21:判断所述光源位置是否在游戏场景中摄像机的可视范围内,如果所述光源位置在可视范围内,执行步骤S211;如果所述光源位置不在可视范围内,执行步骤S212。
其中,在将所述渲染模型的顶点作为模型空间的顶点并将所述模型空间进行空间转换,得到裁剪空间之前,判断游戏场景中的光源位置是否在游戏场景中摄像机的可视范围内,包括判断游戏场景中的光源是否被遮挡以及摄像机视角范围内是否能见到光源。
步骤S211:根据光源朝向以及游戏场景中摄像机的视角方向计算参考点,以根据所述参考点将所述渲染模型的顶点作为模型空间的顶点并将所述模型空间进行空间转换,得到裁剪空间。
其中,如果所述光源位置在可视范围内,根据游戏场景中的光源朝向以及摄像机的视角方向计算出一个参考点,其计算公式如下:
rayDir.xyz=cameraDir.xyz-sunDir.xyz;
rayDir.xyz=normalise(rayDir.xyz);
centerPos.xyz=cameraPos.xyz+rayDir.xyz*100;
其中,cameraDir表示摄像机方向;rayDir表示朝向;sunDir表示光源朝向;normalise(rayDir.xyz)表示单位化rayDir;cameraPos表示摄像机位置;rayDir_xyz*100表示在游戏场景中该朝向扩大100米距离范围;centerPos表示得到的参考点。
在计算得到参考点后,将所述渲染模型的顶点作为模型空间的顶点,根据参考点对所述模型空间进行空间转换。
步骤S212:无需将所述渲染模型的顶点作为模型空间的顶点,对所述模型空间进行空间转换。
其中,如果所述光源位置不在可视范围内,则无需将所述渲染模型的顶点作为模型空间的顶点,对所述模型空间进行空间转换,即无需对体积光进行渲染。
进一步的,请结合参阅图6和图7,将所述模型空间进行空间转换,得到裁剪空间的步骤包括步骤S22至步骤S24。
步骤S22:对所述模型空间进行世界转换,得到世界空间。
其中,所述渲染模型的顶点已作为所述模型空间的顶点,将所述模型空间的顶点作为内部参数,对所述模型空间进行世界转换,得到世界空间,进而得到所述世界空间的顶点。
步骤S23:对所述世界空间进行视见转换,得到相机空间。
其中,在得到所述世界空间的顶点后,通过视见转换矩阵对所述世界空间进行视见转换,得到相机空间,进而得到所述相机空间的顶点。
步骤S24:对所述相机空间进行投影转换,得到裁剪空间。
其中,在得到所述相机空间的顶点后,通过投影转换矩阵对所述相机空间进行投影转换,得到裁剪空间,进而得到所述裁剪空间的顶点。
在得到所述裁剪空间的顶点坐标后,输出所述裁剪空间的顶点坐标,输出的所述裁剪空间的顶点坐标被保存在GPU指定的寄存器中,同时所述模型空间的顶点坐标也被保存在GPU指定的另一寄存器中。
进一步的,请结合参阅图8,对所述模型空间进行世界转换,得到世界空间的步骤包括步骤S221至步骤S222。
步骤S221:对所述模型空间的顶点设定渲染尺寸比例。
步骤S222:根据设定有渲染尺寸比例的顶点坐标、摄像机的视角方向向量以及所述参考点的位置坐标对所述模型空间进行世界转换,以得到世界空间。
其中,步骤S22至步骤S24中,由所述模型空间转换为所述裁剪空间的空间转换过程可以由以下公式计算得到。
offset.xy=pos.xy×scale;
posWorld.xyz=centerPos.xyz+offset.x×cameraRight.xyz+offset.y×cameraUp.xyz;
posWorld1.xyzw=float4(posWorld.xyz,1.0);
clipPos.xyzw=dot(ViewProjectMatrix,posWorld1.xyzw);
其中,scale表示渲染尺寸比例;pos.xy表示模型空间的顶点坐标;offset.xy表示设定有渲染尺寸比例的顶点坐标;centerPos.xyz表示参考点的位置坐标;cameraRight.xyz表示摄像机右向量;cameraUp.xyz表示摄像机上向量;posworld.xyz表示世界空间的顶点坐标;ViewProjectMatrix表示视见转换矩阵与投影转换矩阵相乘后的结果;clipPos.xyzw表示裁剪空间的顶点坐标。其中,所述模型空间的顶点坐标pos.xy作为内部参数;而参考点的位置坐标centerPos.xyz、渲染尺寸比例scale、摄像机右向量cameraRight.xyz、摄像机上向量cameraUp.xyz以及视见转换矩阵与投影转换矩阵相乘后的结果ViewProjectMatrix作为CPU传入的外部参数。
通过公式offset.xy=pos.xy×scale得到所述模型空间顶点坐标的渲染尺寸比例,其中,渲染尺寸可以任意设定。
通过公式
posWorld.xyz=centerPos.xyz+offset.x×cameraRight.xyz+offset.y×cameraUp.xyz将所述模型空间进行世界转换,得到世界空间。
通过公式posWorld1.xyzw=float4(posWorld.xyz,1.0)将所述世界空间的顶点坐标由三维设置为四维,即将所述世界空间的顶点坐标从普通坐标转换为齐次坐标。
通过公式clipPos.xyzw=dot(ViewProjectMatrix,posWorld1.xyzw)将所述世界空间转换为所述裁剪空间,其中,由于ViewProjectMatrix表示视见转换矩阵与投影转换矩阵相乘后的结果,即通过ViewProjectMatrix矩阵可将所述世界空间直接转换为所述裁剪空间。
进一步的,在根据进行插值运算后的所述模型空间的顶点坐标对所述体积光片元进行着色,得到所述体积光片元的颜色以及透明度之后,所述方法还包括以下步骤。
将所述体积光片元的颜色以及透明度与游戏场景中实体片元的颜色以及透明度进行混合操作,得到渲染后的游戏场景中实体片元的颜色以及透明度。
其中,由于游戏场景中的实体具有自身的颜色以及透明度,因此,在得到所述体积光片元的颜色以及透明度之后,将所述体积光片元的颜色以及透明度与游戏场景中实体片元的颜色以及透明度进行混合操作,即计算在游戏场景中,在所述体积光的照射下,实体应呈现的颜色及透明度。在计算得到混合操作后的游戏场景中实体的颜色及透明度后,将所述体积光与游戏场景中的实体进行渲染,并将渲染结果显示在显示屏幕上。
本公开所提供的体积光实现方法,不仅游戏场景中的体积光的尺寸和颜色可任意指定,而且可以通过控制体积光的透明度,来实现体积光的渐隐和渐现;除此之外,还可以通过判断光源位置是否被遮挡,来控制体积光是否可见,本公开所提供的体积光实现方法,在游戏场景中进行实施时,不仅烘托了场景效果,而且降低了三维游戏场景中体积光模拟的计算量,提高了游戏场景渲染的效率。
请返回结合参阅图2,本公开提供一种体积光实现装置10,应用于电子设备100。所述体积光实现装置10包括设定模块11、处理模块12以及存储模块13。
所述存储模块13预存有顶点着色器、片元着色器以及光栅器。
所述设定模块11用于设定光源位置并创建渲染模型。
所述处理模块12用于将所述渲染模型的顶点作为模型空间的顶点并通过所述顶点着色器将所述模型空间进行空间转换,得到裁剪空间。
所述处理模块12用于在得到所述裁剪空间后,输出所述裁剪空间的顶点坐标。
其中,所述处理模块12将所述渲染模型的顶点作为模型空间的顶点后,将所述模型空间的顶点输入到所述顶点着色器中,通过所述顶点着色器将所述模型空间进行空间转换,得到所述裁剪空间并输出所述裁剪空间的顶点坐标。输出的所述裁剪空间的顶点坐标保存在GPU指定的寄存器中,等待处理;同时,所述模型空间的顶点坐标也保存在GPU指定的寄存器中,等待处理;保存所述裁剪空间的顶点坐标的寄存器与保存所述模型空间的顶点坐标的寄存器不同。
所述处理模块12用于通过所述光栅器将所述裁剪空间的顶点组装为图元并光栅化为体积光片元,以及将所述模型空间的顶点进行插值运算。
其中,所述处理模块12通过所述光栅器将保存在GPU指定的寄存器中的所述裁剪空间的顶点组装为图元,所述图片可以为三角形、点、线段等。进一步的,将所述裁剪空间的顶点组装的图元被适当处理,进而确定显示屏幕上的2D形式,即显示屏幕上显示图象的区域。最后,所述光栅器将处理后的图元光栅化为体积光片元。其中,各个顶点数据均在各片元之间执行插值计算,且各个片元被赋予插值数据。
进一步的,所述处理模块12通过所述光栅器将保存在GPU指定的另一寄存器中的所述模型空间的顶点进行插值运算。
所述处理模块12用于通过所述片元着色器根据进行插值运算后的所述模型空间的顶点坐标对所述体积光片元集合进行着色,得到所述体积光片元的颜色以及透明度。
其中,进行插值运算后的所述模型空间的顶点坐标作为内部参数输入到所述片元着色器,进而所述处理模块12可通过所述片元着色器根据进行插值运算后的所述模型空间的顶点坐标对所述体积光片元集合进行着色,得到所述体积光片元的颜色以及透明度。
进一步的,所述体积光实现装置10还包括判断模块14,所述处理模块12用于将所述渲染模型的顶点作为模型空间的顶点并通过所述顶点着色器将所述模型空间进行空间转换,得到裁剪空间包括:
所述判断模块14用于判断所述光源位置是否在游戏场景中摄像机的可视范围内。
其中,如果所述光源位置在可视范围内,所述处理模块12用于根据光源朝向以及游戏场景中摄像机的视角方向计算参考点,以使所述处理模块12根据所述参考点将所述渲染模型的顶点作为模型空间的顶点并将所述模型空间进行空间转换,得到裁剪空间。
进一步的,通过所述顶点着色器将所述模型空间进行空间转换,得到裁剪空间包括:
所述处理模块12用于对所述模型空间进行世界转换,得到世界空间。
其中,所述渲染模型的顶点已作为所述模型空间的顶点,将所述模型空间的顶点作为内部参数,对所述模型空间进行世界转换,得到世界空间,进而得到所述世界空间的顶点。
所述处理模块12用于对所述世界空间进行视见转换,得到相机空间。
其中,在得到所述世界空间的顶点后,通过视见转换矩阵对所述世界空间进行视见转换,得到相机空间,进而得到所述相机空间的顶点。
所述处理模块12用于对所述相机空间进行投影转换,得到裁剪空间。
其中,在得到所述相机空间的顶点后,通过投影转换矩阵对所述相机空间进行投影转换,得到裁剪空间,进而得到所述裁剪空间的顶点。在得到所述裁剪空间的顶点坐标后,输出所述裁剪空间的顶点坐标,输出的所述裁剪空间的顶点坐标被保存在GPU指定的寄存器中,同时所述模型空间的顶点坐标也被保存在GPU指定的另一寄存器中。
进一步的,所述处理模块12用于对所述模型空间进行世界转换,得到世界空间包括:
所述处理模块12用于对所述模型空间的顶点设定渲染尺寸比例,并根据设定有渲染尺寸比例的顶点坐标、摄像机的视角方向向量以及所述参考点的位置坐标对所述模型空间进行世界转换,以得到世界空间。
其中,在所述顶点着色器中,所述模型空间的顶点坐标作为内部参数;而参考点的位置坐标、渲染尺寸比例、摄像机的视角方向向量以及上述中的朝向、视见转换矩阵与投影转换矩阵等作为CPU传入的外部参数。
进一步的,所述体积光实现装置10还包括渲染模块15,在得到所述体积光片元的颜色以及透明度之后,
所述渲染模块15用于将所述体积光片元的颜色以及透明度与游戏场景中实体片元的颜色以及透明度进行混合操作,得到渲染后的场景实体片元的颜色以及透明度。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的体积光实现装置10的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
综上,本公开所提供的体积光实现方法及装置,在三维游戏场景中,设定光源并创建渲染模型后,将渲染模型的顶点作为模型空间的顶点,并对模型空间进行空间转换,以得到裁剪空间,在得到裁剪空间后,输出裁剪空间的顶点坐标,将裁剪空间的顶点组装为图元并光栅化为体积光片元,同时,将模型空间的顶点进行插值运算,根据进行插值运算后的模型空间的顶点坐标对体积光片元进行着色,得到体积光片元的颜色以及透明度,进而降低了三维游戏场景中体积光模拟的计算量;除此之外,本公开提供的体积光实现方法及装置,不仅游戏场景中的体积光的颜色和尺寸可任意指定,而且可以通过控制体积光的透明度,来实现体积光的渐隐和渐现;可以通过判断光源位置是否被遮挡,来控制体积光是否可见,进一步的,降低了三维游戏场景中体积光模拟的计算量以及提高了游戏场景渲染的效率。
在本公开所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本公开的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本公开各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本公开的可选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种体积光实现方法,其特征在于,所述方法包括:
设定光源位置并创建渲染模型;
将所述渲染模型的顶点作为模型空间的顶点并将所述模型空间进行空间转换,得到裁剪空间;
输出所述裁剪空间的顶点坐标;
将所述裁剪空间的顶点组装为图元并光栅化为体积光片元,以及将所述模型空间的顶点进行插值运算;
根据进行插值运算后的所述模型空间的顶点坐标对所述体积光片元进行着色,得到所述体积光片元的颜色以及透明度。
2.根据权利要求1所述的体积光实现方法,其特征在于,将所述渲染模型的顶点作为模型空间的顶点并将所述模型空间进行空间转换,得到裁剪空间的步骤,包括:
判断所述光源位置是否在游戏场景中摄像机的可视范围内;
如果所述光源位置在可视范围内,根据光源朝向以及游戏场景中摄像机的视角方向计算参考点,以根据所述参考点将所述渲染模型的顶点作为模型空间的顶点并将所述模型空间进行空间转换,得到裁剪空间。
3.根据权利要求2所述的体积光实现方法,其特征在于,将所述模型空间进行空间转换,得到裁剪空间的步骤包括:
对所述模型空间进行世界转换,得到世界空间;
对所述世界空间进行视见转换,得到相机空间;
对所述相机空间进行投影转换,得到裁剪空间。
4.根据权利要求3所述的体积光实现方法,其特征在于,对所述模型空间进行世界转换,得到世界空间的步骤包括:
对所述模型空间的顶点设定渲染尺寸比例;
根据设定有渲染尺寸比例的顶点坐标、摄像机的视角方向向量以及所述参考点的位置坐标对所述模型空间进行世界转换,以得到世界空间。
5.根据权利要求1所述的体积光实现方法,其特征在于,在根据进行插值运算后的所述模型空间的顶点坐标对所述体积光片元进行着色,得到所述体积光片元的颜色以及透明度之后,所述方法还包括:
将所述体积光片元的颜色以及透明度与游戏场景中实体片元的颜色以及透明度进行混合操作,得到渲染后的游戏场景中实体片元的颜色以及透明度。
6.一种体积光实现装置,其特征在于,包括设定模块、处理模块以及存储模块;
所述存储模块预存有顶点着色器、片元着色器以及光栅器;
所述设定模块用于设定光源位置并创建渲染模型;
所述处理模块用于将所述渲染模型的顶点作为模型空间的顶点并通过所述顶点着色器将所述模型空间进行空间转换,得到裁剪空间;
所述处理模块用于在得到所述裁剪空间后,输出所述裁剪空间的顶点坐标;
所述处理模块用于通过所述光栅器将所述裁剪空间的顶点组装为图元并光栅化为体积光片元,以及将所述模型空间的顶点进行插值运算;
所述处理模块用于通过所述片元着色器根据进行插值运算后的所述模型空间的顶点坐标对所述体积光片元集合进行着色,得到所述体积光片元的颜色以及透明度。
7.根据权利要求6所述的体积光实现装置,其特征在于,所述体积光实现装置还包括判断模块,所述处理模块用于将所述渲染模型的顶点作为模型空间的顶点并通过所述顶点着色器将所述模型空间进行空间转换,得到裁剪空间包括:
所述判断模块用于判断所述光源位置是否在游戏场景中摄像机的可视范围内;
其中,如果所述光源位置在可视范围内,所述处理模块用于根据光源朝向以及游戏场景中摄像机的视角方向计算参考点,以使所述处理模块根据所述参考点将所述渲染模型的顶点作为模型空间的顶点并通过所述顶点着色器将所述模型空间进行空间转换,得到裁剪空间。
8.根据权利要求7所述的体积光实现装置,其特征在于,通过所述顶点着色器将所述模型空间进行空间转换,得到裁剪空间包括:
所述处理模块用于对所述模型空间进行世界转换,得到世界空间;
所述处理模块用于对所述世界空间进行视见转换,得到相机空间;
所述处理模块用于对所述相机空间进行投影转换,得到裁剪空间。
9.根据权利要求8所述的体积光实现装置,其特征在于,所述处理模块用于对所述模型空间进行世界转换,得到世界空间包括:
所述处理模块用于对所述模型空间的顶点设定渲染尺寸比例,并根据设定有渲染尺寸比例的顶点坐标、摄像机的视角方向向量以及所述参考点的位置坐标对所述模型空间进行世界转换,以得到世界空间。
10.根据权利要求6所述的体积光实现装置,其特征在于,所述体积光实现装置还包括渲染模块,在得到所述体积光片元的颜色以及透明度之后,
所述渲染模块用于将所述体积光片元的颜色以及透明度与游戏场景中实体片元的颜色以及透明度进行混合操作,得到渲染后的场景实体片元的颜色以及透明度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811396621.0A CN109544674B (zh) | 2018-11-21 | 2018-11-21 | 一种体积光实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811396621.0A CN109544674B (zh) | 2018-11-21 | 2018-11-21 | 一种体积光实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109544674A true CN109544674A (zh) | 2019-03-29 |
CN109544674B CN109544674B (zh) | 2023-05-02 |
Family
ID=65849030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811396621.0A Active CN109544674B (zh) | 2018-11-21 | 2018-11-21 | 一种体积光实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109544674B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110270089A (zh) * | 2019-06-21 | 2019-09-24 | 上海米哈游网络科技股份有限公司 | 一种模型细节展示方法、装置、服务器和介质 |
CN110351592A (zh) * | 2019-07-17 | 2019-10-18 | 深圳市蓝鲸数据科技有限公司 | 动画呈现方法、装置、计算机设备和存储介质 |
CN111968214A (zh) * | 2020-07-29 | 2020-11-20 | 完美世界(北京)软件科技发展有限公司 | 一种体积云渲染方法、装置、电子设备及存储介质 |
CN111968215A (zh) * | 2020-07-29 | 2020-11-20 | 完美世界(北京)软件科技发展有限公司 | 一种体积光渲染方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100085357A1 (en) * | 2008-10-07 | 2010-04-08 | Alan Sullivan | Method and System for Rendering 3D Distance Fields |
CN102243769A (zh) * | 2011-07-26 | 2011-11-16 | Tcl集团股份有限公司 | 3d体积光动态实现方法及装置 |
CN106157357A (zh) * | 2015-04-01 | 2016-11-23 | Tcl集团股份有限公司 | 一种基于gpu加速的动态光效实现方法及系统 |
CN108074285A (zh) * | 2017-12-06 | 2018-05-25 | 北京像素软件科技股份有限公司 | 体积云模拟方法和体积云模拟装置 |
-
2018
- 2018-11-21 CN CN201811396621.0A patent/CN109544674B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100085357A1 (en) * | 2008-10-07 | 2010-04-08 | Alan Sullivan | Method and System for Rendering 3D Distance Fields |
CN102243769A (zh) * | 2011-07-26 | 2011-11-16 | Tcl集团股份有限公司 | 3d体积光动态实现方法及装置 |
CN106157357A (zh) * | 2015-04-01 | 2016-11-23 | Tcl集团股份有限公司 | 一种基于gpu加速的动态光效实现方法及系统 |
CN108074285A (zh) * | 2017-12-06 | 2018-05-25 | 北京像素软件科技股份有限公司 | 体积云模拟方法和体积云模拟装置 |
Non-Patent Citations (2)
Title |
---|
SHENG LI 等: "Unified Volumes for Light Shaft and Shadow with Scattering", 《2007 10TH IEEE INTERNATIONAL CONFERENCE》 * |
袁赞 等: "基于光线投射算法的体积光实时绘制", 《计算机工程与设计》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110270089A (zh) * | 2019-06-21 | 2019-09-24 | 上海米哈游网络科技股份有限公司 | 一种模型细节展示方法、装置、服务器和介质 |
CN110351592A (zh) * | 2019-07-17 | 2019-10-18 | 深圳市蓝鲸数据科技有限公司 | 动画呈现方法、装置、计算机设备和存储介质 |
CN110351592B (zh) * | 2019-07-17 | 2021-09-10 | 深圳市蓝鲸数据科技有限公司 | 动画呈现方法、装置、计算机设备和存储介质 |
CN111968214A (zh) * | 2020-07-29 | 2020-11-20 | 完美世界(北京)软件科技发展有限公司 | 一种体积云渲染方法、装置、电子设备及存储介质 |
CN111968215A (zh) * | 2020-07-29 | 2020-11-20 | 完美世界(北京)软件科技发展有限公司 | 一种体积光渲染方法、装置、电子设备及存储介质 |
CN111968215B (zh) * | 2020-07-29 | 2024-03-22 | 完美世界(北京)软件科技发展有限公司 | 一种体积光渲染方法、装置、电子设备及存储介质 |
CN111968214B (zh) * | 2020-07-29 | 2024-04-19 | 完美世界(北京)软件科技发展有限公司 | 一种体积云渲染方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109544674B (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109544674A (zh) | 一种体积光实现方法及装置 | |
US11257286B2 (en) | Method for rendering of simulating illumination and terminal | |
CN103946895B (zh) | 基于平铺块的呈现中的镶嵌方法和设备 | |
CN111508052B (zh) | 三维网格体的渲染方法和装置 | |
KR102101626B1 (ko) | 스크린 위치에 따라 달라지는 분해능을 가진 다수의 렌더 타겟을 위한 텍스처 매핑을 위한 그라디언트 조정 | |
JP5232358B2 (ja) | アウトラインフォントのレンダリング | |
US20130063460A1 (en) | Visual shader designer | |
US8698799B2 (en) | Method and apparatus for rendering graphics using soft occlusion | |
TW201015490A (en) | Method and system for rendering 3D model of 3D object | |
KR20140040416A (ko) | 3차원 객체 생성 장치 및 그 방법 | |
US20230230311A1 (en) | Rendering Method and Apparatus, and Device | |
CN109934893B (zh) | 几何体任意截面的显示方法、装置及电子设备 | |
Rudomín et al. | Fragment shaders for agent animation using finite state machines | |
JP2005100176A (ja) | 画像処理装置およびその方法 | |
WO2017114729A1 (en) | System and methodologies for super-sampling to enhance anti-aliasing in high resolution meshes | |
CN108074285B (zh) | 体积云模拟方法和体积云模拟装置 | |
Rossignac et al. | Direct rendering of Boolean combinations of self-trimmed surfaces | |
CN104488001A (zh) | 定制的图像滤波器 | |
CN113129420B (zh) | 一种基于深度缓冲加速的光线追踪渲染方法 | |
US8669996B2 (en) | Image processing device and image processing method | |
CN111932448B (zh) | 一种数据处理方法、装置、存储介质及设备 | |
US20180005432A1 (en) | Shading Using Multiple Texture Maps | |
KR101118597B1 (ko) | 모바일용 컴퓨터 그래픽 랜더링 방법 및 시스템 | |
CN114943797A (zh) | 基于WebGL大尺寸热力图渲染方法、系统、介质和设备 | |
US20240242403A1 (en) | System and Method for Creating a Design Tool Using a Clockwise Fill Rule |
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 |