自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

逍遥剑客

专注于3D游戏技术

  • 博客(371)
  • 资源 (14)
  • 收藏
  • 关注

转载 设计模式

      设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。      毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。      GoF的“设计模式”是第一次将设计模式提升到理论高

2010-01-23 14:21:00 1797 1

原创 Ogitor代码分析

 引擎状态监听(观察者) 底层变化时, 需要高层UI做出反应. 这个有一个原则, 就是下层逻辑不能依赖上层逻辑, 所以通过一个接口进行消息的派发. 如果是.net的话, 可以用delegate/event实现. C++的话, 可以自己用模板写个delegate用, 效率比用接口高… 实体抽象(工厂方法) 扩展性是很强, 但是…类太多了-_-. 这里有种基于DLL

2010-01-17 22:36:00 5085 5

原创 常见图形数学英文单词备忘

 单词翻译homogeneous齐次affine transform仿射变换linear transform线性变换polynomial(multinomial)多项式convex hull凸包

2010-01-11 22:07:00 2907 1

原创 X3DAudio中声道音量跳变的问题

对于3D音效, 左右耳的音量是不一样的. 当然, 眼下没有条件试验传说中的6.1声道是啥子效果, 所以不考虑这种情况. 正是因为左右有音量的差别, 才能根据耳朵去定位音源的方位. 如果是只有两个声道, 比如耳机, 那么两只耳朵的音量变化有时候就很突兀. 为什么呢? 以现实来说, 人的两耳所能感受的声音方向是不同的, 正好左右对称. 如下图. 横线上两耳的音量差别是最大的, 纵线上两耳的音量

2010-01-09 01:08:00 2556

原创 径向模糊效果

最先在这里看到:http://www.gamerendering.com/2008/12/20/radial-blur-filter/这效果在鬼泣4中切换场景时见过, 极品飞车12的运动模糊也有这种感觉.原理:    确定一个中心点(如0.5, 0.5), 跟当前像素连一条线. 以当前像素为中心, 在线上的附近像素进行采样, 最后取一下平均值.代码翻译成HLSL:// Th

2010-01-06 22:28:00 13748 2

原创 Bullet的最小化功能封装

既然是"最小化", 那么就要明确最少需要哪些功能. 对于一般的物理应用来说, 只是简单地模拟碰撞, 柔体什么的都用不到. 在这样的前提下, bullet的工程可以精简到三个: libbulletcollision, libbulletdynamics, libbulletmath.接下来, 需要明确一下基本的物理概念. 这个是跟用什么库(physx, havok, etc)是没有关系的. 在上

2010-01-03 22:16:00 2415

原创 基于屏幕像素抖动的PCF

PCF无非就是把周围的像素加吧加吧, 然后取个平均值. 结果的平滑程度, 跟Kernel的大小有直接关系.下面来对这个描过边的锯齿茶壶PCF一把:2x2:3x3:4x4:当然, Kernel越大, 效果越好. 但大到一定程度效果就不明显了, 而且还要考虑性能问题, 毕竟多次的纹理采样很慢. 其实呢, 通过抖动也可以使用少量的采样达到近似比较大Kernel的效果.

2009-12-16 21:46:00 4511

原创 我与SM不得不说的故事(一)

话说当年学shader的目的, 就是为了想实现一个当时天真地以为很NB的算法TSM, 一年多来朝着这个目标努力, 到最后却发现, 结果并没有想像中的美好-_- 最开始实现的是Projective Shadow, 也就是投影纹理的方法. 先把需要投影的物体从光源视角以单一颜色画到一张RTT上, 然后用投影矩阵生成纹理坐标投影到地表上去跟纹理进行混合. 为什么用它呢? 主要是它对硬件没什么要求

2009-12-03 22:41:00 156941 20

转载 MIT Computer Graphics Lecture Notes

Home > Courses > Electrical Engineering and Computer Science > Computer Graphics > Lecture Notes Lecture NotesLEC #TOPICS1Course Overview ( PDF - 1.1MB)C++ Tu

2009-11-26 22:38:00 2444 1

转载 You want to be a Graphics Programmer ...

From: http://diaryofagraphicsprogrammer.blogspot.com/2009/11/you-want-to-be-graphics-programmer.htmlAuthor: Wolfgang Engel  I regularly receive e-mails with the question what kind of books I rec

2009-11-16 20:51:00 1965

原创 《火炬之光》中的“X射线”效果

玩了下《火炬之光》, 没想到能用OGRE做到这么个程度, 很让人惊叹!刚开始玩就注意到人被遮挡时, 并不是像其它游戏那把遮挡物半透明化, 而是把被遮挡的部分处理成一种透视效果:想了想, 其实也挺简单的, 把模型画两遍就成了:1. 先画场景2. 画被遮挡的部分, ZWrite=False; ZFunc=Greater; 开启Alpha混合, 光照亮度做为alpha值输出, 颜色由

2009-11-09 21:34:00 7829 5

翻译 Nebula3 SDK Nov 2009 更新内容

这是新版的 N3 SDK:下载链接跟以往一样, 只包含了Win32平台的源码. Console平台特定代码 (Xbox360, PS3 还有 Wii) 介于法律问题没有包括进去.这是Apr2009 SDK之后大体的改变: == 主要新特性XNAMath 在Win32 和Xbox360 平台上的统一支持 PS3 支持(不属于公开的SDK, 但是针对GCC 4.x做了一些代

2009-11-06 22:03:00 2797 2

原创 球面环境映射实现高光效果

前段时间在看wow的模型的时候, render flag中有一个很奇怪的渲染状态切换, 而且这个状态在WoWDev上也没有被提及. pass.useEnvMap = (texunitlookup[tex[j].texunit] == -1) && ((rf.flags & 0x10) !=0) && rf.blend>2; //&& rf.blend<5; // Use environmen

2009-11-01 20:06:00 4512 3

原创 看得让人DT的GLSL

GLES2.0封装到shader和vbo结合的部分, 蒙了vertex layout(或叫vertex declaration)要一个一个element的绑定到一个shader变量上(GL叫attribute), 也就是相当于HLSL的VS_INPUT结构体吧.问题是, GLSL里没有"semantic", 然后问题就来了举个例子:一个简单的顶点结构:struct Vertex

2009-10-16 21:15:00 4392 4

转载 KILLZONE 2 显示技术详解

转自 KILLZONE 2 显示技术详解【上】KILLZONE 2 显示技术详解【下】 人们开始摸索着如何抛弃现有的 Forward Rendering 而使用其他技术。作为其中一个方法,就是最近开始流行起来的 延迟着色( Deferred Shading )技术。延迟渲染是什么——重度渲染的优化手段之一 在欧美有着巨大人气的 FPS 游戏

2009-09-23 23:24:00 4302

原创 哇哈哈, 终于天上掉箱子了

基本步骤:初始化SDK创建场景, 设置重力设置默认材质, 摩擦力系数之类的创建一个地面每次按Enter创建一个Box, 让它自己往下掉主要的代码如下://------------------------------------------------------------------------------voidTestPhysXApp::OnP

2009-08-25 23:15:00 2141 3

翻译 Light Pre-Pass 渲染器----为多光源设计一个渲染器

作者: Wolfgang Engel, 原文: http://www.wolfgang-engel.info/RendererDesign.zip 渲染器设计就像为一座房子打地基, 结果可能比预期大了, 小了, 或者太笨重了. 预先了解要在它之上建造什么, 并且为未来的扩展做出合理的预测, 是建造一座稳定房子的先决条件.  用软件设计的术语来说, 打地基好比渲染器设计, 而房子,

2009-08-18 22:55:00 7786 8

原创 一个困扰我一个多星期的Nebula3的BUG

最近看了一些PhysX的东西, 本想写个demo练练手, 结果遇到一个非常诡异的问题当我兴冲冲的用Wizard建了一个工程, 编译, 运行, 竟然一片黑?奇怪啊, 这个Wizard程序应该没问题才对, 要不然我怎么敢发布出来?换成Release, 编译...结果正常!用PIX跟踪了一下发现, 两个版本的变换矩阵不一样!当时就茫然了...拿SDK自带的testviewer编译运行

2009-08-11 22:08:00 2135 4

原创 VS2005中Nebula3数据类型的调试信息显示

用过VS2003的应该知道, STL的容器调试起来非常麻烦, 因为调试时显示的信息非常不直观VS2005引入一个autoexp.dat, 可以定义数据在调试时显示的格式详细介绍可以参考:Writing custom visualizers for Visual Studio 2005这里暂时给出一些Nebula3相关的格式定义:这些放到[AutoExpand]字段下面:;---

2009-08-04 23:15:00 2204

原创 PhysX学习笔记(4): 动力学(3) Joint

(关节)Joint Joint和contact是约束body运动的两种方式Joint坐标系: Joint Limit: 相当于关节的活动范围Breakable Joint: 可以断开的, 由setBreakable控制. 断开时会响应onJointBreak()Joint类型:球形关节: 肩膀, 绳子卷动关节: 门棱柱关节: 防震器圆柱关

2009-07-28 22:49:00 3771

原创 PhysX学习笔记(3): 动力学(2) Actor

Actor Actor扮演两种角色: 静态对象, 动态刚体(也叫body). Actor包含shape. Shape之间相交会触发很多行为. Static actor主要作用是碰撞检测, 所以一般都会赋于对应的shapeDynamic actor可能只表示一个抽象的连接点, 所以不需要对应一个shape 创建actor:NxActorDesc actorDesc;a

2009-07-23 23:28:00 5056

原创 PhysX学习笔记(2): 动力学(1)

场景(Scene):物理模拟发生的场所, 包含了actor, joint, effector. 跟图形引擎里的Scene差不多, 可以有多个实例存在, 互不干涉.场景没有特别的大小限制. 功能有重力, 射线拣取, 开关硬拼检测等. 模拟时序(Timing):物理模拟导致物体的一些属性随着时间进行变化, 如位置, 速度等.模拟每经过一次时间步进进行一次, 通常要与渲染帧数进行

2009-07-22 22:50:00 3465 1

原创 PhysX学习笔记(1): 基础

简单形状l  NxBound3: AABBl  NxBox: OBBl  NxCapsule: 胶囊(线段+距离)l  NxPlanel  NxRayl  NxSegment: 线段l  NxSphere SDK 初始化:跟D3D差不多, 直接NxCreatePhysicsSDK就OK. 释放时不能delete, 因为那是DLL内部的对象, 只能releas

2009-07-22 00:04:00 4323 1

原创 打算学物理了

突然心血来潮想学物理引擎了...以前老觉得这东西很神秘, 很高端...但是据说有高中物理水平就能用-_-刚来北京时配了一台很NB的台式机, 冲着物理加速和PerfHUD就买了块9800GT, 一直没发挥出它的潜力来, 天天拿它打dota, 汗~工作(算上实习的话)将近两年了, 发现自己对于游戏的热情已经渐渐往技术方面转移了最近几个能让我一口气玩通的游戏, 无一例外都使用了物理引擎:

2009-07-21 22:50:00 2129 4

原创 溶解效果

选人界面的角色出现时的效果非常酷, 一直不知道咋做的还是中speedtree在镜头前时的消隐也是这种溶解效果, 跟的圆形透明消隐差不多, 但是这种方法不用alphablend, 效率高些. (当时我形容是被虫子啃了...这机器上没装, 不截图了) 最近研究ShadowMap的Alpha穿透, 用到了clip()函数, 恍然大悟, 原来如此啊~clip (DirectX HLSL

2009-07-15 23:15:00 5168

原创 快速LightMap烘焙

什么是烘焙? 简单地说, 就是把物体光照的明暗信息保存到纹理上, 实时绘制时不再进行光照计算, 而是采用预先生成的光照纹理(lightmap)来表示明暗效果. 那么, 这样有什么意义呢?好处:由于省去了光照计算, 可以提高绘制速度对于一些过度复杂的光照(如光线追踪, 辐射度, AO等算法), 实时计算不太现实. 如果预先计算好保存到纹理上, 这样无疑可以大大提高模型的光影效果保

2009-07-12 21:30:00 25646 15

原创 在Nebula3中加载自定义模型的思路

Nebula3中目前还是没有地形…不过冒似国外的引擎除了CryEngine外对于地形都不重视…..之前看了下WOW的地形组织方式, 一直在想怎么把它加进来模模糊糊地感觉到, 它应该是把Model当成了最基本的渲染单位地形是不是也需要包装成模型呢? 也就是说, 地形对于引擎来说是个上层概念, 不应该放到Graphics内部去管理. 嗯, 虽说地形也是一种特殊的模型, 但它的管理方式相

2009-07-08 22:18:00 2644 4

原创 强大的PropertyGrid

PropertyGrid, 做工具一定要用这东西.....把要编辑的对象看成类的话, 所有要编辑的属性就是成员嗯嗯, 最近看了几眼Ogitor, 它对于PropertyGrid的使用就很不错所有要编辑的对象(灯光, 模型, 粒子等等)都有一个共同的基类, 每当选中一个可编辑对象时, 右边的属性框里就显示出当前对象的属性...(公司那个编辑器要多土就有多土-_-)尽管Ribbon界

2009-07-04 22:05:00 38043 4

原创 Nebula3 Render Application Wizard

使用方法同N3ConsoleAppWizard1. 修正stdafx.h第一次编译时会找不到的问题2. 输出目录定位到$(N3SDK)test/win32/下, 这样程序可以自动加载export*.zip里的系统资源3. DEBUG版的输出文件会加上_d后缀(因为2中输出目录改成跟RELEASE一样了) 注意: 环境变量$(N3SDK)已经改为SDK的根目录, 如"D:/Neb

2009-06-30 20:33:00 2230 2

原创 Nebula3的渲染线程插件(Render Thread Plugin)

上个版本的SDK把渲染放入一个独立的线程, 这是一个很先进的改动但是它也造成一个问题: 不好操作底层的渲染API了对于想自己控制VB, IB来绘制三角形级的demo程序来说, 一点也不方便之前我写过一个SyncRenderApplication, 但是很不完美, 比如不能使用InputServerApril2009加入了RTPlugin, 为写demo指明了方向, 嘿嘿(虽然作者原

2009-06-22 23:14:00 2578

翻译 Nebula3 RTTI 小技巧

注意: 以下代码省略了命名空间前缀和”using namespace xxx”声明来改善可读性. 另外, 因为我没有通过编译器运行这些代码, 不保证有些手误. 不要把Rtti跟RTTI搞混:Rtti 是类名, MyClass::RTTI 是类的Rtti对象的名字. 每个RefCounted派生的类都有一个Core::Rtti的静态实例, 它在main()之前初始化. 检查一个对

2009-06-16 23:59:00 2785

原创 Nebula3中的委托(Delegate)

April2009增加了不少好东西, 这段时间准备静下心来看看关于delegate这么个东西, 可能C++程序员很陌生, 但是Callback函数一定听说过吧? 其它两者本质上是一种东西不过C++对于成员函数的回调实在是.....(别跟我提boost)曾经用过fastdelegate, 确实不错. 我以为这就是C++中的完美实现了N3中增加的这个, 不比它差, 代码量更小, 呵呵

2009-06-15 21:58:00 2412 1

原创 做了Nebula3的应用程序向导

使用方法:1. 配置环境变量:2. 把下载的zip解压到一个合适的位置3. 把N3ConsoleAppWizard.ico, N3ConsoleAppWizard.vsdir, N3ConsoleAppWizard.vsz三个文件拷贝到Visual Studio 8/VC/vcprojects/下, 并更改N3ConsoleAppWizard.vsz中的路径为第2步中的解压路径

2009-06-08 23:32:00 2578 4

原创 反醒反醒

最近blog更新得很少从什么时候开始的呢?好像是从俩兄弟离职开始的.没有了共同探讨技术的人, 所以自己业余时间都拿来玩了玩什么? 玩dota现在的游戏, 不知道为什么, 只有这一个能玩的下去那些XXX大作, 没有一个能让我玩完的除了WorldOfGoo和CrayonPhysicsDeluxe这两个很有创意的游戏之外 好像N3新版本的推出也打断了我以前的学习计划

2009-06-06 14:45:00 2006 1

转载 Real-time Shadow Algorithms and Techniques

Last Updated: 10 / 09 / 2008Shadowing is a key component for convincing, solid-looking rendering. Whether hard or soft, physically correct or perceptually satisfying, NVIDIA has been at the fore

2009-05-14 12:10:00 4334

翻译 Nebula3中的骨骼动画: Animation子系统

 就像CoreAnimation 中提到的, Nebula2动作系统急需一个全新的设计和编码. 在《龙歌》的开发和另一个针对表情动画的研究中, 我们不得不为这个天生不足的系统加入新的特性. 最后系统勉强可以正常工作了, 但从设计的角度来说, 它的可维性变得很差. 因为从事一个商业项目有很多约束(里程碑, 特性和质量), 这通常是惟一的选择, 最好是让一些事情在里程碑结束前可以工作(就算是内部的

2009-05-10 18:49:00 2474

翻译 怎样使用深度纹理

这个问题经常出现, 所以我试着来总结一下ATi和nVidia芯片对于深度纹理的支持情况. 如果发现我说错了nVidia的深度实现, 请告知我 :)ATi和nVidia在硬件上都支持深度纹理, 虽然方法不一样. 深度纹理的创建非常相似:* 曝光的格式- ATi曝光了两个FOURCC 来创建16或24位深度的纹理:#define FOURCC_DF16 ((D3DFORMAT) MAKEFOU

2009-05-04 17:55:00 4415 1

原创 XACT Q&A

1. 怎么做声音间切换时的淡入淡出效果?    (1)对于背景音乐: 把所有背景音乐归为一个分类(catigory), 如Music, 属性设这样:        (2)对于音效: 建立一个RPC, 在把里面的参数设置成AttackTime/ReleaseTime控制Volume的, 然后根据需要绘制一个音量随时间变化的曲线, 再把需要这个效果的sound全attach到这个RPC上就

2009-04-21 20:32:00 2404 2

翻译 Nebula3 SDK (Apr 2009)更新内容

相对于Sep 2008SDK的新内容:工具新命令行工具: archiver3 – 为多平台文件档案生成所做的包装 新命令行工具: n2converter3 – 转换.n2 文件到.n3文件(Nebula 图形对象) 新命令行工具: suiconverter3 –SUI (simple user interface)资源的批处理转换器, 现在只在Wii平台有效 新命令行工具:

2009-04-15 22:17:00 2669 1

翻译 Neubla3中的骨骼动画: CoreAnimation子系统

最早的一个设计是把动作代码分成两个子系统. CoreAnimation作为低层系统, 只为更复杂的高层动作系统提供简单而又高性能的”砖瓦”. 高层Animation子系统以CoreAnimation为基础, 提供了像抽像动作名和实际剪辑(clip)名的映射, 还有一个动作序列发生器(sequencer), 可以方便地处理复杂的动作融合情形. CoreAnimation主要关注于高性能的基础操作

2009-04-10 23:50:00 2523

星际2中复刻DOTA白虎示例

http://blog.csdn.net/xoyojank/article/details/8122886 代码示例

2012-10-29

TotalCommander NPK文件包插件

TotalCommander的NPK文件包插件源码 详细说明见blog相关文章

2010-02-16

View Frustum Culling Tutorial

介绍视锥体裁剪的一篇比较全面的文章 The view frustum is the volume that contains everything that is potentially (there may be occlusions) visible on the screen. This volume is defined according to the camera's settings, and when using a perspective projection takes the shape of a truncated pyramid.

2009-11-19

Introduction to 3D Game Programming with Direct3D 10(2)

http://www.d3dcoder.net/d3d10.aspx

2009-11-16

Introduction to 3D Game Programming with Direct3D 10(1)

http://www.d3dcoder.net/d3d10.aspx

2009-11-16

Nebula3 渲染程序向导

渲染程序向导, 演示RTPlugin的用法

2009-06-30

Nebula3 Console Application Wizard

Nebula3 命令行应用程序向导 有建议的加我MSN交流

2009-06-09

Nebula3命令行应用程序向导

Nebula3的应用程序向导, 咋时先做个命令行的方便初学者学习用 有建议的加我MSN交流

2009-06-08

Programming Vertex, Geometry, and Pixel Shaders

这本书是为那些具有DirectX 8或DirectX 9编程背景, 并且想把他们的知识升级到DirectX 10的人而准备的. 如果这本书出版了的话, 我们希望你购买它. 我们非常欢迎这本书的读者在出版前给我们纠错, 增加或改进部分内容. 每一位参加校对的读者都会在这个前言中被提及, 并且保留到印刷版本中去. 现在的这本书是在两年前DirectX 10还没有正式发布时开始的一个项目. 当时我们闲逛在一些beta论坛上, 开始意识到应该有一本关于DirectX 10的着色器编程的书. 但现实是我们都被各自岗位的工作牵引着(Wolfgang当时在爱丁堡从事于《GTA IV》, 后来是《Midnight Club Los Angeles》, Niko则在各地之间飞来飞去, Ralph忙于《Spellforce 2》的上市和准备《Battleforge》) , 所以整个过程变慢了许多. 我们曾经重新开始过两次, 第二次Jason Zink的加入节省了另外我们几个大量的时间:-) ... 他接管了整个项目的管理工作, 并且与gamedev.net的工作人员进行协调, 发布了大块的文本, 以此推动我们几个最后完成了起初开始的工作. 谢谢Jason!! 最后, 作者们感谢所有帮助完成这本书的人, 感谢Remedy Entertainment提供截图来做封面. 这个即将到来的游戏《Alan Wake》, 看起来非常出色, 我们都盼望着能够早早玩到它. 作者们也要感谢gamedev.net的工作人员为我们的这本书所建设的主页. 特别的感谢要献给我们的家庭, 他们在没有我们陪伴的情况下渡过了两年多中的许多个晚上和周末. 作者们 备注: 新的DirectX 11的修订版计划已经在实行中. 请把注解, 问题和建议发送到[email protected].

2009-02-02

DirectX in C++/CLI

把NativeC++用的DirectX嵌入到.Net做的界面中去 详见 http://blog.csdn.net/xoyojank/archive/2008/11/02/3207685.aspx

2008-11-02

FileExplorer

用CLR写的小程序示例, 文件浏览器 只是为了学习而写的, 很简单

2008-11-02

Awesomium Demo v0.5b

以google chrome浏览器为内核的嵌入式浏览器 可以嵌入3D游戏

2008-10-13

Introduction to 3D Game Programming with DirectX9.0c A Shader Approach

Introduction to 3D Game Programming with DirectX 9.0的Shader版本, 算是翁云兵翻译的那本的II

2008-09-17

LuaInCpp

Lua与C++进行整合

2008-07-25

空空如也

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

TA关注的人

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