博客
71 篇关于实时渲染、引擎架构与性能优化的记录,最早一篇写于 2013 年。
2026
- 工作十五年 随笔
2011 年 2 月 22 日实习入职,到今天十五年半。我把 2010 年以来公开和私下写过的东西全部归到了一起,一路读下来,有几件事比我原以为的更清楚。
- 别让 AI 直接吐 3D 模型,让它写代码 技术
生成得像不像,看一眼就知道;生成完能不能改,得等三个月后策划说「这个门再宽半米」的时候才知道。上篇:为什么是 OpenSCAD,以及零件库和地面怎么做。
2025
- 现代渲染能有多现代? 技术
去年5月,我开始了现代渲染学习之路。目前,作为一个一年半的现代渲染练习生,准备来讲讲这个议题: 作为一名古董级渲染工程师,我曾长期深耕于OpenGL ES领域。此次对现代渲染技术的学习,彻底刷新了我的认知。同时,…
- gkNextRenderer - YearOne 技术
去年五一节结束后,在RayTracingInOneWeekend项目的基础上,开始了gkNextRenderer的学习。一开始的目的很简单
2022
- 把 Notion 搬进 Git:用 Obsidian 做第二大脑 技术
研究了几天 Obsidian,发现它就是我想要的那条链路:编辑体验约等于 Notion,但文件是本地 markdown,可以直接进自己的私有仓库。
- 箱庭关卡的烘焙:sublevel 怎么切,同时决定了光照和可见性 技术
关卡一直卡顿掉帧,于是主动接了新关卡的制作流程。开工前先列了六个问题,其中最容易被忽略的一条:precomputed visibility 和 lightmass 不是两件独立的事。
- 把真实世界叠进过程生成地形:从 DEM 到 OSM 的 polygon 技术
地形高度原本直接来自 noise。中间加一层真实高程混合之后,海岛变成了成都平原,龙泉山被侵蚀出了特别的样子。然后 OSM 的 multi-polygon 给了我一记闷棍。
2021
- 一份 TypeScript 逻辑,喂给 UE、Node 后端和 Web 前端 技术
地形光影、区域划分、道路生成本来长在 Cocos Creator 里。把它们剥成一层不碰任何引擎 API 的纯计算代码之后,UE 前端、Node 后端和 Web 可视化开始共用同一份实现。
- 在一台 RX560D 上撞见插帧 技术
给一台亮机卡装地平线 5,本来能跑 30fps 就谢天谢地。结果 1080p 稳 60,改一个运动模糊设置就掉回 40 —— 而游戏内的计数器从头到尾写着 30。
- Widget Reflector:抄 UE5 自己的编辑器界面 技术
想给过程生成写一个编辑器监视面板,第一版 Slate 布局丑得没法看。让它变好看的不是我的审美,是 Widget Reflector 能把每个控件的创建代码行反射出来。
- 两台家用机撑起 UE5 的四平台 CI 技术
3900X 跑 Windows / Android / LinuxDS,DeskMini 跑 iOS。部署过程中顺手改了几个 UE5 出包的坑,也确认了 Android 的 Vulkan SM5 这条路现在还走不通。
- Lumen 之后,打光变成了可以实时试错的事 技术
从跟着视频课程练打光,到用 UE5 的 Lumen 给一组 lowpoly 场景做实时 TOD。手上只有一块 GTX 1080,全程 BP,最后留下来的其实是一套能复用的框架。
- 地块解压不该待在游戏线程:UE 的三种异步封装 技术
UE5 公布前两天把 htrae 迁了过去,API 层面几乎没改。真正花时间的是迁完之后那件事:地块细节解压怎么离开游戏线程,又怎么把结果交回 TypeScript。
2019
- UE4's iOS Cross Compile 技术
安卓的真机版本搞定了,比预计快了很多,因此,准备把iOS的真机版本也提上日程。 由于已经身经百战,之前好歹也出过2-3个iOS真机包了,这次准备直接在构建机的虚拟macOS系统上开搞
- UE4 & Gradle & NDK-Build & Clang & std14 & LLVM 技术
来新项目1个月整了 动态寻路和一些功能开发暂告一个段落了,最近一周开始搞ue4与上android真机的事情。 不再是之前玩具demo的玩法,涉及到很多第三方组件的整合与一个庞大的native库的迁移
- 寻路算法-重新启发 技术
在新地方, 第一个需要处理的任务就是寻路. 说起来, 跟我做的独立项目有一些类似, 场景都是动态的. 需要动态的碰撞检测, 动态的寻路.
- 过程生成地形-概要 技术
按照之前的flag,近日得空,对今年做过程生成的技术点作了一个归纳和梳理,拟一个提纲。 下面一个大体结构规划 提纲拟出来,发现这是一个庞大的课题。虽然自己生写出了一套过程生成地形的算法,但要深究细节,还是有诸多不清楚。因此每一个点,…
- 对三年来没有blog post的一个总结 随笔
最近到gameknife.github.io更新一些东西,发现上一篇blog,距离现在已经3年了。 最近有一些想法,想要书写下来,才想起来blog这个“古老”的载体。
2016
- Unity3D中的MaterialPropertyBlock 技术
最近两天,在针对Unity3D做传统gpuskin的尝试。 所谓传统gpuskin,即使指利用vertexshader,通过传入的bone matrix进行蒙皮计算的方式。
- 界面纹理压缩(CbCr + YAlpha) 技术
最近一个月都在做Unity3D的相关优化,在一个庞大的实际项目中做优化。 内存占用,帧消耗,加载速度等。。。 上周在做内存占用优化时,突发奇想了一个纹理压缩的思路:YCbCr,接下来做了实验和集成,发现效果很不错。
- 一桌再好的菜,吃的人多了,也就变了味 随笔
上一次的博文,还是踌躇满志的五周年总结。当时正在加班加点的突击一个DEMO。 而今,我终于获得了大概两周的休息时间,准备交接转岗。
- 工作五周年 随笔
今天是2016年2月22日,从2011年2月22日正式参加实习开始。我工作满五周年了。 五周年,我在4个不同的公司工作过。算下来,跳槽比较频繁。并且,还涉及了两个行业:游戏和虚拟现实。
2015
- 完全便携系统-WinToGo U盘系统的制作 技术
这周项目开始轻松一些了,周末收到同学的安利,购置了一个超高速u盘,读写200MB/s+,貌似芯片用的是ssd芯片。 同学还用这个u盘制作了一个win to go系统。据说特别牛逼,带上一个u盘,装满驱动,就可以走到哪里都用自己的电脑了
- 梦想驱动的工作 随笔
今天是10月16日,从10月8日回到公司上班开始,我连续上了8天班,每天早9点到晚11点,并且完全自驱。 这也许是我职业生涯以来最长的一次“连杀了”。
- WE ARE MAKING A GREAT GAME! 随笔
不知不觉,到公司已经2个月了。 这两个月,和团队融合,一起经历了一次ce,慢慢的和这一波有梦想和激情的人们熟络起来。 经过几个版本的拉扯,我们的游戏项目终于决定了最终的方向:
- 构建MacOSX工具链 技术
最近两天,利用晚上的时间,为gkENGINE构建了原生的MacOSX工具链。此时可以完全脱离windows及windows虚拟机,
- Unity3D粗犷优化 技术
刚进组,准备从一些独立工作切入项目,于是选择进行项目效果和性能的提升与优化。于是先开始优化性能,压榨出可供提升质量的空间。
- 初到鹅厂 随笔
这一篇blog隔了好久... 终于,7月18号,7月25号连续两周在成都、太原的两场婚礼办完之后。我和我新婚的太太,于2015年7月26日,正式踏上了深圳的土地。飞机下午准点到了宝安机场,走过比首都机场T3还要漫长的通道,取到了行李。…
- 婚礼邀请系统WIS的开发与总结 技术
这周,终于把毕业论文,公司部分交接工作搞完了。终于可以开始搞给老婆拍胸脯承诺的电子请柬了。 由于前几周的出差,大量的工作内容,老婆已经开始着急,婚期还有一个多月了,我们不论实体还是电子请柬还一封没发呢。
- 这一次的目标,是星辰大海! 随笔
这一次,我打脸了。 之前我说我很享受在成都的生活,很看好自己在成都的未来。 但是一个月前,我却开始萌生了再一次离开家乡的想法。
- 用bootcamp安装win10 随笔
今天上午去见了个客户,他们要开发一个油气项目的工程可视化软件。项目看起来和我们之前做的工作相似性不高, 但是个人觉得完全值得一做,属于一个优质项目。两个油气工程师,将需求整理得十分清楚,看起来好像软件工程师一般。
- SoftRenderer迁移到github 技术
昨天花了些时间,将codeplex上的softrenderer v0.3 clone下来,然后做了些改动,迁移到github上。现已上传:
- 在线ocr服务试用及改进想法 随笔
今天帮老婆从图片转一些文字,肯定是要用OCR了。有一些相关的软件,但是都太庞大。就转几张图,遂开始寻找在线OCR服务。 尝试了几个国内网站,识别率太残忍了。之后,这个网站进入视野。先说说优点:
- Vertex Array Object的纠缠 技术
前些天,把一件一直想做又没做的工作完成了!将gkRendererGL330调试通过,在OSX, WIN32上跑起来了。 顺便,还完成了另一项壮举,将GL330和GLES2的代码统一了起来。…
- 安装vc100独立工具链 技术
这周末花时间尝试研究制作vc100独立工具链,功夫不负有心人,事实证明是完全可行的。下面我给出独立工具链的下载地址和安装注意事项。
- html5界面开发 技术
前些天由于做私活做了做web前端开发,这两天又多关注了一下html5,发现了很多有趣,强大的项目。 首先是早有耳闻的erget,
- 重设r6300v2路由器 技术
前几周玩路由器时,听信谣言,尝试超频,结果路由启动就进入无线断线-重连的循环中... 幸好机器是在京东买的,保修,取货,换新...
- 制作自定义vc100工具链 技术
gkEngine发布后,由于第三方库版本以及我自己是vs2010的使用者等原因,gkEngine对vs2010之后的版本基本是没有支持。由于使用的havok, toolkitpro界面库等原因,…
- 一个不相关领域的私活 随笔
前些天受朋友之托,让帮找人开发一个系统。需求是: 找了一圈朋友没有做这个事情的,自己分析了下。后台如果用php+mysql来做,操作很简单。主要工作在于前端,要进行不同平台,分辨率的适配。
- gkENGINE windows平台快速上手指南 技术
windows平台快速部署分为,部署,编译,运行,打包四个步骤。 部署开发平台,安装和准备平台所需的第三方依赖库以及测试资源
- Blogging Like a Hacker 技术
终于可以抛开wordpress那笨重的后台了!然后所有页面都可以由.md来自由掌控。post/page就像写readme一样方便。
- 近期计划 技术
以后的计划和博客就发在这里了,现在对近期的业余时间做一个规划。
- gkENGINE技术特性 技术
a cross-platform game engine gkENGINE的技术特性 gkENGINE截图 gkStudio ↓
- Hello World 技术
开源 gkENGINE 之后才发现 GitHub 上有这么多好项目和好用法——本站的第一篇。
- gkENGINE重开! 技术
2013年中,曾信誓旦旦的要开源gkENGINE,结果一直到了现在。 拖了一年多,问题在于 - 工作太忙... 其实在2014春节假期我还是赶了赶进度,对gles2的渲染器进行了完善,但没做完。然后留了一大堆还需要写文档的接口文件,然后就开始忙公司的工作,一直忙到现在。之前迟迟没有开源的原因,...
2014
- Tile-Based架构下的性能调校 技术
by Bruce Merry GameKnife译 在大概1个月之前,花了两个小时的时间阅读了OpenGL Insights上的两篇关于移动平台GPU的优化文章。当时正巧在公司作移动渲染器的优化和整理,顿觉醍醐灌顶。…
2013
- gkENGINE渲染优化 技术
gkENGINE上次总结了一篇开发总结(上)。然后二进制DEMO发到了OPENGPU上,算是引起了挺多的关注。 效率这个问题被很多大牛提及,因此,正在撰写的开发总结(下)被我停了下来。认真的分析渲染流程,找到性能瓶颈,尝试修改,突破。…
- gkENGINE跨平台的问题总结 技术
gkENGINE跨平台的心酸血泪史 总结了一下去年在做gkENGINE跨平台工作时,遇到的一些坑和解决方案。 开发环境选择 IOS IOS支持C++的方式是C++(GCC编译器)和objC混编 IOS平台使用xcode作为“编译器”和“调试器” VisualStudio作为“开发IDE” 利用...
- gkENGINE HDR流程简析 技术
个人比较喜欢看图说话。 这里简单的用图和文字说明一下gkENGINE HDR渲染流程中的关键步骤。如果要一步一步的解析,光是解释RT的创建,释放,纹理格式的选用。可能就需要一整天。如果再涉及到框架搭建,shader的实际处理,可能几天都不够。所以这里就不详细进行代码层面的讲解了。 不过这里列举...
- gkENGINE 开发两年半总结(上) 技术
小刀的由来 gkENGINE,gameKnife engine,小刀引擎。 这是一个完全个人开发的游戏引擎项目,起源于我的大学毕设。当时是希望开发一个能够全面支撑毕设游戏的游戏底层架构,同时也磨练一下自己的图形技术。在毕设游戏开发完成之后,就开始纯粹的进行引擎重新架构和开发。到目前为止,断断续...
2012
- 以前的一些画 美术
这两天,翻出来以前画的一些画。 话说3年前还幻想过以后做游戏美术,这些都是高中和大一大二的画了。 现在作为一个标准 programmer, 把这些画放技术博客上还有点意思 高三时候,买了本《铅笔风景》,跟着买了好多牛逼的自动铅笔,跟着学笔触,临摹和创作了挺多 都是铅笔素描。 这个比较有意思,当...
- 新的开始 随笔
半年没有来更新博客了。 最近半年发生了很多事。 我离开了之前供职的搜狐畅游,来到了新公司,新的地方,新的风格,新的开始。 今天,终于结束了为期一个多月的培训。这一个半月来,应该说这半年来,感慨良多。 离开 为什么要离开畅游,最后一次走出畅游大厦的时候,我有些不舍,问了自己这句话,自己的回答坚定...
- #九阴真经#优选配置渲染流程简要分析[Flexi引擎] 技术
周三体验了九阴真经,画面的确很棒。 渲染技术也较为现代,使用了延迟光照,真正全动态光影,应该算得上国内自研引擎渲染效果的最高水平了。 字都在图里了,不让发... 重复下凑字吧 九阴真经215内测版,Flexi引擎应该说代表了目前国内游戏渲染技术的最高水平 采用了延迟渲染架构,真正的做到了全动态...
- 利用D3DQUERY实现简单的GPU计时器 技术
序 最近想给引擎加一个准确定位各渲染模块消耗的功能,因此翻阅资料,自己实现了一个简短的GPU时钟。在引擎中整合如下: 值得注意的是,使用硬件查询后,回读显卡中的值会导致CPU/GPU的等待,因而会损失一些时间。因此这个功能只能算作开发时的调试工具之用(真正产品不会有人关心GPU时间...) 我...
2011
- gkENGINE - 个人图形引擎展示 技术
Header 总结文章如期的爽约了... 这个月工作太忙...有好多突破...另外,我发现之前做法有些笨拙,同时发现需要总结的东西,还需要进一步深入了解。所以,如期爽约,不过它会有到来的一天。 gkENGINE 最新效果 1 2 引擎特性: 大量光源延迟光照, 屏幕空间环境遮蔽, 级联阴影贴图...
- 工作半年 - 总结 随笔
启 上一篇日志,已经是四月份的了。 转眼过去,工作半年了。看到当时写的文章,感觉这半年,成长很明显。 先放两张对比图 目前的gkENGINE编辑器截图 毕设结束时的gkENGINE 承 毕业后的工作,就从实习转全职了。工作重心基本从工具转移到了动画系统和项目支持上。 可能是初生牛犊不怕虎吧,从...
- 毕设开发总结-3D游戏框架及网络对战游戏的开发(2) 技术
续 书接上回,今天距离睡觉还有两个小时,应该能把整个开发的流程带一遍。 感觉博客园里想要搞图形开发的学弟学妹还是挺多的 呵呵,希望这个开发流程能对你们有所帮助或者启迪! 最后,如果有任何疑问或意见,可以在后面跟帖。我知道的一定尽力回答 3.开发流程 3.1 毕设开题 | 2010.7 去年7月...
- 毕设开发总结-3D游戏框架及网络对战游戏的开发(1) 技术
小序 毕业设计终于接近尾声了,一个周末都没有继续写代码,正好有一个经验分享,所以把PPT的总结报告转写成一篇blog,希望得到高手们的指点。同时也希望能给还在读书的师弟师妹们一些建议和启发吧。同时,也是对自己这半年来成长的一个总结和记录。希望以后能够在工作岗位上继续努力,继续进步! 目前先转写...
- 随便写点 随笔
晃眼一看,上一次的博客已经是4个月之前发的了。 随便写点什么吧。 今天下午老师让我给大二的学生讲讲开发,所以跟公司请了假。昨天晚上回来,有些头痛,又要做今天下午讲课的PPT,就没有碰毕设的代码了。其实甩开代码,静下来思考思考,真是一件好事,可是这样的机会太少了。 实习 就先说说入职两个月的感受...
2010
- GameKnifeEngine第一个游戏<TANK 3D> Demo版完成! 技术
毕设中期检查前一天 终于完成了! 自从上个星期一从公司离职,回家闭关写了整整一个星期... 中间平安夜圣诞节也就和女友象征性的过了一下。终于,在毕设中期检查的前一天完成了! toonshading + 复杂后处理 + 19201080... pixelshader表示压力很大... 等检查完了...
- 基于3dsMax的地图编辑器设想 技术
GameKnifeEngine 地编雏形 目前的地编雏形。3dsMax + gkObject插件v1 透过gkObject面板的“Choose Mesh”可以改变当前物体所挂载的mesh文件 而场景导出时,每个gkObject只导出挂载的maxNode信息,mesh和material,其实也就...
- 入驻cnBlogs! 随笔
终于在博客园开通我的博客了。 原来使用过博客大巴,后来用的自己的域名。 不过最终发现,搞开发,还是博客园上面的高手多! 因此还是到博客园来安个家,这边就专门更新技术的文章了。 目前我还是个大四的学生,大学的毕业设计已经定了,一个3D联网游戏。 当然,主要希望做的还是一个相对灵活和高效的结构,大...
- Tank2010_alpha完成,项目完工! 技术
这篇文章写了好几次,中途都由于各种事情取消了,也没有存草稿。今天休息了将近一天,现在静下来写点东西。 基本算是总结吧。 工程在昨天完工,基本算是第一阶段的完工。这次的游戏,还是没有达到我们之前定的“特别好玩”的目的。技术上想要实现的东西太多了,东西一多,最后调整起来就慢。加上最后时间特别紧,很多...
- 关卡管理器构建完成,用脚本控制整个游戏流程! 技术
前几天在忙着出租房的事情,编码速度渐渐慢了下来。多了一些时间和cc讨论。我们都觉得应该把之前繁杂的使用全局变量的那些player,aiplayer,xxxmanager做到一个class内,然后尽可能的使用lua脚本去完全的控制这个类,以让lua来体现宏观的游戏逻辑。 星期六晚上,开始构思这个...
- Mock up! 基本游戏功能全部实现! 技术
今天和CC搞定了碰撞检测,目前游戏需要使用的基本功能差不多全部实现了,游戏玩法和逻辑也有所体现。基本上可以作为一个Mock up版本了! 玩家可以使用J,K,L键分别发射普通,红色,绿色的炮弹。 AI坦克会发射蓝色的炮弹 自己和敌人的坦克都能使用蓝色炮弹消除"墙壁" 类似于90坦克 同时,玩家...
- 基于脚本的简单AI和摄像机系统 技术
昨天一晚上,又研究出来不少东西 使用脚本系统做了个90坦克的简单AI,虽然方向性目前还不太明确,但是看起来已经很像90坦克了。然后又用脚本制作了摄像机系统,通过脚本,轻松的做到了相机跟随按键的柔和跟踪,根据坦克的运动方向调整相机位置。 快速前进,镜头仰角慢慢变大,前方视野更开阔 往下移动,调整...
- Behavior脚本系统 技术
这周的前两天,研究xml小有成就,这周的后两天,我继续研究lua和cpp的结合。昨天小有成就,今天来给大家分享一下经验 先说一下效果,按照惯例,上一张图 这两天同组程序员"cc"研究了character controller,角色和场景的碰撞检测已经很完美了。 所以目前的效果是:通过上下左右箭头...
- 场景编辑器竣工! 技术
今天接着做XML解析,对那个遍历的结构作了些修改,插入了几个函数。 终于,新的场景编辑器竣工了! 一个比较复杂的场景了,用3dsMax制作材质,安排物件位置和所用材质 导出到DirectX中,效果感觉比Max中好啊 得益于我的后期和ShadowMap啊! 3dsMax中编辑场景 应用了自写sh...
- Multisample & ShadowMap & PostProcess冲突解决 技术
昨天早上,我为了测试方便,把SettingDialog加入了F11快捷键,方便我快速的改变各种设备设定。 结果悲剧发生了... 看到SettingDialog后,我第一个打开的就是MSAA(多重采样抗锯齿),之后确定。画面变成一片惨黑... 我料想可能是后期处理和阴影的问题,按下F3(后期处理...
- 基础ShadowMap实现 技术
花了将近一天的时间,终于做好了GameKnife v0.9.6的ShadowMap系统。 上图: 整体效果 远看效果很棒了,设计有平行光和SPOT LIGHT两种阴影模式 这里使用的是平行光阴影 局部效果1 shadowmap的尺寸是10241024,细节上还是锯齿比较大 局部效果2 加上之前...
- GameKnife_0.9.6 渲染系统初步竣工! 技术
一个星期没写日志了,今天终于比较有时间了,花了2个多小时整理硬盘...实在太乱了,桌面上图标在两小时前已经占满半个屏幕了....(我的屏幕是19201080的),DARE的项目文件,特效合成的工程和资源文件,各种文章,归档,整理... 这几天没闲着,一直在设计,抽象,封装。之前研究的一系列前期...