自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 发布支持VR的Web3D内容

基于WebGL的Web3D也可以有VR体验,只要可以在Web端应用中做到以下两点即可:可以在Web端中得到VR设备的各种状态,比如头显或显示设备的位置、朝向以及其它的运动姿态等可以将Web端中显示和渲染的内容通过合适的方式送往头显或显示设备针对上述两点,在不同的Web内容的实现中有不同的方法,主要...

2016-09-29 02:06:17

阅读数 3614

评论数 0

原创 基于Web3D的VR

分享一个支持VR模型的Web3D演示程序,需要在手机上配合对应的虚拟眼镜来体验。

2016-09-07 23:54:17

阅读数 2875

评论数 3

原创 几种主流贴图压缩算法的实现原理

前段时间一直在搞项目上线前的各种优化,关于贴图压缩这块也是需要针对不同的平台做不同的设置,这里备忘一下在各种平台中常使用的几种贴图压缩格式及其细节,以便更加适宜地选择在特定设备下的压缩格式以便节省资源。关于移动平台和硬件设备与压缩格式的对应关系可以参考下这里,基本上比较清楚了。1. DXTCDXT...

2016-03-15 23:29:09

阅读数 20631

评论数 2

原创 Unity Notes之屏幕触点轨迹的平滑

最近在做一个移动设备上的触控系统需求,基本的要求点是:通过手指在屏幕上指定区域内的滑动点击来控制一个对象在空间或屏幕上的位置移动。具体的应用场合:通过屏幕点击精确来控制对应的武器光标的位置;得到较为精确且平滑的用户在屏幕移动时的拖尾效果;直接的实现也比较简单,通过捕获Input.touch上的to...

2016-03-07 14:09:30

阅读数 3976

评论数 7

原创 Unity Notes之协程(Coroutine)简析

协程(Coroutine)是Unity项目开发中经常使用的一个特性,其可以让代码以分时的方式执行,这样可以避免某帧中的复杂操作阻塞当前帧而导致给用户带来不流畅的体验。协程其不是C#的语言特性,但在实现中用到了C#中的迭代器等特性,因而如果能对实现机制其有更深入的理解的话也可以使得对协程的使用更加自...

2016-02-02 14:58:36

阅读数 3672

评论数 0

原创 Unity Notes之配置文件基于内容的差异化更新

游戏项目中各种策划配置的表格更新最近格式频繁,因为策划要反复来调节一些数值。这些个调整对于线上版本一般就通过差异化动态更新的方式来更新的玩家的客户端中。这过程中有一个问题,就是有的时间策划一更新的内容很小,比如只是在其中增删了一种物品的配置记录,而这样的话也就相当于这个表格整体有了修改,需要全部更...

2015-06-14 19:32:36

阅读数 3033

评论数 1

原创 Unity Notes之生成AssetBundle时的引用丢失问题以及其它

Unity中提供的AssetBundle中资源管理中很重要的一部分,可以用它来实现游戏发布后的各种资源动态更新功能。其中的生成参数常用的有两个BuildAssetBundleOptions.CollectDependencies,BuildAssetBundleOptions.CompleteAs...

2015-02-14 19:37:55

阅读数 6387

评论数 0

原创 Unity Notes之Android版本的联机调试备忘

1. 要使用最新版本的platform-tools,要不然

2014-10-10 23:11:50

阅读数 4653

评论数 0

原创 Unity Notes之控制粒子系统的最大粒子数量

Unity中的粒子系统使用起来还是比较方便的。不过在实际过程中遇到这样的一个问题:需要动态的来控制一个粒子系统组件所能产生的最大粒子数。看doc上说是有maxParticles来控制,但实际上却没有这个开放的参数,只能通过其它的方式来实现。这里可以通过手动产生粒子的方式来实现,也即Particle...

2014-08-21 18:52:10

阅读数 8975

评论数 0

原创 低帧速下判断移动物体到达目标位置

昨天review一同事的上传代码,发现了其中的一个问题,其实挺。

2014-08-01 14:08:42

阅读数 4686

评论数 5

原创 HDR Image encoding formats

HDR图像的编码与存储是PRBT、IBL中的一个重要问题。其主要是将scene-referred的颜色信息存储并保存后在渲染时进行使用,然后通过tone-mapping这样的操作将其映射到output-referred的R8G8B8的颜色值并输出到终端显示器上。当然,一般来说不需要直接存储并读取H...

2014-07-27 23:54:33

阅读数 5601

评论数 0

原创 Unity Notes之发布包精简

好久没有更新博客了。从客记

2014-07-26 18:35:01

阅读数 4679

评论数 2

原创 Aliasing vs Noise

Aliasing is a *specific* kind of error; it's when high frequencies show up as low frequencies.  It's like information from high frequency c...

2013-11-28 12:35:57

阅读数 3798

评论数 0

原创 Sparse Voxel DAGs

Siggraph 2013上面的一篇新文:High Resolution Sparse Voxel DAGs,主要介绍了一种基于图的稀疏体素空间存储结构。 其主要是对SVO做了进一步的改进,减少里边的共享结点的冗余存储,将其用directed acyclic graph(DAG)直接连接,如下图...

2013-06-16 18:09:23

阅读数 5202

评论数 1

转载 Multi-Thread Programming Resources for Game Engine

From http://www.geeks3d.com/20100418/game-engine-multi-threading-programming-resources/ Here is a collection of links that can be useful for multi...

2013-05-24 22:40:05

阅读数 5283

评论数 0

原创 Voxel Cone Tracing based Global Illumination

之前很早就看到了UE4中的基于Sparse Voxel Octree的RTGI,效果很酷,一直尝试作些研究与实现,但苦于没机会。前段得空,抽时间学习了一下,这里小结一下备忘。 整个算法主要分类几个过程:体素化、Mipmap OCTree、Cone Tracing。 1. Voxelizatio...

2013-05-23 16:09:33

阅读数 12829

评论数 14

原创 Web3D Porting - Emscripten VS FlasCC

前段时间有在搞一些C++到Web3D化相关的一些东西,最近也看到了emscripten,抛开成熟度的话不说,单就技术来说也是挺不错的。其实现方法实际上跟FlasCC差不多,这里对其作一简单的对比总结。 1. 流程与环境配置 Emscripten的主要流程为: C/C++ -> ...

2013-05-14 22:21:57

阅读数 7357

评论数 5

原创 图形学中的贴图采样、走样与反走样等

计算机图形学中不可避免的会涉及到图像分析与处理的相关知识,前些时间也重温了下常用到的采样、重建以及纹理贴图等内容,并对其中的走样与反走样有了更多的认识,这里小结一下。 1. 基本问题 信号的采样与重建过程中首先面临着两个基本的问题: 给定一个连续的信号g(x)以及它的离散采样信号gs...

2013-04-21 00:36:46

阅读数 12096

评论数 3

原创 Deferred Shading in Flash with Stage3D

前不久得到了Flash Player 11.6的beta版本,里边增加了不少新的特性,比如对MRT的支持就很不错。有了MRT最直接的好处就可以在Stage3D上实现很流行的Deferred Shading。前不久做了些尝试,最终还是实现了,效果还不错。 设置MRT的设备相关函数为: Conte...

2013-03-14 21:26:46

阅读数 6523

评论数 9

原创 BRDF能量守恒属性的证明

今天跟一哥们儿聊到BRDF,说起了其中能量守恒属性的证明,细想,这个之前倒还真没好考虑过的。于是搜了些资料,终还找到了方法,这里总结下。 对于BRDF中的能量守恒属性的基本表述形式为(注意其中的o、i): 考虑物体表面上某点X 处,其对应的光线辐入总能量(E ) 、辐出总能量(M)分别为(...

2013-03-10 21:19:16

阅读数 5579

评论数 6

原创 基于NDK的Android防破解

Android程序防破解是发布app时一个很需要考虑的问题,通常的做法是对代码加入混淆干扰以增加破解难度。但即便如此,混淆操作之后的java代码仍然可以被通过各种方法进行破解。在基于NDK的Android中含有相应的main.cpp来作为应用程序的入口,因而在这里进行一些防破解较验,相应的破解难度...

2013-03-04 17:29:02

阅读数 9416

评论数 11

原创 Ant replace 含有中文时的乱码问题

在Ant中对含有中文的文件作替换操作时会出现乱码的现像: 这主要是由于Ant操作文件时的字符集影响,可以在使用该操作时指定字符集的编码方式: encoding="utf-8" dir="${basedir}">

2013-02-21 17:28:34

阅读数 5284

评论数 0

原创 使用Ant自动构建Android版本

Ant是一个很好的跨平台构建工具,特别是对于Java项目,这里使用它对Android工程进行自动化构建可以得到非常大的便利。一般来说对Android工程进行构建主要有以下几个步骤: 使用aapt来编译工程生成R.java;使用aapt来对工程所需用的资源进行打包;转换并编译AIDL文件;...

2012-11-19 14:03:24

阅读数 3954

评论数 0

原创 感悟小结

团队合作:要时时刻刻明白自己不是一个人在战斗,而是与整个团队在合作;善于运用团队的力量,善于为团队贡献力量;付出信任,获得信任谨言慎行:不是说要去世故地做人,而是说要多考虑自己的行动、言语默然间可能会给同事带来的无形的负面影响,且永远不要低估这种影响的负作用戒骄戒躁:新知识永远都用遇到,新问题也永...

2012-10-11 10:03:44

阅读数 2635

评论数 4

原创 Directional Light Map(Directional Irradiance)

Light Map是一个比较经典的技术,目前来说应该是一般游戏引擎中的标配,它很好的在一种拟全局光效果的质量和效率上做了中和。不过目前用的更多、质量更好的应该是Directional Light Map,它是原始LM的增强版,通过在预处理与实时还原中考量场景中表面的法向量进而增强效果。DLM的基本...

2012-08-19 01:30:57

阅读数 6144

评论数 0

原创 Some Shading Models in realtime rendering

前段时间有在这里(http://www.fseraph.com/?p=661)看到关于实时渲染中的一些常见渲染模型的总结,最近于是也找了些资料学习了一下,这里简单总结一下。 1. 一些基本概念 Photon(光子): 波粒二象性;属于粒子;拥有波长;具有能量Radiant Energy(辐...

2012-08-17 22:18:05

阅读数 5018

评论数 0

原创 计算Cube Map的SH系数

DX提供了一组用来操作Sphereical Harmonic的基本函数,如D3DSHAdd、D3DSHDot、D3DSHEvalDirection等;其中有一个是D3DSHProjectCubeMap,用来从CubeMap投影得到对应的SH系数,还是蛮有用的。一般情况下,在游戏场景中需要使用Lig...

2012-07-03 22:07:54

阅读数 4613

评论数 4

原创 关于游戏中的特效

特效是游戏中增加交互印象的很重要一方面,一个好的特效系统能够很大程度上提高游戏的特色。这尤其体现在动作游戏上,比如God of War,Ninja Gaiden等系列中的特效效果就很出彩。这里简单总结一下自己所了解的一些游戏中较为常见的特效: 公告板 公告板效果就是直接使用公告板来渲染出一定的...

2012-06-30 21:43:31

阅读数 7866

评论数 1

原创 Vertex Baking

顶点颜色渲染是一种较早的渲染方法,它为模型的三维网格中的每个顶点提供一组单独的颜色值,然后在传入硬件进行光栅化渲染时GPU会根据顶点的颜色对每个像素进行相应的插值而得到Pixel上的颜色值,进而为多边形着上渐变色。由其操作模式可知,一个三角形内部的像素受到其关联的三个顶点上的颜色值所影响而不论三角...

2012-06-16 22:39:10

阅读数 2790

评论数 0

原创 Shadow Caster Culling

最近读到去年I3D上面的一篇论文,Shadow Caster Culling for Efficient Shadow Mapping,觉得不错,这里简单总结一下。对于算法的基本原理还是比较容易理解的,可以见下图所示。从图中可以看出对于当前某特定帧下的Camera来说,其可见的几何体元是整个场景的...

2012-06-09 18:23:10

阅读数 3581

评论数 0

原创 Capitulum Sampling

蒙特卡洛积分模拟是离线渲染中一个最常用的方法,而关于其各种优化的研究有很多就是集中在改进其采样的模式。事实也确实如此,采样模式对最终的质量以及收敛速度会有很大的影响,比如需要做一个最简单的球面采样来计算ambient occlusion,可能就不会使用较原始的均匀分面采样,而会使用Cosine w...

2012-05-19 14:54:11

阅读数 3690

评论数 12

原创 Texture UV Atlas

UV的Atlas操作在某些场合下还是很有用途的,比如很常见的对于场景进行的LightMap烘焙时。这时就需要对于整个场景中的几何体元进行Light Map UV的生成,也即是将其投影到了一张Texture中去,且要求所有的几何体元对应唯一的Light Map UV(即在这一张纹理中没有相互重叠,以...

2012-05-13 23:09:40

阅读数 6890

评论数 2

原创 Tetrahedron based light probe interpolation(基于四面体的Light Probe插值)

在当前的游戏引擎中,使用Light Probe来计算全局环境光对于动态物体的影响是一种很主流的方法。在预处理阶段生成完场景的Light Probe之后,传统的方法采用查找最近的8个相邻的Probe然后使用三线性的方式(Trilinear Interpolation)进行插值,但是这样的插值代价稍大...

2012-04-21 23:06:36

阅读数 5586

评论数 1

原创 Deferred Shading VS Deferred Lighting

鉴于传统的Forward Rendering对于多光源渲染时的低效问题,各种Deferred Rendering的方法被提出并且广泛使用。比如Deferred Shading以及其之后的Deferred Lighting。Deferred方法相对于传统Forward Rendering最主要区别都...

2012-04-08 00:43:20

阅读数 17469

评论数 1

原创 Barycentric Coordinates of Tetrahedron (计算四面体的重心坐标)

四面体应该是说空间体状结构的最简单形式,只需要四个顶点就可以构成,某些情况下可能需要用四面体来做一些插值之类的操作,或是碰撞检测(比如判断一个点是否在四面体的内部),这些都可以用其重心坐标来成(Barycentric Coordinates)。四面体的重心坐标跟三角形的重心坐标类似,都是找到组成四...

2012-04-03 16:02:02

阅读数 10046

评论数 0

原创 Deferred Decal(延迟贴花)

Decal渲染是一个引擎中重要的一部分,记忆中印象最深刻的就是以前CS中的弹痕与爆炸痕迹了。目前来说,Decal的实现方法也比较多,而且感觉还跟游戏类型有关,比如子弹乱飞的射击类FPS游戏中对贴花系统的要求就比较高,因为本来Decal的变化就比较丰富。一般来说贴花渲染主要有两种实现方法: T...

2012-04-03 01:11:48

阅读数 14680

评论数 4

原创 Cascaded Shadow Map(CSM)中的一些问题

Cascaded Shadow Map(CSM)是目前引擎中主流的阴影技术,效率与效果均不错。它与传统的单张Shadow Map的区别主要在于将视锥体进行了层次的分解,每一层单独计算相关的SM,这样在渲染大场景的阴影就可以避免传统的SM的各种缺点。典型的CSM原理基本上如下图所示: 虽然看起...

2012-03-18 17:20:08

阅读数 10865

评论数 2

原创 Rodrigues' Rotation Matrix(罗德里格旋转矩阵)

使用蒙特卡洛方法做半球面采样时遇到有这样的一个问题:默认产生的采样向量组所在的半球面是Y轴(或其它轴)所对应的方向,但是在使用时可能就需要根据法向量对其进行变换,于是就有了这样一个问题,给定两个向量V0和V1 计算出一旋转矩阵R得到: R V0 =V1 这个问题其实蛮简单,可以直接用两个向量的...

2012-03-15 23:38:18

阅读数 20426

评论数 3

原创 Point与AABB间的最远点对

最近需要做一些碰撞检测相关的东西。AABB是游戏引擎中最常用的碰撞基本体了,具有各种优良的特性。其本身的自交判断很简单(这句话咋恁别扭呢*~*),而且与其它形体的相交判断也不是很复杂。求一点到AABB上的最近点对很常用,也比较简单,代码如下所示: void ClosestPtPointAABB(...

2012-03-14 00:30:52

阅读数 2526

评论数 0

原创 使用UMFPACK求解大型稀疏矩阵方程

最近在对模型进行PRT处理时需要用到最小二乘法来做采样点的优化拟合,对最小二乘法有了解的可能就会知道(http://en.wikipedia.org/wiki/Least_squares),一般情况下为了便于目标点的计算通常会引入矩阵并得到一个如下的矩阵方程: Ax = b 其中的x就是一个关...

2012-03-12 13:47:51

阅读数 10752

评论数 9

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