CN105513118A - 一种体素化游戏世界的渲染方法 - Google Patents
一种体素化游戏世界的渲染方法 Download PDFInfo
- Publication number
- CN105513118A CN105513118A CN201510836751.1A CN201510836751A CN105513118A CN 105513118 A CN105513118 A CN 105513118A CN 201510836751 A CN201510836751 A CN 201510836751A CN 105513118 A CN105513118 A CN 105513118A
- Authority
- CN
- China
- Prior art keywords
- voxel
- vertex
- face
- space image
- image vegetarian
- 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/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种体素化游戏世界的渲染方法。所述方法,包括:步骤1、判断第i个立体像素是否为外部立体像素,若是,执行步骤2,否则,i=i+1,直至i=N,N为立体像素总个数,返回执行步骤1;步骤2、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,继续执行步骤3;步骤3、根据所述顶点缓冲区的顶点位置,渲染所述外部面。本发明提供的技术方案,通过判断外部立体像素的外部面并计算所有外部面的顶点位置,根据顶点位置只渲染外部面,减小了渲染管线压力,提高了渲染效率。
Description
技术领域
本发明实施例涉及计算机图形技术领域,尤其涉及一种体素化游戏世界的渲染方法。
背景技术
三维游戏中构建虚拟游戏世界普遍采用多边形网格建立模型,而体素风格的游戏世界则通过立体像素构建游戏世界。立体像素(以下简称“体素”)包含了关于对象形状的重要信息,体素数据结构简单均匀,相对于网格建立的模型更易修改,其修改更接近于现实世界的情况,即添加立体物或者在另一个立体物中减去立体物。体素化的游戏世界的场景具有两个对现代游戏愈加重要的特点,即可破坏性与可创造性。体素风格的游戏,例如《我的世界》。
体素化游戏世界构建过程中,对每个立体像素进行标识,例如,若立体像素被标识为0,则表示该立体像素的每个面都位于内部,不可见;若立体像素被标识为1,则表示该立体像素有一个面或者多个面是可见的。
渲染时只渲染二进制标识位为1的立体像素,若某立体像素有k(k<8)个面是可见的,而其他(8-k)个面都不可见,现有技术中,在渲染k个可见面的同时,其他(8-k)个面也被渲染,延长了渲染时间,加大了渲染管线压力,降低了渲染效率。
发明内容
本发明提供一种体素化游戏世界的渲染方法,克服了现有技术中渲染外部立体像素时渲染外部立体像素所有面,造成的渲染管线压力大以及渲染效率低的缺陷。
本发明公开了一种体素化游戏世界的渲染方法,包括:
步骤1、判断第i个立体像素是否为外部立体像素,若是,执行步骤2,否则,i=i+1,直至i=N,N为立体像素总个数,返回执行步骤1;
步骤2、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,继续执行步骤3;
步骤3、根据所述顶点缓冲区的顶点位置,渲染所述外部面。
进一步地,当所述立体像素面的相邻位置存储有另一立体像素时,所述立体像素面为内部面,否则所述立体像素面为外部面,所述内部面和外部面由第一标识进行标记。
进一步地,当所述立体像素面全部为内部面时,所述立体像素为内部立体像素,当所述立体像素面中存在至少一个外部面时,所述立体像素为外部立体像素,所述内部立体像素和外部立体像素由第二标识进行标记。
进一步地,所述第一标识为一个比特的二进制数;所述第二标识为一个比特的二进制数。
进一步地,步骤2、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,具体包括:
步骤20、初始化所述第i个立体像素的面编号j=0;
步骤21、判断所述第i个立体像素的面编号j是否小于立体像素面总数M,若是,执行步骤22,否则,执行所述步骤3;
步骤22、判断所述第i个立体像素的第j个立体像素的面是否为外部面,若是,执行步骤23,否则,执行步骤24;
步骤23、计算所述第i个立体像素的第j个立体像素面的顶点位置,并将所述顶点位置存入所述顶点缓冲区,继续执行步骤24;
步骤24、所述立体像素面编号j=j+1,继续执行步骤21。
进一步地,所述体素化世界的渲染方法在步骤1、判断第i个立体像素是否为外部立体像素之前,还包括,创建所述顶点缓冲区。
本发明提供的技术方案,通过判断外部立体像素的外部面并计算所有外部面的顶点位置,根据顶点位置只渲染外部面,减小了渲染管线压力,提高了渲染效率。
附图说明
图1是本发明实施例一提供的一种体素化游戏世界的渲染方法的流程示意图;
图2是本发明实施例二提供的一种体素化游戏世界的渲染方法的流程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1是本发明实施例一提供的一种体素化游戏世界的渲染方法的流程示意图。所述方法适用于构建体素化游戏世界。所述体素化游戏世界的渲染方法,包括步骤S100-S102:
S100、判断第i个立体像素是否为外部立体像素,若是,执行步骤101,否则,i=i+1,直至i=N,N为立体像素总个数,返回执行步骤100;
S101、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,继续执行步骤S102;
S102、根据所述顶点缓冲区的顶点位置,渲染所述外部面。
进一步地,当立体像素面的相邻位置存储有另一立体像素时,立体像素面为内部面,否则立体像素面为外部面,内部面和外部面由第一标识进行标记。
在对体素化游戏世界的立体像素进行渲染之前,立体像素的存储位置是已知的,当立体像素面的相邻位置存储有另一立体像素时,表明该立体像素面被遮挡,对外不可见,即为内部面,无需渲染处理。当立体像素面的相邻位置没有存储立体像素时,表明该立体像素的面是对外可见的,即外部面,需要进行渲染处理。内部面和外部面可以由第一标识进行标记,优选的,第一标识为一个比特的二进制数。
进一步地,当立体像素面全部为内部面时,立体像素为内部立体像素,当立体像素面中存在至少一个外部面时,立体像素为外部立体像素,内部立体像素和外部立体像素由第二标识进行标记。优选的,第二标识为一个比特的二进制数。
进一步地,该体素化世界的渲染方法在判断第i个立体像素是否为外部立体像素之前,还包括,创建所述顶点缓冲区。其中,顶点缓冲区用于存储外部面的顶点位置,顶点缓冲区的存储大小是根据构建游戏世界的立体像素的数量确定。
本发明实施例提供的技术方案,通过判断外部立体像素的外部面并计算所有外部面的顶点位置,根据顶点位置只渲染外部面,减小了渲染管线压力,提高了渲染效率。
实施例二
图2是本发明实施例二提供的一种体素化游戏世界的渲染方法的流程示意图。本实施例是在实施例一的基础上,对实施例一中的步骤S101、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,进一步具体化。所述体素化游戏世界的渲染方法,包括步骤S200-S209:
S200、初始化立体像素编号i=0,继续执行步骤S201;
S201、判断立体像素编号i是否小于立体像素总数N,若是,执行步骤S202,否则,执行步骤S209;
S202、判断第i个立体像素是否为外部立体像素,若是,执行步骤S203,否则,执行步骤S208;
S203、初始化第i个立体像素的面编号j=0,继续执行步骤S204;
S204、判断第i个立体像素的面编号j是否小于立体像素面总数M,若是,执行步骤S205,否则,执行步骤S207;
S205、判断第i个立体像素的第j个立体像素面是否为外部面,若是,执行步骤S206,否则,执行步骤S207;
S206、计算第i个立体像素的第j个立体像素面的顶点位置,并将顶点位置存入顶点缓冲区,继续执行步骤S207;
S207、立体像素面编号j=j+1,继续执行步骤S204;
S208、立体像素编号i=i+1,继续执行步骤S201;
S209、根据顶点缓冲区的顶点位置,渲染外部面。
本发明实施例提供的技术方案,通过判断外部立体像素的外部面以及计算所有外部面的顶点位置,根据顶点位置只渲染外部立体像素的外部面,减小了渲染管线压力,提高了渲染效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许变更或修饰等,凡在本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种体素化游戏世界的渲染方法,其特征在于,包括:
步骤1、判断第i个立体像素是否为外部立体像素,若是,执行步骤2,否则,i=i+1,直至i=N,N为立体像素总个数,返回执行步骤1;
步骤2、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,继续执行步骤3;
步骤3、根据所述顶点缓冲区的顶点位置,渲染所述外部面。
2.根据权利要求1所述的方法,其特征在于,当所述立体像素面的相邻位置存储有另一立体像素时,所述立体像素面为内部面,否则所述立体像素面为外部面,所述内部面和外部面由第一标识进行标记。
3.根据权利要求2所述的方法,其特征在于,当所述立体像素面全部为内部面时,所述立体像素为内部立体像素,当所述立体像素面中存在至少一个外部面时,所述立体像素为外部立体像素,所述内部立体像素和外部立体像素由第二标识进行标记。
4.根据权利要求3所述的方法,其特征在于,所述第一标识为一个比特的二进制数;所述第二标识为一个比特的二进制数。
5.根据权利要求1所述的方法,其特征在于,步骤2、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,具体包括:
步骤20、初始化所述第i个立体像素的面编号j=0;
步骤21、判断所述第i个立体像素的面编号j是否小于立体像素面总数M,若是,执行步骤22,否则,执行所述步骤3;
步骤22、判断所述第i个立体像素的第j个立体像素的面是否为外部面,若是,执行步骤23,否则,执行步骤24;
步骤23、计算所述第i个立体像素的第j个立体像素面的顶点位置,并将所述顶点位置存入所述顶点缓冲区,继续执行步骤24;
步骤24、所述立体像素面编号j=j+1,继续执行步骤21。
6.根据权利要求1所述的方法,其特征在于,步骤1、判断第i个立体像素是否为外部立体像素之前,还包括,创建所述顶点缓冲区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510836751.1A CN105513118B (zh) | 2015-11-26 | 2015-11-26 | 一种体素化游戏世界的渲染方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510836751.1A CN105513118B (zh) | 2015-11-26 | 2015-11-26 | 一种体素化游戏世界的渲染方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105513118A true CN105513118A (zh) | 2016-04-20 |
CN105513118B CN105513118B (zh) | 2018-07-10 |
Family
ID=55721073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510836751.1A Active CN105513118B (zh) | 2015-11-26 | 2015-11-26 | 一种体素化游戏世界的渲染方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105513118B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477700A (zh) * | 2009-02-06 | 2009-07-08 | 南京师范大学 | 面向Google Earth与Sketch Up的真三维立体显示方法 |
CN102044089A (zh) * | 2010-09-20 | 2011-05-04 | 董福田 | 一种三维模型的自适应化简、渐进传输和快速绘制的方法 |
CN102708585A (zh) * | 2012-05-09 | 2012-10-03 | 北京像素软件科技股份有限公司 | 一种渲染模型轮廓边缘的方法 |
WO2014043735A1 (en) * | 2012-09-21 | 2014-03-27 | Euclideon Pty Ltd | A computer graphics method for rendering three dimensional scenes |
-
2015
- 2015-11-26 CN CN201510836751.1A patent/CN105513118B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477700A (zh) * | 2009-02-06 | 2009-07-08 | 南京师范大学 | 面向Google Earth与Sketch Up的真三维立体显示方法 |
CN102044089A (zh) * | 2010-09-20 | 2011-05-04 | 董福田 | 一种三维模型的自适应化简、渐进传输和快速绘制的方法 |
CN102708585A (zh) * | 2012-05-09 | 2012-10-03 | 北京像素软件科技股份有限公司 | 一种渲染模型轮廓边缘的方法 |
WO2014043735A1 (en) * | 2012-09-21 | 2014-03-27 | Euclideon Pty Ltd | A computer graphics method for rendering three dimensional scenes |
Also Published As
Publication number | Publication date |
---|---|
CN105513118B (zh) | 2018-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104183005B (zh) | 图形处理单元和基于图块的渲染方法 | |
JP6333180B2 (ja) | オンラインゲーム | |
CN1512454A (zh) | 用于图形渲染的z-缓冲技术 | |
CN105556565A (zh) | 片段着色器执行顶点着色器计算 | |
CN105556571A (zh) | 使用计算着色器作为顶点着色器的前端 | |
KR102150993B1 (ko) | 쉘 메쉬에 기초한 최적화된 다각형을 형성하기 위한 방법 | |
CN100573592C (zh) | 一种在图形处理器上拾取三维几何图元的方法 | |
JP2011510398A5 (zh) | ||
CN105184730A (zh) | 向图形处理系统中的区片分配图元 | |
CN102426691A (zh) | 一种基于gpu的实时火焰效果的模拟方法 | |
KR20140139553A (ko) | 그래픽 프로세싱 유닛들에서 가시성 기반 상태 업데이트들 | |
WO2009091571A8 (en) | Reducing the size of a model using visibility factors | |
CN101853162B (zh) | 一种可编辑的网页三维几何造型渲染方法 | |
JP2017188095A (ja) | 光線バンドルの光線に対する差分データを決定する方法及びグラフィックス処理ユニット | |
CN106251384A (zh) | 使用三角形的递归再分的细分方法 | |
CN102693553B (zh) | 一种实现三维效果的图表创建方法及装置 | |
CN107464286B (zh) | 三维城市模型中的孔洞修复方法及装置、设备及可读介质 | |
EP1977802A4 (en) | PLAYER, PLAYBACK CONTROLLER AND INFORMATION STORAGE MEDIUM | |
CN105321140A (zh) | 向图形处理系统中的区片分配图元 | |
CN104103090A (zh) | 图像处理方法、个性化人体显示方法及其图像处理系统 | |
CN103021018B (zh) | 基于gpu的构建bvh树并行光线追踪方法 | |
US20110157157A1 (en) | System and method for displaying a three-dimensional object | |
JP2016126795A5 (zh) | ||
JP2016510473A (ja) | デプスマップのコンテンツを強化するための方法およびデバイス | |
KR20160005144A (ko) | 커맨드 명령 관리 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |