自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (3)
  • 收藏
  • 关注

原创 为UE和Unity开发者准备的Godot指南

用户可以将场景栏中的节点信息保存形成一个新的场景文件,这类似于Unity中储存prefab数据的文件,Godot中也会将一个文件内节点的集合称为一个场景,场景栏可以同时管理节点与场景。首先,用户必须明确节点是Godot引擎中行驶功能的基本单位,而场景只是节点保存与加载的单位,Godot中的节点可以保存为tscn格式的场景文件,在需要时通过读取文件生成具有对应属性或特征的节点。需要注意的是此处显示的并不是项目内的所有文件,而是项目中所有的可读取的资源文件。用户可以在此直观的预览、编辑游戏的2D与3D内容。

2023-11-22 21:50:44 1057 2

原创 Unity、UE和Godot的优劣对比

Unity和UE这两个商业引擎占据了几乎所有的游戏引擎市场,是行业的两座灯塔,对整个游戏引擎的发展具有引领的作用。我从2016年开始就开始使用和研究这两个引擎,也结合一下业内的共识,一般来说认为,Unity更擅长移动端的开发,而UE更擅长PC项目的开发。Unity的易用性做的最好,当原生功能不满足的时候,非常容易去修改,比方说,渲染管线的修改。而UE的设计理念是,原生功能特别丰富,一般来说做项目是够用的。但是如果要修改的话很难,一般的团队玩不转。另外呢,Unity不开源,如果要想看代码,需要公司额外花钱。

2023-11-22 21:41:20 2196

原创 Godot

Godot的优势:完全免费,MIT协议,甚至你只需要改一行代码就宣称自己的引擎。这不是美国公司开发的,以后能做政府项目。轻量,特别适合想深入研究底层技术的人。Unity不开源,另外即使公司购买了源码,由于不开源也只能自己研究,因为形不成社区。UE开源,但太重。都不适合新手学习。渲染器以支持Vulkan为主,能充分发挥Vulkan的性能优势。没有短板。用过或者调研过不下十种引擎,都有短板。比如,OGRE只是个渲染引擎,想做项目必须整合各种第三方的插件;Urho3D只有一个简单的编辑器。

2023-11-22 21:20:13 628

原创 编译UE5.0

注:目前的稳定版本是5.0.2。1、注册。注册Git账户,注册Epic games账户,登陆虚幻4官网www.unrealengine.com,在如下位置关联GITHUB: 接下来进入GITHUB中的UE4专栏:https://github.com/EpicGames,此时网页顶端会有一个提示邀请你加入Epic games team,同意后刷新就会显示如下页面,否则只会显示ThirdParty和Signup两项内容。 第一个UnrealEngine就是引擎源码,进入下载 自己懒得截图了,借用了【UE4 C+

2022-07-11 09:08:56 3564 1

原创 一名“老”引擎程序员的昨天、今天和明天

不知不觉中,跟游戏引擎的缘分已经将近20年了。最近机缘巧合下整理了下这些年的做过的东西,也展望下未来。希望自己不忘初心,方得始终。也希望借机跟还坚守在这个领域的同行们交个朋友,切磋切磋。昨天——使用3D实时引擎和负责技术支持初识3D实时引擎——Java 3D2005-2007年,就读于北京理工大学,攻读硕士学位。自学轻量级引擎Java3D,完成课题“3D仿真在化工场景动态搭建的应用”。Java 3D是个轻量级游戏引擎,支持网页上运行。CryEngine 32012.12

2022-03-13 12:30:09 12594

原创 实时GI方案概述

LPV。SVO。VXGI。Enlighten的PRT方案。DDGI,育碧开发的全境封锁,还有NVidia的RTXGI。UE4的实时GI。SSGI。UE5的Lumen。Global Illumination Based on Surfels:SIGGRAPH 21: Global Illumination Based on SurfelsThe SIGGRAPH presentation by Henrik Halen and Andreas Brinck presents g

2022-03-07 12:04:11 1872

原创 游戏开发中为什么要控制模型的面数

首先,面数越多,VS的调用会越多,开销越大。PC级别的显卡目前对VS的开销不太敏感,但是移动端性能有限,还是尽量注意。其次,为了在shader里支持ddx和ddy相关的功能(即使你不调用这两个接口,内部也是需要这个功能的,比如纹理采样中需要计算出mipmap值),GPU里处理像素是以2x2为单位的。网上摘的一段话:The pixel shader always processes 2 X 2 groups of pixels (called "quads") but there is no othe

2022-03-02 18:24:22 4755

原创 游戏性能优化的五个方向

或者换个标题也行:3D实时程序性能优化的四重境界。一般来说,这四层可以认为是性能优化的顺序,越靠前意味着单位时间投入的产出越大。第一重 引擎使用层面参数设置是否正确,例如场景很小,却打开了级联阴影。资源格式不正确,例如纹理没有用压缩格式,纹理的压缩格式选的不好(现在3D游戏有个趋势,都尽量使用ASTC),面数太多或者没有做LOD,等等。这些问题人工去查费时耗力,现在有些工具可以自动排查。第二重 渲染管线对于Unity来说,建议尽量使用SRP管线,因为整个管线可以深度定制。比如说内置的后期

2022-02-25 20:01:17 7399

原创 Crazy Engine 5.0 (Plan on first stage)

Main target: distributed game engineSecondary target: new rendering pipeline on mobile.Feature:1. Hybrid rendering pipeline, make the best of rasterization, compute pipeline and raytracing unit.2. Physically-based realtime GI,3.昨天正式启动,忘了发。先..

2021-12-22 21:44:00 392

原创 为什么屏幕亮度不使用lux,而是使用nit作为单位?

最近发售的Mac book pro的屏幕:1000 nits sustained (full screen), 1600 nits peak。我们知道,基于物理的光照常用的单位有4种:那么为什么屏幕要选择nit呢?原因是这些单位分为亮度和照度,比如说太阳光用的单位是lux,这种单位属于照度,也就是说垂直于光的方向上,每平米上有多少流明照射上去。而nit是亮度单位,也就是定量描述特定角度和距离下,有多少光通量。我们看屏幕时,一般视线垂直于屏幕,这个角度上看屏幕最亮。当然,屏幕还有个关键指标

2021-11-18 18:53:07 8780

原创 Unity的Native plugin

调研到的结果:Native plugin的好处:1、资源、代码、核心算法保密(例如渲染算法、加密算法等)2、性能提高(c++库效率比C#要高一个数量级,即便是il2cpp也有极大差异)3、前后端都会使用的功能(例如生成的行走层,客户端和服务器都需要访问)4、不用修改代码就能扩充接口,例如目前Unity还不支持Multi indirect draw,但是图形API和硬件很多都已经支持了,可以通过这种方式进行扩充。坏处:1、如果有渲染相关的功能,每种图形API都要有对应的实现。不过s

2021-10-22 20:34:43 3006

原创 Unity里的交叉编译

可以在Windlows上安装iOS-Support,导出Xcode工程,然后拷贝到Mac下使用Xcode打开进行打包。

2021-10-22 20:17:41 2553

原创 好的中层管理者要兼顾公司和员工的利益

中层是公司和普通员工之间的一座桥梁。要平衡好两者的利益,过于偏重那一头都不好。有的中层是老好人,或者为了收买人心,过于照顾员工利益,损害公司利益。到处是跑冒滴漏,久而久之,即便是巍巍大厦也会倒下。这种情况多见于大公司,尤其是国企。有的中层为了给老板表演忠诚,疯狂压榨员工,怎么让员工觉得不爽怎么来。可是这样真的好吗?这种公司的离职率会很高,离职率高会造成项目交接成本迅速升高。行业内普遍代码不规范,没有文档,不停换人会导致最终代码根本无法维护,项目只能砍掉。如果说中层不理解这一点,只能说有点傻,还算略微有点

2021-09-30 12:06:50 420

原创 Blender的下载与编译

下载代码1、clone代码:Blender · rB。2、下载blender的各种库。推荐方式:在blender同级目录下建立一个新文件夹,命名: “lib”,在里面建立文件夹“win64_vc15”,在上面右键,点击“SVN Checkout”,使用SVN更新代码bf-blender - Revision 62694: /trunk/lib/win64_vc15。官方文档让进根目录,进cmd,执行“make update”,貌似需要关闭翻墙,会将一堆的库下载到跟blender同...

2021-09-15 16:40:19 1071

原创 如何使用RenderDoc截帧分析Godot

安装RenderDoc,使用默认的安装路径(因为下面是基于这个假设的)。第一次运行godot.windows.tools.xx.exe时,只是启动了launch界面,然后选中工程再打开时,其实是启动了另一个进程。所以使用RenderDoc直接启动进程的方式不可行。应该在引擎里添加如下代码,编译。只要启动进程时加载了renderdoc.dll这个dll,就能截帧了:运行,可以看到界面上出现了一行字:PrtScreen to capture...,这就表明成功了:选择一个工程,打开,可以看到

2021-09-15 16:05:05 2195

原创 移动端下PLS(Pixel Local Storage)减少带宽开销的原理

众所周知,移动端下为了性能搞出了TBR和TBDR架构。也就是渲染时整个RT均匀分成了很多个正方形的区域,遍历这些小区域来渲染。这些正方形区域就叫tile,tile上有个on-chip cache。tile越大性能越高。因为遍历tile本身就是有性能开销的。另外,tile多了以后,tile边界上的三角形会在渲染不同的tile时重复从系统内存里读取。已知的是,开启MSAA会导致tile的变小。根据个人猜测,PLS跟MSAA的实现方式神似。无非是把on-chip cache分成好几份,GBuffer放在其

2021-09-15 16:00:50 921

原创 深度定制游戏引擎实现云服务器的非线性增长

上周末两位大佬大老远跑过来,一起探讨了下云游戏涉及的各种技术难题。其中谈到了一个技术难题:怎么样能做到随着客户端数量增长,服务器非线性增长。说白了就是将客户端里重复的计算摘出来,进行统一计算,从而降低服务器的个数和能耗。目前的情况是,增加一个客户端,就需要在云端相应地增加一台服务器,也就是线性增长。那么怎么实现非线性增长呢?首要问题就是选引擎。最好的方案就是找一款优秀的免费开源引擎,进行深度定制。再次重申,Unity不开源,改不了。即使公司花费昂贵的价钱购买了源码阅读权限也难改,因为不开源就不能形成

2021-03-16 00:23:09 1257 6

原创 Crazy Engine 3.0(又名盘古引擎)的技术特性

零、概述“盘古引擎”是我2013.4-2015.12年间,在“远明山水网络科技有限公司”担任引擎部部门经理期间,带领9人团队研发的第三代大型3D游戏引擎。这代引擎使用Ogre 3D作为框架,使用C++、D3D 9.0c、HLSL 3.0、OpenAL、PhysX3.2和MyGUI作为开发语言或者中间件。研发团队研究了大量国际上顶尖的论文,借鉴和吸收了大量的高端算法和设计模式,同时也借鉴了其它世界闻名的游戏引擎,如CryEngine 3和Frostbite。同时,我们也花费了大量时间,研究出了一些自己

2021-03-09 11:47:46 1600

原创 Unity里加速纹理压缩

使用Unity开发项目的人都知道,Build Settings里切换平台时,会根据每个纹理指定的对应平台的压缩格式去压缩纹理。压缩纹理非常慢,会占用总时间的一多半。那能不能把这个时间降下来呢?2018年秋就接到了公司的这个需求。网上看到有人之前尝试着解决这个问题,说白了就是把压的工作从烂CPU(作者指的主要是Mac)转移到强大的CPU上(主频高、核多),见https://blog.codingnow.com/2016/12/unity3d_remote_pvrtextool.html。这个方案至少打开了

2021-02-28 19:46:42 1725 5

原创 Ubuntu上构建Godot的VS Code工程

对于Windows程序员来说,都喜欢在IDE上开发。VS Code是微软开发的,技术实力和号召力很强,Ubuntu上用VS Code是一个非常好的选择。我使用的是Windows+VMware Workstation 16 Player+Ubuntu-20.04.2.0。由于需要安装各种库和从github上clone代码,所以需要“正确上网”。Ubuntu下安装所有依赖的库和工具。安装依赖库,执行“sudo apt-get install build-essential scons pkg-conf

2021-02-14 23:58:52 2168 10

原创 云游戏的1.0和2.0

纵观历史,基础科学和基础设施的发展都会开创新的时代。比如说造纸技术的发明,直接大幅提升了知识的传播速度;指南针的发明开启了大航海时代;瓦特改良了蒸汽机,直接将人类带入了蒸汽时代;法拉利发明了发电机,把人类带入了电气时代;计算机和互联网的出现,又将我们带入了信息化时代。那么接下来又会出现哪些改变人类社会的新技术和基础设施呢?公认的有3个:5G、云计算和人工智能。而云游戏正是同时利用了5G和云计算,所以前途不可限量。目前绝大部分游戏公司都在开发移动端游戏,那么为什么要发展云游戏呢?痛点主要有两方面:手机

2021-01-20 20:29:37 29111 10

原创 戏说数据结构和算法

计算机和软件专业的同学在本科期间都有一门必修课:国内大多数叫《数据结构》,国外大多叫《算法导论》,非常重要。分为两部分:数据结构——array、list、stack、queue、tree、set、graph等,和算法——增删改查、排序等等。这是狭义上的数据结构和算法。实际软件开发中,只要涉及到复杂的功能时,往往会涉及书本之外的数据结构和算法的问题。对于大型软件工程来说,尤其是游戏引擎这种对性能要求近乎苛刻的系统,算法尤为重要。但是,我们在大学里学习《数据结构》这门课时,并不知道的一点是,这些数据结构

2020-12-27 02:39:34 1437 1

原创 具有像素级精度的模型精确点取

游戏引擎中,用鼠标点取模型是一个必需的功能,实现方法也有多种。主要可以分为两类:分别在CPU上和GPU上实现。在CPU上的实现比较简单,可以使用摄像机到鼠标位置组成的射线和模型的包围盒求交。如果需要更加精确的点取,可以进一步和模型的三角形求交,但是这样可能性能不高,因为需要和每一个三角形进行相交计算(或许有更好的方法,只是笔者没有研究过)。另外无法得到绝对精确的结果,因为有的模型是镂空

2018-02-04 13:44:42 719

原创 使用安卓模拟器和GPA截帧分析手游

刚看到了篇文章,讲解怎么使用GPA和安卓模拟器截帧分析图形渲染的文章《用GPA对android应用绘制分析-GAD腾讯游戏开发者平台》:http://gad.qq.com/article/detail/39208。看后很兴奋,因为我一直想用GPA分析手游。但是原文中有些地方说的不是很详细,自己亲自验证了,把原文中没有说很明白的地方补充上。优缺点优点:1、可以使用

2018-02-04 13:37:42 10287 6

原创 OpenGL ES下glsl使用注意事项

 如果glsl里面是vec3类型的变量,那么c++代码必须使用glUniform3fv()传值,使用其它的,例如glUniform4fv,就会出错。 浮点类型的变量直接和整型的进行算数操作在win32上没有问题,但是在移动平台必须进行强制类型转换后才能使用,否则编译失败。同理,如果一个常量是整形的,例如1,那么直接跟一个浮点型的变量进行算数操作时,Eclipse会报错“ERROR: co...

2018-01-12 18:20:27 1576 1

原创 Windows下生成cocos2d-x新项目并编译运行

        下面的方法在win7和Win10平台上,对cocos2d-x-3.14.1和cocos2d-x-3.16两个版本都试过,没有问题。一开发环境搭建已经搭建好环境的,这部分可以直接跳过。网上有大量教程,在此只是简略描述下。安装安卓开发环境推荐使用CodeWorksforAndroid-1R5-windows.exe。这是一键安装安卓开发包,安装中最好打开

2017-11-07 12:46:11 2006

原创 如何保证游戏资源名全局唯一

在最初两家创业公司开发3D端游时,使用的是自主研发的3D引擎。资源文件索引都是使用“相对于根目录的相对路径”+“文件名”作为ID,并且规定资源只有一个根目录,这样就能利用操作系统的文件管理系统保证资源全局唯一(当然你也可以把同一个文件复制多份放在别处,但是引擎会把它们当成完全不同的文件)。这种方式要求项目在最初就把资源文件路径结构规划好了,否则开发中移动文件会非常麻烦,必须重新修改文件

2017-09-12 11:03:02 632

原创 SuperCell的经验是否可取

最近两年,SuperCell这个公司在游戏行业里可谓大红大紫,尤其是这个公司所倡导的5-10人的微型团队模式更为人津津乐道。很多人只要提起这个公司就差个“Hi, Hitler”的姿势了。      是的,古今中外,胜利者的话总能让所有人都认真聆听,并奉为金科玉律。毋庸置疑,这个公司是个非常成功的公司,否则腾讯也不会花大价钱购买了全部股权,用一句“人傻钱多”来概括还是有失偏颇

2017-07-12 16:42:44 1184

原创 构建 编译和运行Urho3D工程

一、 载源码包。直接解压就可以构建工程了,不需要再下载依赖库。下载地址:https://sourceforge.net/projects/urho3d/files/Urho3D/,最新稳定版本是1.6。二、安装IDE。如果在Windows上开发,安装VS 2008。遇到个奇怪的事,家里的台式机可以基于VS 2008构建工程,笔记本上就出错。所以笔记本上使用VS 2015构建工程,但是编译会

2016-12-05 21:14:32 2629

原创 新手使用Urho3D的常见问题解答

研究这个引擎需要有什么基础吗?答:C++、数据结构是一定要掌握的,如果涉及渲染计算机图形学一定要掌握。注意循序渐进,不建议一开始就看大部头的。可以参考:http://blog.csdn.net/crazyengine/article/details/53209421。官网地址和网上有哪些资料?答:官网地址:https://urho3d.github.io

2016-12-05 21:09:15 1206 1

原创 Urho3D简介

注:这是根据网上一篇文章修改的,修正了一些术语表述,并改成了自己对这个引擎的理解。忘了出处,回头想起来了补上。向原作者致敬。之后有时间会将原文中的内容都替换掉。Urho3D是一个轻量级、跨平台的渲染的c++开源游戏引擎中,在MIT许可协议下发布。极大地吸收了到OGRE(http://www.ogre3d.org)和Horde3D(http://www.horde3d.org)的特点。(

2016-12-05 21:04:17 10944 3

原创 给立志于游戏引擎研发的新手的一些建议

        经常遇到一些新手,问如果想立志于游戏引擎研发,有一些什么好的建议。另外个人认为游戏程序员即使是在使用商业引擎做项目,也应该至少达到引擎初级水平,这样才能知其然也知其所以然,也能更好的应用。总结了下自己这么多年的经验和教训,做个分享。一家之言,仅供参考。        1、至少要熟悉C++和数据结构。目前大多数游戏引擎为了效率,都会选择C++作为开发语言。

2016-11-18 02:02:45 9926 5

原创 3D渲染引擎着色方式的演化史

Forward rendering最初始的渲染方式,原理是以mesh为单位进行渲染,在光栅化后,对每个PS进行计算时,根据光照进行着色计算,所以这种方式称为前向着色。弊端:1、如果像素被其他像素遮蔽了,就浪费了宝贵的处理结果;2、光源多起来后管理很麻烦,Shader也不好写。这样,Deferred rendering就应运而生了。Deferred renderi

2016-11-16 19:52:57 2158

原创 工程院院士栾恩杰评价为什么航空和航天取得的成绩差别这么大

摘自:《栾恩杰:三十年磨一剑》注:栾恩杰是国家工程院院士,国之重器——长征五号运载火箭专家组组长。 栾:当我们确定要搞大型火箭的时候,我们首先下手的不是大火箭,是大火箭的发动机。为什么我们国家航天都可以去,飞机为什么造不出来呢?我们很多技术过不去。所以一个领域行业的发展,在它行业的基础上,一定要极大地进步。你要赶超国际水平,你的基础能力达不到国际水平,充其量你就

2016-11-07 03:01:00 1927 2

原创 关于遮挡剔除的几个算法尝试

之前在公司使用DX9做端游引擎,优化性能中涉及到一个算法,就是遮挡剔除。最经典的算法就是使用API中的遮挡查询接口,GPU Gem上面有一篇文章专门讲这个。实话说,这个算法看过好几次,直到今天都没有彻底明白。后来看到有的人评价说这个算法不一定能改进性能,甚至还会导致更低。看到这个我有点底气彻底放弃了,是的,我一直有个观点,就是越简单越好,一旦某个东西很复杂,我就会警惕起来,就会怀疑设计有问题。

2016-10-31 23:09:08 4938

原创 Ogre中如何打开资源后台加载

打开资源后台加载。打开文件“OgreBuildSettings.h”,将里面的OGRE_THREAD_SUPPORT改为2,OGRE_THREAD_PROVIDER改为1(OGRE_USE_BOOST不改好像没事)。在VS 2008的工具菜单中添加boost 1.52的头文件和库文件路径。这样,引擎已经支持了后台加载。在引擎支持了后台加载后,还需要将应用程序

2016-10-21 15:18:16 1120 1

原创 Ogre资源管理的设计缺陷

1、由于文件不带路径,所以一个资源组里的资源不能重名,不在一个文件夹也不行。这个限制非常恶心,项目开发中引发了很多问题,必须写工具检查是否有重名,极大降低了迭代开发的速度。主流商业引擎都是带相对路径的。2、资源分组会带来很大的复杂性,例如代码会很臃肿,还有每个资源对象在内存中都至少有三个索引:ResourceGroupManager里面一个、ResourceManager的子类里面一个、实

2016-10-21 01:08:20 1296

OpenGL ES Extensions The OpenGL Vulkan Utility_v5.3.5_apkpure.com.apk

查询OpenGL ES扩展

2021-04-18

Hardware CapsViewer for Vulkan_v3.0_apkpure.com.apk

安卓手机对Vulkan的支持情况

2021-04-18

CUDA device query.exe

可以查询CUDA设备的各种参数

2021-04-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除