3D编程
spracle
这个作者很懒,什么都没留下…
展开
-
bump Mapping Using CG(3rd Edition)
你可能听说许多人做过bump mapping,并且在doom 3和Half-life中见过很酷的效果。而现在,你可能独自坐着、旁边放着你的新显卡、心里有个这样的疑问:我是否能在自己的游戏中实现同样的效果。好,今天是你的幸运日。我最近读了很多关于bump mapping的书,并且连续在互联网上搜集了很多资料,我认为最终我发现了许多很棒的教程。然而这些教程包含了许多不必要不相关的代码,这就需要你从中甄选出真材实料!因此,最终我决定自己做一个教程。这里,我尽可能解释的多一点,但是如果你已经知道了一些基础理论翻译 2013-12-28 14:23:53 · 925 阅读 · 0 评论 -
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 · 2428 阅读 · 0 评论 -
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 · 3126 阅读 · 0 评论 -
Deferred Rendering(三)反锯齿和半透明问题
Deferred 框架下的AA前面说过Deferred 框架下无法使用硬件AA,这句话不严谨:Deferred Shading在G-Buffer之后,物体几何信息全被抛弃了,导致后续每个像素都独立计算,所以不能使用硬件AA;但是:Deferred Lighting,在Shading Pass阶段,物体会被再次渲染一遍,此时打开硬件MSAA,肯定是能用的(尽管光照部分取自li原创 2014-05-09 18:34:59 · 3271 阅读 · 0 评论 -
UI 血条批次优化
前提介绍之前的角色血条实现较为简单。画一个血条需要4个批次,有图有真相:(GPA截取,粉红色为当前drawcall对应的绘制区域)乍看好像没什么问题,但是游戏是10 vs 10的游戏,极端情况下(两方英雄加小兵进行团P)仅是血条这部分就有上百个批次。虽说图片小、顶点少,但是批次多引起的状态切换开销,大家都懂得。于是乎,就要想办法合并批次。之前血条各部分的原创 2014-03-25 21:10:07 · 1768 阅读 · 0 评论 -
3D游戏中的描边算法
很容易想到的是法线放大算法,分两个pass:沿发线方向放大模型,用描边色渲染正常渲染模型效果如图:优点是不需要renderTarget,兼容性好。但是如何达到dota2游戏中那种边缘发光的描边效果呢?经导师提供一种方案,类似于前面的发线放大,但是这里的放大是通过高斯模糊来实现的。先上最终效果图:思路如下:模型到原创 2014-02-19 16:36:37 · 4243 阅读 · 0 评论 -
阴影技术:Shadow Map 初探
ShadowMap的原理光源和目标点之间的连线没有任何物体遮挡,则目标点没有在阴影中;光源和目标点之间的连线有物体遮挡,则目标点处在阴影中;ShadowMap是一张2D纹理图,用来表述遮挡关系;ShadowMap记录了以光源视角来看,各个可照射角度下离光源最近的物体与光源的距离;ShadowMap的产生把光源位置作为视点渲染场景,在pixelShad原创 2014-02-27 22:20:39 · 3622 阅读 · 0 评论 -
Unity shader 初探
shader第一行:自定义shader所属的目录(随便取名,随便指定),这里的目录非shader文件所在的目录,而是类似于shader ID,供外部选择时使用!当这一行修改成其他名字时,unity所有用到该shader的地方都会做对应修改Shader的结构:用在Properties中的shader中的变量类型:Unity中的三种Shader类型:原创 2014-02-13 12:59:23 · 1192 阅读 · 0 评论 -
Unity ShaderLab 中的内置变量
点此获取官方文档地址所有的这些内置变量类型无需声明,直接使用,需要包含:UnityCG.cginc file.Transformationsfloat4x4 UNITYMATRIXMVP Current modelviewprojection matrixfloat4x4 UNITYMATRIXMV Current model*view matrixfloa原创 2014-02-13 17:36:49 · 1602 阅读 · 0 评论 -
谈谈VR游戏的性能优化
VR游戏相对传统游戏,个人认为主要有三个方面的不同:玩法设计,输入方式,性能压力。今天就来谈一下VR游戏中的性能优化。原创 2016-03-20 17:37:19 · 2862 阅读 · 0 评论