自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 资源 (9)
  • 收藏
  • 关注

原创 发布支持VR的Web3D内容

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

2016-09-29 02:06:17 4260

原创 基于Web3D的VR

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

2016-09-07 23:54:17 3499 3

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

前段时间一直在搞项目上线前的各种优化,关于贴图压缩这块也是需要针对不同的平台做不同的设置,这里备忘一下在各种平台中常使用的几种贴图压缩格式及其细节,以便更加适宜地选择在特定设备下的压缩格式以便节省资源。关于移动平台和硬件设备与压缩格式的对应关系可以参考下这里,基本上比较清楚了。1. DXTCDXTC(或BC)为微软为DX而推出的基于block的贴图压缩格式,其主要采用调色板的原理来进行压缩。BC1

2016-03-15 23:29:09 31057 2

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

最近在做一个移动设备上的触控系统需求,基本的要求点是:通过手指在屏幕上指定区域内的滑动点击来控制一个对象在空间或屏幕上的位置移动。具体的应用场合:通过屏幕点击精确来控制对应的武器光标的位置;得到较为精确且平滑的用户在屏幕移动时的拖尾效果;直接的实现也比较简单,通过捕获Input.touch上的touch点并记录对应的位置,然后将屏幕位置序列转换为目标的信息即可。但是这里边会遇到一个问题,移动设备直

2016-03-07 14:09:30 4764 7

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

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

2016-02-02 14:58:36 3997

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

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

2015-06-14 19:32:36 3357 1

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

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

2015-02-14 19:37:55 7389

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

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

2014-10-10 23:11:50 4871

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

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

2014-08-21 18:52:10 11391

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

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

2014-08-01 14:08:42 5429 5

原创 HDR Image encoding formats

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

2014-07-27 23:54:33 6645

原创 Unity Notes之发布包精简

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

2014-07-26 18:35:01 4986 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 content "masquerades" as low frequency content, which is why a

2013-11-28 12:35:57 4101

原创 Sparse Voxel DAGs

Siggraph 2013上面的一篇新文:High Resolution Sparse Voxel DAGs,主要介绍了一种基于图的稀疏体素空间存储结构。其主要是对SVO做了进一步的改进,减少里边的共享结点的冗余存储,将其用directed acyclic graph(DAG)直接连接,如下图所示:其创建方法也是基于SVO来进行自底向上的逐层合并(自顶向下效率较低),其中有用到一些

2013-06-16 18:09:23 5681 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 multithreaded programming. Threads creation, data synchr

2013-05-24 22:40:05 5912

原创 Voxel Cone Tracing based Global Illumination

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

2013-05-23 16:09:33 15033 14

原创 Web3D Porting - Emscripten VS FlasCC

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

2013-05-14 22:21:57 7670 5

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

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

2013-04-21 00:36:46 13878 3

原创 Deferred Shading in Flash with Stage3D

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

2013-03-14 21:26:46 6766 9

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

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

2013-03-10 21:19:16 6286 6

原创 基于NDK的Android防破解

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

2013-03-04 17:29:02 10093 11

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

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

2013-02-21 17:28:34 5834

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

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

2012-11-19 14:03:24 4167

原创 感悟小结

团队合作:要时时刻刻明白自己不是一个人在战斗,而是与整个团队在合作;善于运用团队的力量,善于为团队贡献力量;付出信任,获得信任谨言慎行:不是说要去世故地做人,而是说要多考虑自己的行动、言语默然间可能会给同事带来的无形的负面影响,且永远不要低估这种影响的负作用戒骄戒躁:新知识永远都用遇到,新问题也永远需要解决,需要用平和的心态来对待各种挑战结队编程:两个人的力量正向相加永远大于一个人的力量抓住重点:

2012-10-11 10:03:44 2837 4

原创 Directional Light Map(Directional Irradiance)

Light Map是一个比较经典的技术,目前来说应该是一般游戏引擎中的标配,它很好的在一种拟全局光效果的质量和效率上做了中和。不过目前用的更多、质量更好的应该是Directional Light Map,它是原始LM的增强版,通过在预处理与实时还原中考量场景中表面的法向量进而增强效果。DLM的基本操作方法如下:在采样点处把其半球空间中的辐射照度用某种方法进行采集并保存(比如离线的光线跟踪)

2012-08-19 01:30:57 7186

原创 Some Shading Models in realtime rendering

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

2012-08-17 22:18:05 5533

原创 计算Cube Map的SH系数

DX提供了一组用来操作Sphereical Harmonic的基本函数,如D3DSHAdd、D3DSHDot、D3DSHEvalDirection等;其中有一个是D3DSHProjectCubeMap,用来从CubeMap投影得到对应的SH系数,还是蛮有用的。一般情况下,在游戏场景中需要使用Light Probe时需要设置不同的采样点,然后生成对应上的Probe并计算SH系数,这些SH系数用来实时

2012-07-03 22:07:54 5609 4

原创 关于游戏中的特效

特效是游戏中增加交互印象的很重要一方面,一个好的特效系统能够很大程度上提高游戏的特色。这尤其体现在动作游戏上,比如God of War,Ninja Gaiden等系列中的特效效果就很出彩。这里简单总结一下自己所了解的一些游戏中较为常见的特效:公告板公告板效果就是直接使用公告板来渲染出一定的特殊效果。常规公告板的面方向始终与视线的方向垂直,但是也可以增加其属性设置为不必与视线垂直,此时即相当

2012-06-30 21:43:31 8971 1

原创 Vertex Baking

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

2012-06-16 22:39:10 3212

原创 Shadow Caster Culling

最近读到去年I3D上面的一篇论文,Shadow Caster Culling for Efficient Shadow Mapping,觉得不错,这里简单总结一下。对于算法的基本原理还是比较容易理解的,可以见下图所示。从图中可以看出对于当前某特定帧下的Camera来说,其可见的几何体元是整个场景的一个有限子集,而需要做阴影计算的也必然是这些可见几何体元集的一个子集,因而在生成Shadow Ma

2012-06-09 18:23:10 4022

原创 Capitulum Sampling

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

2012-05-19 14:54:11 3967 12

原创 Texture UV Atlas

UV的Atlas操作在某些场合下还是很有用途的,比如很常见的对于场景进行的LightMap烘焙时。这时就需要对于整个场景中的几何体元进行Light Map UV的生成,也即是将其投影到了一张Texture中去,且要求所有的几何体元对应唯一的Light Map UV(即在这一张纹理中没有相互重叠,以便取到正确的烘焙信息)。UV Atlas其实是一个传统的NP hard问题,一般来说都是通过某些最优化

2012-05-13 23:09:40 7939 2

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

在当前的游戏引擎中,使用Light Probe来计算全局环境光对于动态物体的影响是一种很主流的方法。在预处理阶段生成完场景的Light Probe之后,传统的方法采用查找最近的8个相邻的Probe然后使用三线性的方式(Trilinear Interpolation)进行插值,但是这样的插值代价稍大,不过一个可行的优化就是尽可能地减少插值中使用的Probe的数量,比如由8个减少到4个不等。但是这时就

2012-04-21 23:06:36 7674 1

原创 Deferred Shading VS Deferred Lighting

鉴于传统的Forward Rendering对于多光源渲染时的低效问题,各种Deferred Rendering的方法被提出并且广泛使用。比如Deferred Shading以及其之后的Deferred Lighting。Deferred方法相对于传统Forward Rendering最主要区别都是提高了对多光源渲染时的效率,它是是将光源的计算转到屏幕空间来进行,进而不浪费无效的光源着色。Defe

2012-04-08 00:43:20 20926 1

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

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

2012-04-03 16:02:02 15029 2

原创 Deferred Decal(延迟贴花)

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

2012-04-03 01:11:48 19548 8

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

Cascaded Shadow Map(CSM)是目前引擎中主流的阴影技术,效率与效果均不错。它与传统的单张Shadow Map的区别主要在于将视锥体进行了层次的分解,每一层单独计算相关的SM,这样在渲染大场景的阴影就可以避免传统的SM的各种缺点。典型的CSM原理基本上如下图所示:虽然看起来原理简单,但是在实际中想实现一个健壮的CSM并不容易,涉到各种问题,其中一些是这种方法本身就固有的,

2012-03-18 17:20:08 13332 3

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

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

2012-03-15 23:38:18 23952 3

原创 Point与AABB间的最远点对

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

2012-03-14 00:30:52 2792

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

最近在对模型进行PRT处理时需要用到最小二乘法来做采样点的优化拟合,对最小二乘法有了解的可能就会知道(http://en.wikipedia.org/wiki/Least_squares),一般情况下为了便于目标点的计算通常会引入矩阵并得到一个如下的矩阵方程:Ax = b其中的x就是一个关于目标点的参数列向量,b是对应的观测值向量,而A就是根据应该背景得到的数据矩阵。求解这个矩阵形式的线性

2012-03-12 13:47:51 12908 9

UMFPACK_Windows_lib

UMFPACK包及已经编译好的Windows下的lib.

2012-03-12

OpenGL Geometry Shader Tutorial(OpenGL几何着色器教程)

The OpenGL Geometry Shader Tutorial from Oregon State University,it's cool...

2010-04-05

ShaderDesigner(GLSL Tools)

一个很好的GLSL着色器设计工具,和RenderMonkey差不多,不过比RenderMonkey更好用更易用,很值得一试。

2010-02-11

OpenCL Specification(OpenCL参考手册)

OpenCL参考手册,主要介绍了GPU统一编程语的框架及常调函数的说明,对于GPU开发入门很好的参考资料和手边常备手册。

2010-01-28

OpenGL着色语言第2版(OpenGL Shading Language 2 Edition)

OpenGL着色语言(GLSL)第二版,很不错的GLSL入门及进阶编程的一本书。

2010-01-28

OpenGL函数参考大全

OpenGL函数参考大全,包含gl及glu函数,在开发时常用。

2010-01-28

基于OpenGL的游戏SDK程序框架

自己的游戏开发初期的一个基于OpenGL的SDK程序框架,可方便地进行各模块的扩充,也是OpenGL与SDK结合的一个很不错的Demo。

2010-01-27

VS MFC类库参考手册

关于MFC类库的详解手册,做MFC程序的手边查阅工具。

2010-01-26

空空如也

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

TA关注的人

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