自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 谈谈VR游戏的性能优化

VR游戏相对传统游戏,个人认为主要有三个方面的不同:玩法设计,输入方式,性能压力。今天就来谈一下VR游戏中的性能优化。

2016-03-20 17:37:19 2820

原创 Deferred Rendering(三)反锯齿和半透明问题

Deferred 框架下的AA前面说过Deferred 框架下无法使用硬件AA,这句话不严谨:Deferred Shading在G-Buffer之后,物体几何信息全被抛弃了,导致后续每个像素都独立计算,所以不能使用硬件AA;但是:Deferred Lighting,在Shading Pass阶段,物体会被再次渲染一遍,此时打开硬件MSAA,肯定是能用的(尽管光照部分取自li

2014-05-09 18:34:59 3239

原创 Deferred Rendering(二)G-Buffer的组织

先来看一张网上广为流传的《杀戮地带2》典型的Deferred Shading的G-Buffer组织:这里补充解释下几个点:不存Position,而由depth和屏幕像素坐标反推出来。参考:http://www.derschmale.com/2014/01/26/reconstructing-positions-from-the-depth-buffer/Normal

2014-04-26 16:36:30 3068

原创 Deferred Rendering(一)原理概述

假如有n盏灯,m个几何体传统的前向渲染:for each dynamic light for each mesh light intersects render mesh with lighting光照计算是O(n * m)复杂度的操作。假如几何体m1是被几何体m2挡住的(不考虑半透明的情况),那么在Z-Test阶段,m1对应的像素是被剔除

2014-04-14 20:09:42 2396

原创 UI 血条批次优化

前提介绍之前的角色血条实现较为简单。画一个血条需要4个批次,有图有真相:(GPA截取,粉红色为当前drawcall对应的绘制区域)乍看好像没什么问题,但是游戏是10 vs 10的游戏,极端情况下(两方英雄加小兵进行团P)仅是血条这部分就有上百个批次。虽说图片小、顶点少,但是批次多引起的状态切换开销,大家都懂得。于是乎,就要想办法合并批次。之前血条各部分的

2014-03-25 21:10:07 1740

原创 sublime Text与markdown、hlsl、graphviz

sublime Text写markdown:语法高亮安装markdown preview预览:ctrl + shift + p ----> mdp,选择一项即可上述指令对应在浏览器中预览。如果需要输出pdf,利用chrome的打印功能即可。sublime Text写hlsl(或glsl,cg,fx,unity shaderLab文件等):语法高亮编译: 用D

2014-03-06 19:05:15 2222 2

原创 阴影技术:Shadow Map 初探

ShadowMap的原理光源和目标点之间的连线没有任何物体遮挡,则目标点没有在阴影中;光源和目标点之间的连线有物体遮挡,则目标点处在阴影中;ShadowMap是一张2D纹理图,用来表述遮挡关系;ShadowMap记录了以光源视角来看,各个可照射角度下离光源最近的物体与光源的距离;ShadowMap的产生把光源位置作为视点渲染场景,在pixelShad

2014-02-27 22:20:39 3597

原创 3D游戏中的描边算法

很容易想到的是法线放大算法,分两个pass:沿发线方向放大模型,用描边色渲染正常渲染模型效果如图:优点是不需要renderTarget,兼容性好。但是如何达到dota2游戏中那种边缘发光的描边效果呢?经导师提供一种方案,类似于前面的发线放大,但是这里的放大是通过高斯模糊来实现的。先上最终效果图:思路如下:模型到

2014-02-19 16:36:37 4221

原创 Unity ShaderLab 中的内置变量

点此获取官方文档地址所有的这些内置变量类型无需声明,直接使用,需要包含:UnityCG.cginc file.Transformationsfloat4x4 UNITYMATRIXMVP Current modelviewprojection matrixfloat4x4 UNITYMATRIXMV Current model*view matrixfloa

2014-02-13 17:36:49 1577

原创 Unity shader 初探

shader第一行:自定义shader所属的目录(随便取名,随便指定),这里的目录非shader文件所在的目录,而是类似于shader ID,供外部选择时使用!当这一行修改成其他名字时,unity所有用到该shader的地方都会做对应修改Shader的结构:用在Properties中的shader中的变量类型:Unity中的三种Shader类型:

2014-02-13 12:59:23 1177

原创 《程序员的思维修炼》摘记

对于新的尝试,都会有一定惯性阻碍它。如果我处于静止状态,我会倾向于保持当前状态。转向新的方向意味着我必须客服惯性的阻力信念是真实的,正如我们一直所看到的,你的想法的确会改变大脑的机制和化学物质。你必须相信这种改变是可能的。如果你认为自己会失败,你的预感就会实现。大脑之外的思维支持工具会成为你思维头脑的一部分。——"External support is part of yo

2014-01-12 18:40:30 538

翻译 bump Mapping Using CG(3rd Edition)

你可能听说许多人做过bump mapping,并且在doom 3和Half-life中见过很酷的效果。而现在,你可能独自坐着、旁边放着你的新显卡、心里有个这样的疑问:我是否能在自己的游戏中实现同样的效果。好,今天是你的幸运日。我最近读了很多关于bump mapping的书,并且连续在互联网上搜集了很多资料,我认为最终我发现了许多很棒的教程。然而这些教程包含了许多不必要不相关的代码,这就需要你从中甄选出真材实料!因此,最终我决定自己做一个教程。这里,我尽可能解释的多一点,但是如果你已经知道了一些基础理论

2013-12-28 14:23:53 915

原创 WinDBG调试简介

前段时间做了个PPT分享:WinDBG调试简介.特别的感触有以下几点(后面是对PPT内容的简单梳理):有压力才会有动力。那一周行动力特别强,翻资料找书写例程,时间利用率特别高网上的资料没书上的系统权威。书真心是首选开始就是工作的一半。拖延了2天迟迟不开工,后面一旦开始了,就进入刷刷刷的节奏先理出框架,细节慢慢完善,整个过程会通畅很多。一定要分配好任务片不会画流程图真是做

2013-12-26 21:35:30 810

翻译 How GPUs Work

90年代初期,随处可见的三维图形交互仍然像科幻小说里的内容一般遥不可及。然而到了90年代末,几乎每一个新的计算机里面都包含着一个叫做GPU的图形处理单元,该部件能提供高效的,视觉效果丰富的三维交互式体验。 可以说,消费者对视频游戏的需求,制造技术的进步以及人们对天生具有并行处理能力的图形管道的一系列探索,促成了这样的戏剧性转变。今天,GPU在纯计算方面的能力,可以把最强大的CPU甩好几条街,并且这

2013-12-26 21:33:57 686

原创 终于找到包裹打不开的原因了

有多少人写程序时总是相信自己的直觉,而忽略调试信息呢?我承认大多数情况下直接分析代码可能要好一些,但是也有一些情况你需要确切的调试信息。我最近就遇到了一个包裹打不开的问题——开包裹的时候会对冷却条控件进行clone生成textureTarget;由于控件还没父控件,坐标又用了相对坐标(scale = 1,offset = 0),所以导致生成的textureTarget的size等于分辨率;

2013-12-26 21:25:24 724

原创 IME和假全屏

近期工作中处理的一些问题,简单的记录下。问题不大,但是有坑,初次接触很讨厌,顺利快速解决太需要经验了。对于Windows平台,游戏如果要全屏,则输入法提示框显示不出来。解决方法一般有两种:接管所有的IME消息,自己绘制输入法提示框。这种方法坑多,工作量大,还不保证美观,绝不推荐。用假全屏。之前查资料说假全屏效率低,害得我一直不敢往这方面想。最后没办法了,发现完全不是那么一回

2013-12-26 21:24:16 1154

原创 内存分析优化总结

这段时间一直在做内存分析和优化相关的工作。几点感悟,在此记录下,欢迎有经验人士共同探讨一。有关tcmalloc tcmalloc是google出的好东西,不了解的话自行google之。他的最显著作用是提升速度,内部的缓存机制做得相当了得。副作用是,加大了内存占用,而且会隐藏了代码中潜在的bug。用和不用,无非是对空间和时间的权衡取舍。优化内存使用是必然的,但不要等价于节省了程序内存占用

2013-12-26 21:23:15 710

原创 九月份读书清单

上月读书情况还算满意,简单做一下记录。再接再厉!《Rework》37signals是我喜欢的型。之前读过这本书,没多大感触;工作了一段时间,回头再读,里面很多观点感触很深。文章短小精悍,处处真知灼见,值得读,好好读。《松本行弘的程序世界》前面写过读书笔记,不错的书。《浪潮之巅》就爱看这种,讲历史比单纯讲道理给人的指导意义大多了。后面有

2013-12-26 21:21:39 578

原创 推荐workFlowy

接触GTD有段时间了。试用过的软件也不少,比如Doit,Things to do,Remember the milk,Anydo等等,都因为这样那样的原因用起来不舒服。自己绝不是每天事儿一箩筐,非得需要日程表来安排提醒自己做事情的那种;自己下一步要做什么,也很容易梳理出来,相信大部分人都是我这一种情况吧。还有,其他的要素,比如时间安排,我不需要。如果一件事情真的需要在特定时间内去做,那我用

2013-12-26 21:20:31 817

原创 近况的一点声明

工作两年多了,可以说生活,技术,职业发展,人际交往等等各个方面都有不少的感悟,但blog上就是没积累记录下来。主要原因有两个:行动力差且懒。完美主义倾向。解释下第二个原因。一直觉得既然写就写好,小感悟零零碎碎的知识不足以汇集成像样的总结,一句两句三五句话的文章个人觉得实在没必要。写起来没劲,各位看官看起来也没意思。这方面过于追求精品了。第一个原因也和追求完美脱不开关系。

2013-12-26 21:19:19 547

原创 《松本行弘的程序世界》浅读笔记

虽然目前对ruby不感兴趣,但这本书还是相当值得一读的。里面很多编程思想,和语言本身没太大的关系,但读来收获颇丰。众多面向对象语言的编程思想虽不尽一致,但是无论那种面向对象编程语言都具有以下的共同功能:不需要知道内部的详细处理就可以进行操作(封装,数据抽象)根据不同的数据类型自动选择适当的方法(多态性)对象是现实世界中具体物体的反应是一个很大的误解。如果把面向对象编程当作是

2013-12-26 21:16:58 1071

原创 推荐kindle

入手kindle也有一段时间了,毫不夸张地说,kindle 4是目前为止我最喜欢的电子产品,没有之一。毫不亚于实体书的阅读体验,让我重新收获了阅读的乐趣,而且没有丁点在电脑上,手机上读电子书的那份浮躁。最让我受用的是网页内容可以"send to kindle".想想看,浏览网页的时候看到了一篇精彩文章, 但当时没有时间,没有心境细细品读,那就"send to kindle"吧,下次只要打开

2013-12-26 21:15:17 825

原创 又遇未初始化

又遇到了变量没有初始化导致的bug,又是那么隐晦,又是那么难找,不过最终还是被揪出来了:D 是这个样子的:游戏中有些特效,偶尔会出现不消失的情况,概率很小;但是一旦在一台机器上出现,那么之后出现的概率就相当高。。原因是这个样子的:某个相关的变量没有初始化——策划同学提了需求之后,没及时配置相关参数,而程序这边又没给初值。这个变量取值很大的时候会导致特效不消失;因为是release版本,下次

2013-12-26 21:13:43 541

原创 让CEGUI的Editbox控件支持复制,粘贴

让CEGUI的Editbox控件支持复制,粘贴。鉴于CEGUI内部,集成太多的东西,不利于维护,因此对windows Clipboard 的API函数的控制,放在客户端实现,同时CEGUI只负责Ctrl+C,Ctrl+V被按下的时候,发出相应的消息即可。但这样就又引出了新的问题:负责处理该事件的回调函数在lua中,对utf8编码的处理比较烦,关键是没有相应的字符串函数供你调用;回想一下,C

2013-12-26 21:12:13 672

原创 Debug, Release, 初始化

这两天碰到了一个bug,表现是这样的:Debug下一切正常,一派祥和之气;Release下暗潮汹涌,很不正常;Release模式编出来的东西,用lua的Decoda调试也乖得很,不出任何问题。这是怎么回事呢?扫一遍代码,没看出端倪,再扫N遍,还是没有收获;最终还是通过调试找到了问题出在哪里,并解决掉。回头看看,也算是费了很大的劲才搞定。首先说下问题出在哪里:类中的一个数据成员没有被

2013-12-26 21:10:44 694

原创 概率和原则

假设你正在参加一个游戏节目,你被要求在三扇门中选择一扇。其中一扇后面有一辆车,其余两扇后面则是山羊。你选择了一扇门,假设是1号门,然后知道门后面有什么的主持人开启了另一扇后面有山羊的门,假设是3号门。他然后问你:“你想选择2号门吗?”那么,改变你的选择对你来说是一种优势吗?电影《21点》中也出现了这样的论题,那个数字天才的选择是绝对要改变,并且给出了这样的解释:第一次选择时,会出现两种可能

2013-12-26 21:07:18 880

原创 CEGUI很难响应双击事件的解决方法

项目中,某一天突然出现了这样的问题:CEGUI中的控件很难响应到双击事件。之前双击一下房间列表中的图片很容易就进到某一房间了,而现在要在控间上连续猛击N下才侥幸进的去。昨天,好好的研究了一下这个问题,最后终于解决掉。首先,cegui内部支持两种方式产生鼠标双击事件:第一种,接受window直接发送的双击事件,与之对应,外部要有一个消息注入: {%highlight c++%}

2013-12-26 21:05:43 565

原创 自我实现那些事

先看两个有趣的新闻:理论推算人类在2030后才可以跑进9秒69 2009年04月28日9.58! 博尔特跑出恐怖速度 2009年08月17日之前生理学专家预测人100米的极限是:9.60秒;如果我没记错,小学时看过一本书上说:有关专家人指出人100米的极限为9.72秒;我不知道如果博尔特虔诚“信仰”了所谓的专家得出的所谓的科学数据,结果又会如何;我只知道古代的人

2013-12-26 21:02:52 445

原创 《记忆碎片》真是神作

暑假无聊,Imdb上淘片淘到的.首先交代一下整体感受:没完整看完之前,我认为只是《巴别塔》类型的:叙事拍摄剪辑手法异常NB,很有才,但为了耍酷而耍酷,本质上没实质性的内容,哗众取宠,故作高深,绝称不上经典。以至于看的昏昏入睡,决定看完了就睡觉.结果,完后,偶兴奋了,振臂大呼:"Kao,这才是电影!" 再然后,睡意全无,兴致勃勃得享受各种影评.有必要先交代两点:

2013-12-26 21:01:29 626

原创 自我实现那些事

加泰罗尼亚球评家卡拉索指出过“小罗是性格影响状态的典型,被长期排除在首发阵容外,他情绪就容易波动,状态便难以维持,算不得球队能安心倚重的核心,队魂。性格上的缺陷,是他被梅西淘汰的根源.”这里有两个插曲:小罗南美之行有两场比赛表现很好,后来几场比赛表现很一般,再后来传出了这样一个新闻--小罗意外替补引出夜店风波 舞厅1点半竟被球迷轰回家昨天刚看到阅微堂的文章:我们为什么懒

2013-12-26 20:56:34 546

空空如也

空空如也

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

TA关注的人

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