引擎技术
文章平均质量分 54
yanonsoftware
从大学出来后一直工作在游戏开发的第一线,主要做品有《仙剑奇侠传3》(上海软星,主程序),《功夫世界》(北京腾武,技术总监)
展开
-
3D引擎的基本内容
【整体设计】3D引擎一般都采用OO设计,使用C++实现;支持plug-in;【渲染管道】支持多个渲染管道;渲染到贴图;HDR;【场景管理】SceneGraph管理场景对象的层次关系;Quad Tree,Octree,BSP tree处理空间分割;LOD;PVS、遮挡剪裁等;【资源管理】后台异步调入;引用计数控制生存期;【光照和阴影】经典的Per-Vertex光照,Light原创 2006-09-10 10:14:00 · 2673 阅读 · 0 评论 -
《功夫online》3D引擎开发总结
【《功夫online》正在公测:http://www.gongfu.com.cn】 《功夫online》也公测一段时间了,早就想抽时间写点关于功夫开发的东西,可一直无法静下心,现在终于可以松一口气了。功夫的开发始于2004年6月,至今将近3年啦。功夫是我全程参与的第二个大型游戏项目了,抛开运营、市场等外在因素,单就游戏本身来说,我认为这个产品是成功的。在前几年,完成第一个项目的时候,原创 2007-02-09 11:01:00 · 7726 阅读 · 7 评论 -
ShaderSimpler(3) : 卡通渲染
CSDN blog问题百出,图片插不进来,真让人郁闷!今天总算能连上google page了,继续上传shader simpler源码。 源码下载地址:http://yanonsoftware.googlepages.com/ShaderSimpler.zip 卡通渲染(cartoon render,cel-shading)主要包括两个效果: 1、把普通光照的平滑亮度变化原创 2007-01-17 11:12:00 · 4229 阅读 · 0 评论 -
ShaderSimpler(4) : 环境映射
源码下载地址:http://yanonsoftware.googlepages.com/ShaderSimpler.zip Cube Map环境映射特别适合与曲面,实现也很简单--构造一个视点到顶点的向量,然后计算出相对与normal的反射向量,用此向量索引cube map贴图即可。 顺便比较了一下shpere环境映射的效果。Sphere环境映射的实现也很简单,把顶点法向量变换原创 2007-01-23 17:43:00 · 3650 阅读 · 0 评论 -
ShaderSimpler(6) : Parallax Mapping
源码下载地址:http://yanonsoftware.googlepages.com/ShaderSimpler.zip Parallax map通过简单的计算可以大幅提高per-pixel光照的效果。Parallax map的想法基于一个简单的事实,那就是当我们用一个多边形去表现一个凹凸不平的表面的时候,事实上随着视线的变化,看到的实际的texel并不是顶点uv坐标差值出来的那个结果原创 2007-01-29 11:50:00 · 6114 阅读 · 2 评论 -
ShaderSimpler(5) : Bump Mapping(Normal mapping)
源码下载地址:http://yanonsoftware.googlepages.com/ShaderSimpler.zip从贴图生成normal map normal map需要从一个颜色贴图对应的高度图生成。为了计算i,j点的normal,首先可以根据高度差计算出s,t方向的切向量: S(i,j) = T(i,j) = 其中a是一个缩放系数。normal可以由这两个切向量得出原创 2007-01-29 11:48:00 · 4523 阅读 · 0 评论 -
曾经有一张很好的图放在我的面前....
曾经有一张很好的图放在我的面前.....google了半天, 终于又给它找回来了.D3D9 pipelinehttp://p.blog.csdn.net/images/p_blog_csdn_net/yanonsoftware/288542/o_pipeline-9.0.png转载 2007-03-30 13:37:00 · 4126 阅读 · 1 评论 -
自己开发引擎的时代已经过去了!
首先要说说明一下,这个所说的“自己写引擎”值得是在一个商业化的游戏项目中。 上个月装了新电脑,配的7600GT,找了几个新游戏看了看。《中世纪-全面战争》给我很深的印象!千军万马在一起混战,而近处的角色还拥有per-pixel lighting,一方面感慨7600GT比5600GT快太多了,一方面也感叹引擎技术的进步太快了! 回头看看国内的原创 2007-04-06 09:53:00 · 6055 阅读 · 2 评论 -
ShaderSimpler(8) : 初探Deferred shading
源码下载:http://myshaders.googlecode.com/files/ShaderSimpler_05142007.rar 对于一个基于Shader的渲染系统如何来计算多个动态光源的光照呢?这是一个困扰我很久的问题。基本上有这样三种解决方案:1. 在单个pass中计算物体的所有光照。这种方案的主要缺点就是shader管理非常复杂。常见的思路是基于一套shader模版,自动生成n原创 2007-05-14 17:16:00 · 9556 阅读 · 3 评论 -
ShaderSimpler(9) : Deferred shading with Multiple Render Targets
源码下载:http://myshaders.googlecode.com/files/ShaderSimpler_05192007.rar 今天抽空是试验了一下使用MRT进行deferred shading。基本是在上个例子的基础上修改的,主要有一下几个地方: 使用SetRenderTarget分别将各个render target设置好; 在pixel shader原创 2007-05-19 16:25:00 · 5401 阅读 · 4 评论 -
Ogre学习笔记(5):TerrainSceneManager
TerrainSceneManager是一个OctreeSceneManager的派生类,并且是在同一个Plugin工程中。 通过调用void TerrainSceneManager::setWorldGeometry( const String& filename )来加载一个地形,参数为一个配置文件的文件名。配置文件中主要有: WorldTexture=te原创 2006-08-21 20:15:00 · 2776 阅读 · 0 评论 -
Ogre学习笔记(4):OctreeSceneManager
既然前面分析Mesh(Entity,SceneNode)的渲染时已经看到了OctreeSceneManager,那么现在正是分析一下它了。所谓SceneManager,我想处理“空间分割”和“可见性判断”是两个主要的任务,后者已经打过一点交道了,是通过下面这个函数完成的: virtual void _findVisibleObjects ( Camera * cam, bool onlySh原创 2006-08-15 20:21:00 · 3728 阅读 · 0 评论 -
Ogre学习笔记(6):BspSceneManager
【1. 概览】 Ogre支持Quake3的bsp格式。相关的代码在“Plugin_BSPSceneManager”工程中。主要的类有以下几个: Class BspSceneNode: BspSceneNode是SceneNode的派生类,是专门提供给BSPSceneManager使用的。主要是提供针对于BSP tree的可见性判断。这个类并不是BSP tre原创 2006-09-13 12:02:00 · 3648 阅读 · 1 评论 -
Ogre学习笔记(7):Lighting
OGRE的灯光接口很简单,以Demo_Lighting工程为例:1. 创建灯光:Light* SceneManager::createLight(const String& name) 此函数再调用“SceneManager::createMovableObject()”,创建一个Light的实例,然后加入到ObjectMap中(保存在SceneManager::mM原创 2006-09-19 18:04:00 · 2956 阅读 · 0 评论 -
Ogre学习笔记(8):骨骼动画
OGRE的基本动画控制是很简单的,设置一个动画的操作是这样: // Set idle animationmAnimationState = ent->getAnimationState( "Idle" ); mAnimationState->setLoop( true );mAnimationState->setEnabled( true );(原创 2006-09-25 18:20:00 · 5097 阅读 · 2 评论 -
Ogre学习笔记(9):API 抽象层
OGRE通过一个抽象层,实现了API无关性。现在有RenderSystem_Direct3D9和RenderSystem_GL两个实现。下面主要通过考察RenderSystem_Direct3D9来分析一下API抽象层及其实现。 API抽象层有两个核心的类:RenderSystem和HardwareBufferManager,另外还有一系列的HardwareVer原创 2006-10-11 20:18:00 · 2589 阅读 · 0 评论 -
ShaderSimpler(1) : 实现基本光照
下载源码 : http://yanonsoftware.googlepages.com/ShaderSimpler.zip程序的基本思路 class SimpleD3DApp处理了win32窗口创建和D3D初始化的工作,然后响应菜单,生成相应的ShaderSimpler派生类实例。 一个个ShaderSimpler的派生类为一个shader试验小程序。 Effect的基本处理步骤原创 2006-12-05 11:47:00 · 2476 阅读 · 0 评论 -
Ogre学习笔记(1):Basic Tutorial
OGRE Homepage:http://www.ogre3d.org/ OGRE的WIKI中有一系列的基本教程,这篇笔记就是读完这些教程后的一个总结。教程首页:http://www.ogre3d.org/wiki/index.php/Ogre_Tutorials。 Basic Tutorial 1主要讲了几个OGRE中的基本概念:1. SceneManage原创 2006-08-02 16:16:00 · 4073 阅读 · 0 评论 -
Ogre学习笔记(3):Mesh的渲染流程
首先一个Entity对象必须Attach到一个SceneNode。1. 创建一个SceneNode:SceneManager::getRootSceneNode() (在SceneManager::init时会创建一个RootNode)à SceneNode::createChildSceneNode()àNode::createChild()主要的操作在这个函数中完成,首先调原创 2006-08-09 12:07:00 · 8156 阅读 · 0 评论 -
ShaderSimpler(2) : Phong shading
下载源码 : http://yanonsoftware.googlepages.com/ShaderSimpler.zip 这个小程序通过把顶点法线逐象素插值,再计算每个象素的diffuse,specular光照结果来简单的实现phong模型。因为specular是view depended,所以Effect中增加了eyePos参数。 通过观察box的渲染可以看出与basic原创 2006-12-07 09:20:00 · 2410 阅读 · 3 评论 -
Ogre学习笔记(2):Mesh的加载
如果新开始写一个3D渲染引擎,Mesh应该是一个很好的切入点。当一个看似简单的Mesh渲染到窗口时,说明引擎的架构已经确定,并验证了。想了解Ogre内部的机制, 可以先看看Mesh的加载过程,这里主要涉及到Resource是如何管理的,Material是怎样处理的,Resource和HardwareBuffer是如何关联的。对于前面教程代码的执行过程做一下分析:创建一个Entity(加载M原创 2006-08-07 12:34:00 · 7167 阅读 · 0 评论 -
换个ID。。。。新博客
开始创业了,一段全新的历程!CSDN的ID也换一个,,,http://blog.csdn.net/Neil3D原创 2010-01-30 14:37:00 · 3887 阅读 · 0 评论