??xml version="1.0" encoding="utf-8" standalone="yes"?>久久亚洲AV无码精品色午夜,99久久婷婷国产综合亚洲,久久精品国产亚洲αv忘忧草http://www.shnenglu.com/flashboy/category/8347.html------3D游戏研发zh-cnFri, 11 Dec 2009 02:35:34 GMTFri, 11 Dec 2009 02:35:34 GMT60WOW地ŞShader分析(?http://www.shnenglu.com/flashboy/archive/2009/12/11/102960.htmlRedLightRedLightFri, 11 Dec 2009 02:04:00 GMThttp://www.shnenglu.com/flashboy/archive/2009/12/11/102960.htmlhttp://www.shnenglu.com/flashboy/comments/102960.htmlhttp://www.shnenglu.com/flashboy/archive/2009/12/11/102960.html#Feedback0http://www.shnenglu.com/flashboy/comments/commentRss/102960.htmlhttp://www.shnenglu.com/flashboy/services/trackbacks/102960.htmlSPXG // 标识
// 用到5张图?
{
   blendTexture  = 0
   layer0Texture = 1
   layer1Texture = 2
   layer2Texture = 3
   layer3Texture = 4
}
!!ARBfp1.0
// 定义帔R:
PARAM c[1] = { { 1, 0.30000001, 0.69999999 } };
// 声明3个寄存器:
TEMP R0;
TEMP R1;
TEMP R2;
// 开始؜?
// 一.W?层和W?层用第4张图的x通道作ؓalphaq行混合:
TEX R1, fragment.texcoord[0], texture[0], 2D;
TEX R0, fragment.texcoord[1], texture[1], 2D;
ADD R2, R0, -R1;
// r2=Tex1-Tex0
TEX R0, fragment.texcoord[4], texture[4], 2D;
MAD R2, R0.x, R2, R1;
// r2 = Tex4.x*r2+Tex0
// 说明:
// 其中的Tex4.x是对应第1层alpha? 下面把Tex4.x当a1?br>// ?r2 = a1 * (Tex1-Tex0) + Tex0
// 转换一下即? Tex0*(1-a1)+a1*Tex1, 呵呵,看到了吧,q就是؜合公?
// ?W?层和前面l果使用W?张图的y通道作ؓalphaq行混合:
TEX R1, fragment.texcoord[2], texture[2], 2D;
ADD R1, R1, -R2;
// r1=Tex2-r2
MAD R2, R0.y, R1, R2;
// r2 = Tex4.y*r1+r2, ?a2*r1+r2 = a2*(Tex2-r2)+r2, 即r2*(1-a2)+Tex2*a2, 其中r2x上次0?层؜合后的结?br>// ?W?层和前面l果使用W?张图的z通道作ؓalphaq行混合:
TEX R1, fragment.texcoord[3], texture[3], 2D;
ADD R1, R1, -R2;
// r1=Tex3-r2
MAD R1, R0.z, R1, R2;
// r1=a3*r1+r2 , ?a3*r1+r2 = a3*(Tex3-r2)+r2, 即r2*(1-a3)+Tex3*a3
// q样r1׃存了最l的混合l果
// ?让阴影地表光泽系Cؓ0(Tex4.w即a通道代表地Ş的阴?0为阴?1为正?而每层脓图中的a通道是光泽通道,所以R1.w保存的是最l的光泽通道?:
MUL R0.x, R1.w, R0.w;
// r0.x = r1.w(光泽)*Tex4.w(阴媄? 是阴影则=0,否则=1)
// 计算削减pL?
MAD R0.w, R0, c[0].y, c[0].z; // r0乘上0.3(削减?0Q?再加上一个常?.69999999
// 反射高光 = secondary_color(反射?*光泽:
MUL R0.xyz, R0.x, fragment.color.secondary;
// 贴图最lcolor = 最l脓图؜出的color*削减pL:
MUL R1.xyz, R1, R0.w;
// 贴图最lcolor * primary_color(光照色或是顶点色) + 反射高光:
MAD result.color.xyz, R1, fragment.color.primary, R0;
// alpha:
MOV result.color.w, c[0].x;
END
  
  

本文来自CSDN博客Q{载请标明出处Q?a >http://blog.csdn.net/flipcode/archive/2008/03/03/2143452.aspx



RedLight 2009-12-11 10:04 发表评论
]]>
wow2.3版视频设|详?/title><link>http://www.shnenglu.com/flashboy/archive/2008/12/31/70882.html</link><dc:creator>RedLight</dc:creator><author>RedLight</author><pubDate>Wed, 31 Dec 2008 14:42:00 GMT</pubDate><guid>http://www.shnenglu.com/flashboy/archive/2008/12/31/70882.html</guid><wfw:comment>http://www.shnenglu.com/flashboy/comments/70882.html</wfw:comment><comments>http://www.shnenglu.com/flashboy/archive/2008/12/31/70882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/flashboy/comments/commentRss/70882.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/flashboy/services/trackbacks/70882.html</trackback:ping><description><![CDATA[<span id="ff5r5pv" class=Apple-style-span style="WORD-SPACING: 0px; FONT: 12px Verdana; TEXT-TRANSFORM: none; COLOR: rgb(51,51,51); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; TEXT-ALIGN: left; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0">  自从WOW更新2.0以来<br>  BLZ对WOW 囑Ş渲染能力作了一ơ较大的buff<br>  q些BUFF 在外域进一步展现出?更复杂的地貌 模型<br>  更细ȝ材质表现 以及l节上更复杂的光照反效?br>  q得不用户大?我的机器怎么变卡了~~~ 之类?br>  但是考虑到TBC上线的背景现在是2007qؓ什么不让硬仉速发展的今天<br>    让我们更多的享受到技术进步带来的成果呢~? (当然 q是要付ZL )<br>  WOW对图形卡的要?可谓可大 可小<br>  其中的关?是WOW向用户开攄 讄界面<br>  也就是我们今天这里要讨论的主?'视频讄'选单<br>  PC的硬件搭配是如此多元化显然没有一个标准的讄可以适用于所有的玩家<br>  那么今天我希望用单的语言向大家描qC下这个界面中所有的选项<br>  其意味着什?你需要付Z?你能得到什?br>  从而摸索出最合适自q讄.<br>  下面 是经q我markq的 讄界面<br>  在一些设|上 我用了不同的颜色方块标记 来区?br>  原则?把主选项 性能取向上分?c?br>  U色标记 表示q将较重的依赖你的图形卡渲染能力<br>  黄色标记 表示q需要你的系l综合支持能?br>  l色标记 表示q属于轻量负蝲<a style="COLOR: rgb(63,104,166); TEXT-DECORATION: none" name=entrymore></a><br><br><br><a style="COLOR: rgb(63,104,166); TEXT-DECORATION: none" href="http://www.shnenglu.com/flashboy/admin/attachment.php?fid=6" target=_blank></a><img height=639 alt="" src="http://blog.wkings.net/attachment/200802/1203848625_3801f3cc.jpg" width=517 border=0><br><br><br><strong>  首先是显C栏<br>  分L?/strong><br>  q个也就是通常说的解析?1024x768 个规格是通常17英寸CRT的常用分辨率<br>  它意味着在画面上你的囑Ş卡需要绘制宽?024位个像素高度?68个像素的囄<br>  用前?乘以 后?可以得出你的囑Ş卡每帧需要处理多个像素<br>  像素是计机囑Ş的最基本单位,所有看到的囑փ都由q样叫做'像素'的色Ҏ照程序控制排?br>  q呈现出具体囑փ.<br>  那么很显然这个数字越大每帧包含的像素多那么你的囑Ş卡就需要更多的旉d成这些渲染动?br>  那么 每秒内渲染?FramePreSecond 也就是FPS 自然更?br>  q个数字 是决定你囑Ş卡工作量的最基本参数<br>  一?7英寸CRT昄?的标准分辨率 1024x768 每 78万个像素<br>  而一?2英寸宽屏LCD昄 标准分L率ؓ1680x1050 每 176万个像素<br>  那么后者维持同样FPS的条件下需要前?.25倍的性能才能够实?br>  所以必要了解自己的需要用到的分辨率不要盲从于WOWҎ卡要求很低的说法<br>  推荐分L??Ҏ自n昄讑֤军_<br><br><strong>  多重采样</strong><br>  其实在这个设|??色深/z~存_ֺ/多重采样的؜合选项<br>  色深׃wow目前只仅使用?4bit高色?br>  除非是古董别GeForce2 mx400(2000q的东西)U别或者更早以外不需要考虑16位色<br>  那样只会降低色阶q渡的流畅?无意义的损失画面表现<br>  Z-~存_ֺ 涉及到光栅渲染知识的q多l节 q里化说一?br>  低精度的Z~存 会让囑Ş卡判断几何体之间的空间遮蔽关pd得更模糊 ,几何体连接的地方会出现更多的锯状失真这个随着距离视点远q个效应严?br>  通常24bit Z 也是无损?所以不需要过多考虑q个<br>  24位色?4位Z~存 是基本选项 无需更改<br><br><br><br><strong>接下来是重头戏采h?/strong><br>  WOW支持的是一U叫做多重采L全屏q反锯渲染技术也是常说的MSAA UAA<br>  ׃3D渲染所有的物体都是由几何结构构成从3D几何数据映射?D囑փ的过E中不可能提供无ILl节来满xl图像显C的解析度通常有三角Ş构成的物体最后渲染出来一条斜U往往最后得到的是由一条又一条细的U段阶梯状排列构成的一条线而这个阶梯状是我们qx说的锯事实上很形象<br>  而反锯技?是Z可能遮掩这个现象的技?br>  q个技术简单的描述是Ҏ成这个斜U的U段及其附近的像素周围几个点的色彩进行采?br>  这个像素的色彩信息D行^均运然后得Z周围色彩q渡q似的色彩去填充那样H兀的锯齿状<br>  最后看到的斜线一眼看q去变得顺滑流?当然实际法上比q个复杂得多只是单的描述<br>  采样ơ数 多最后得到的l果顺滑过渡越畅锯的可察觉E度p?br>  开启多重采?可以 显著的改善图像质量画面更圆润更自然但是要n?p付代?br>  1x =不开启多重采样锯??x -8x Ҏ具体囑Ş卡特性都会在q个选单中出?br>  采样ơ数高囑Ş卡就需要做更多的动作消耗更多的资源.同时多重采样随着采样ơ数的提?br>  也需要更多的昑֭I间来作为buffer<br>  如果在高分L率下 开启多重采?MSAA) 那么对于昑֍本n渲染线或者渲染后端的数量以及昑֭定w昑֭带宽都会有很高的要求<br>  对于低端产品 基本没有能力在开启多重采L情况下流畅运?9550/6600le/7100/7300gs/8400gs<br>  低端产品 部描qC<br>  对于中端产品 通常只能适应1280x1024 /1440x900 4ơ采L能力 7300gt/7600gt/8600/1650gt/2600pro<br>  要求 8线/ROP渲染后端 128bit昑֭位宽具备128M以上高速显?br>  对于中高端?通常能承?680x1050 4ơ采?1950gt/7900pd (6800/x800 16版?<br>  需?2-16渲染线/ROP渲染后端 128bit昑֭位宽具备256M以上高速显?br>  对于高端产品 能够承受1920x1200 4x/8x 采样<br>  基本需?6甚至更多?渲染后端 需要至?56bit 昑֭位宽 512M以上高速显?br><br>  基本?分L率结合多重采样内的设|基本上是硬指标没有多少灉|'优化'的余?br><br>  h?垂直同步h/三倍缓?br>  q个取决于显C备的工作参数<br>  其意义是昄末端讑֤ 每秒更新囑փ的次?br>  而实际上囑Ş卡输出的FPS往往和显C备不一?br>  其中׃造成一个时差有一定几率你会在屏幕中发现破裂的帧这个混合着上一帧和下一帧的内容<br>  如果在高速移动中每的内定w在不断变化那么这个破裂就会比较明?br>  通常q个在低分L率不是很大的时候不明显Q对于高分L率的用户l常可以看到q样的撕裂现?br>  当然 q是瞬间的图像?br>  而垂直同步刷新则是解册个问题的Ҏ每渲染完的必须和显C备同步输样就避免了破?br>  但是带来了新的问题就?br>  每秒输出的最大?=当前h率对于喜Ƣ看数字的h可能会不爽但是可以说更高的数字没有意?br>  另外每渲染的内定w不同所需要的周期也不同额外的{待动作意味着必须牺牲一定的性能?br>  而三倍缓冲则是允许图形卡预先渲染更多的作ؓ准备输出的内Ҏ~解q个问题的方?br>  所?当你需要开启垂直同步刷新的时?请务必钩上三倍缓册Ӏ?br>  关闭垂直同步h 自然是最大化的获得FPS<br><br>  <strong>H口模式/最大化</strong><br>  H口模式 是许多玩家ؓ了游戏中更便L切换到qq |页常开启的选项<br>  但是 我不得不?q个选项WINXP以及更早的操作系l下 慎用<br>  通常q个模式比全屏模式有更多的不E_因素Q尤其是在开启多重采L情况下经怼产生各种各样的问?br>  ATi 表现Z是激zȝ?FPS剧烈下降 NV则有出现使用输入法的时候前后台~冲h D画面错误<br>  另外q有很多不是很典型的渲染错误案例<br>  q个原因基本上是Windowsq_留下的历史遗留问题这个问题在Vista下得C完美的解决细节就不多陈述?br><br>  q里需要注意的是窗口模式中如果钩上最大化{于以你的桌面分辨率为准 渲染此窗?br>  那么部分机器较差的朋友本来想通过降低分L率提高FPS的时候又钩上最大化的话那么没有意?br><br>  <strong>g指针/修正延迟</strong><br>  g指针 意思是g光标加?也就是游戏中的鼠标光?br>  Z避免FPSq低的时候光标和画面一h染导致鼠标移动不畅造成影响操作的存?br>  另外 游戏中忽然丢失鼠标可以尝试开/光这个项目来解决Q这属于不确定因素)<br>  修正延迟是修正视觉与|络信号传输的差距模p猜的动作q个基本钩上<br>  基本q两个不影响性能 所以不做标?br><br><br><br><strong>世界外观</strong><br>  q是一个综合选单<br>  如其所表述 q里的设|?关系到对 WOW世界环境的表现力<br><br>  q景昄<br>  q个讄 直接影响你的pȝ 渲染场景的最大范?br>  包括单位q入多少范围开始被渲染 {?br>  q个范围大 你的pȝ渲染的东西越?br>  最大远景对于战斗中更早的发现目标和farm中更q的发现自己的目标都有很大好?br>  但是q个“蛋糕”可不好啃<br>  q里对于CPU 内存 昑֍ 甚至盘性能 都有一定要?br>  属于l合型负?br>  通常q_比较强劲的系l才会拉到最?一?br>  推荐P4pd2ghz以下 以及1.5Ghz左右的K7pȝ 512M内存的系l通常开?br>  P4 2Ghz 以上 K7 1.5ghz以上 底端A64以及底端core2 1G内存的系l开中等<br>  P43Ghz 以及中高端A64/CORE q_ 1.5G内存以上的系l开高无?br>  Vistapȝ则需要更高的内存<br><br>  <strong>地Şl节</strong><br>  q个牉|到WOW 囑Ş引擎的地形渲染系l?br>  开低可以降低世界模型的几何复杂度一定程度上释放CPU的几何计压?br>  对于底端机器 开?br>  L机器大可开?br>  基本上这个对性能影响很有?除非低端q_ 能省点算?br><br>  <strong>法术l节</strong><br>  q是一个图?pȝq_性能們֐的综合选项<br>  高法书细?对于法的视觉特征表现得更完?raid时候通常Z能从动作和魔法效果上更准知道目标的行ؓ通常会徏议开?br>  本来单的法效果 赏析悦目又不是很复杂自然是开启好也不会消耗过多的资源?br>  但是在单位众多的情况下大量单位释N法的时候对于整体系l的压力׃大大提高<br>  单的例子 一法p?aoe 下雨 Q辅助集体buff 以及战斗混ؕ的场面这个选项开高将l你的系l带来不的负担?br>  一个很隑֏舍的选项 在系l能够承受的范围?量开启吧?br><br>  <strong>环境l节</strong><br>  q个会媄响到你对环境渲染的完整度<br>  拿泰xx林来说 开启这个选项<br>  你在视觉范围内能够看到更多的植物模型灌木以及不媄响移动的石块等几何物体<br>  基本?对于Lq_ 不会有太大压?br>  q求l节的h开?自然能更好的体验游戏中的气氛<br>  q个选项会小q度提高CPU/昑֍的压?br>  q两斚w比较薄弱的^?可以考虑关闭<br><br>  地表景观密度/地表景观范围<br>  q是一个纯_的囑Ş卡倚重的选项<br>  透过VertexShader的支?在地表绘制出更复杂的地貌<br>  比如草皮 和一些细物件的密集E度 以及 在多距d被渲?br>  出某个距离则被忽略它和上面最大的区别是这些东西完全是GPU完成的所以数量基数更?br><br>  泰罗卡森林以及xx沼泽{很多地斚w过q样的技术来表现地貌特色<br>  对于环境l节的表?q?个选项影响比较大追求品质的话推荐开启毕竟既然表现森林那么看h它最好就要像林<br>  基本?WOWq没有实现过于复杂的地貌效果通常中高端GPU完全可以开满这个选项<br>  GPUE差则可以适当降低选项 q个选项 修改后立d以看到区?br>  可以自己试对fps影响如果你的GPU_那么你将看不到FPS严重衰减<br>  基本上能够满?0+fps 让我们更多的享受质量吧毕竟这个不是射L?br>  q个基本上是依赖GPU的高U可~程部分 Shader性能<br>  对于后期的中D?7600gt/8600pd/2600pd有非怸错的表现完全可以开?br>  下面是效果图<br><img height=343 alt="" src="http://blog.wkings.net/attachment/200802/1203848625_93801560.jpg" width=550 border=0><span id="r5vn3rb" class=Apple-converted-space> </span><br><br><br>降低密度以后 完全没有植被的感?br><img height=343 alt="" src="http://blog.wkings.net/attachment/200802/1203848625_7615799b.jpg" width=550 border=0><br><br><br>  <strong>降低景观范围</strong><br>  q个 E微?比关密度?br>  但是 能开满当然最好了不然你能很明昄到植被是忽然y出来的<br>  全开满都有这个效?关了更明显?Q没办法 减少q算量)<br><img height=343 alt="" src="http://blog.wkings.net/attachment/200802/1203848625_9127d009.jpg" width=550 border=0><br><br>  <strong>材质分L?/strong><br>  q个是U理材质质量 U理是什么?啊。?br>  q个世界物体的外表特征等都是靠纹理脓图来完成游戏中h物看h是石?是木头都是靠U理<br>  那么U理分L率媄响什?br>  很简?开高纹理分辨率 你将看到更细ȝ物体特质<br>  比如你装备上的纹?比如C的石板\ 甚至你的脸蛋<br>  高纹理材?需要更多的占据pȝ内存 和显?br>  wow的材质本wƈ不算复杂 但是CTBC U理l腻E度又进一步提?br>  不过对于昑֍来说?4M昑֭的品基本都可以开高不会明昑֪响性能<br>  但是 个别复杂场景除外~<br>  现阶D?基本推荐?12M内存 和?9550U别的图形卡开?br>  基本昑֍压力很小很小<br>  玩WOW 不满两个条g的机器很了<br><br>  <strong>材质qo</strong><br>  通常U理qoҎ L是双UŞqo 和三U性过?br>  曄的老版本中 有独立的三线性过滤得选项<br>  q种qo技?直接影响U理q近之间q渡得自然程?br>  ׃三线性过滤从1998q开始有g支持到现在已l有了这么多q的历史<br>  所?.3三U性过滤提升到了系l预定过滤方式基本上三线性过滤早无损的对于拥有4个TMUU理映射单元的GPU来说基本不存在问题现即是最底端的品也不少?个TMU<br>  ?.3的材质过?实际上是 一个高U过?“各项异性过?#8221;的选单也就是常说的AF<br>  AF技术可以非常明昄改善U理质量但是需要付出的是数倍以及数十倍三U性过滤的采样ơ数<br>  q个选项 关闭=使用老式三线性过?而拉?应该=8xAF(估计)<br>  q个技术的存在 对于囑Ş卡的TMU单元来说 有新的要?br>  对于大部?线4TMU 的图形卡 q个选项会造成不小的性能下降<br>  对于8线8TMU的?通常开一半会是不错的选择<br>  部分高频?TMU产品可以考虑开?br>  对于TMU比较多的产品从中得益会比较大具体参数可以参考自׃用的囑Ş卡的技术指?br>  另外 q个受到分L率牵q,高分辨率的情况下 TMU的压力会加大<br><br>  基本上能开启尽量开启和关闭会有很大不同当然马虎的h可能不会注意U理清晰度的问题<br><br>  <strong>天气强度</strong><br>  用来开启天气的表现<br>  需要图形卡性能作ؓ支持 囑Ş卡趋?但是压力q不大<br>  基本上中端品都有能力开?q里׃q多陈述<br><br>  <strong>Ҏ效果</strong><br>  里面3个成?都是吃GPU的重?br>  底端产品关闭可以获得更好的性能<br><br>  q里基本上是WOW PixelShader 高Ҏ应用的主要体现<br>  PixelShader 数量较多或者是构架先进的品能够轻松胜任这个工?br>  毕竟wow Shader主要是基于DX8 的SM1.X<br>  中高端?Ҏ分L率来调整 分L率直接媄响开启后的压?br><br><br><br><strong>高光效果/全屏q范光效?/strong><br>  它们通常是ƈ存的<br>  高光效果以前的版本就存在 但是CTBC以后作了q一步强?br>  TBC之后 许多金属质感的装?会有光的折射 表现出其质感<br>  能量C也大量出现折和高光效果q都?.xx版本中不曑֭在的<br>  游戏中基本沙_?地表对光的反也表现得更加突?br>  同时 也通过光学特制 表现出物体的凹凸?BUMP技术也好是pixelshader的普遍应?br>  q里 是TBC囑Ş卡要求提高的主要原因<br>  效果图~~如下<br><img height=343 alt="" src="http://blog.wkings.net/attachment/200802/1203848692_5495fe5d.jpg" width=550 border=0><br><br><br>  光的折射<br>  弥O?br>  比v木纳的顶点光照来?像素光照更具备细L和表现?br><br><br><br><img height=343 alt="" src="http://blog.wkings.net/attachment/200802/1203848692_71758cda.jpg" width=550 border=0>  <br><strong><br>M效果</strong><br>  M?泛白?q个也是属于高pixelShader渲染的杰?br>  事实上它本质上和上面没有太多不同 只是渲染逻辑不同<br>  g要求也类?我就不过于篏赘了<br>  不过q个效果可能不单U只是死亡时候有用可能把cM渲染都归一cd<br><br>  基本上这3个项目本质上没有不同<br><br>  多数情况?通常分L?024x768 1280x1024 1440x900 q样分L?br>  中端囑Ş卡乃至于中底端图形卡都有能力开启这3个选项Ҏ能要求q不高<br>  基本7300gt 6600gtU别 完全可以胜Q 毕竟是DX8的东?br>  分L率高?是另外的问题<br><br>  <strong>其他<br>  角色阴媄</strong><br>  是否渲染玩家单位阴媄的操?基本上属于简单的shadow map<br>  WOW中没有用到复杂的阴媄渲染技术基本上q是quake3Q?999Q年代的东西<br>  q个目q不会消耗多图形卡资源 属于轻量负蝲<br>  而且开启有一个好处在单位q入你渲染范围的时候往往阴媄比模型先出现Q?br>  HOHO...<br>  <strong>世界层次l节</strong><br>  q是一套最早在“升刚”的一个FPS游戏中成熟利用的技?br>  对不同距ȝ的单位用不同细节的模型C一定距d用简单的模型来渲染单位来减少渲染压力<br>  开启这个以?可以一定程度降低CPU/囑Ş卡的压力<br>  正如其描q所?br>  底端q_ 中端打开 基本不媄响效果。高端^台就随意?br></span> <img src ="http://www.shnenglu.com/flashboy/aggbug/70882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/flashboy/" target="_blank">RedLight</a> 2008-12-31 22:42 <a href="http://www.shnenglu.com/flashboy/archive/2008/12/31/70882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WOW的地形渲?(?http://www.shnenglu.com/flashboy/archive/2008/12/24/70265.htmlRedLightRedLightWed, 24 Dec 2008 12:03:00 GMThttp://www.shnenglu.com/flashboy/archive/2008/12/24/70265.htmlhttp://www.shnenglu.com/flashboy/comments/70265.htmlhttp://www.shnenglu.com/flashboy/archive/2008/12/24/70265.html#Feedback0http://www.shnenglu.com/flashboy/comments/commentRss/70265.htmlhttp://www.shnenglu.com/flashboy/services/trackbacks/70265.html
    兽世界的地形渲染,基本上有三种渲染路径Q固定渲染管U(其中是不是又分几U就不清楚了Q;shaderQ带高光Q;shaderQ不带高光)
  用到shader的渲染\径又分别针对1层,2层,3层,4层(最多允许每个chunk使用4层纹理)专门写了shader代码?br>  用MyWarCraftStudio打开WOW的misc.mpq包,shader \ pixel \ 目录下以"terrain"打头的bls文g是地Ş渲染使用的shaderQ带?_s"后缀的是带高光的渲染Q否则就是不带高光的?br>  我仔l看了其中的terrain4_s.blsQ用UltraEdit之类的工具可以直接当成文本文件打开Q。是汇编形式的ps代码Q由于之前俺只用qc形式的HLSL所以看h有点吃力Q好在还是看明白了?br>  texture0~3是待؜合的4层纹理,每层U理的a通道是该层纹理对应的高光通道Qtexture4是一张用来控制؜合权重的alphaU理。texture4的r,g,b通道分别对应texture1~3的alpha|而texture4.a则代表地形的阴媄Q?为阴影,1为正常?br>  混合的公式ؓres_n = res_n-1 * ( 1 - alpha_n ) + texture_n * alpha_n。其中n代表Wn层纹理。res_n代表Wn层؜合后的结果?br>  从代码可以看出,最l؜合结果的a通道Q高光通道Q被乘以阴媄|也就是说阴媄中没有高光。同Ӟ阴媄中的diffuse光照被削减了30Q?br>  1Q?Q?层纹理؜合,以及不带高光的情冉|必也没有什么特别之处,也不ȝ看了?br>  值得一提的是我原来一直以为WOW的地形渲染只用了ps_1_1Q但从这个shader看用?张纹理,出了ps_1_1?个纹理采L限制Q所以至用了ps_1_4Q允?个纹理采P。??层纹理؜合的情况使用ps_1_1够了。我不知道在渲染旉J切换ps版本会不会收到性能上的惩罚Q但有些昑֍Q比如NV?200Q同L代码在ps_1_4上运行要比在ps_1_1上运行慢很多?br>  至于固定渲染线的渲染\径,׃不可能看C码,具体如何实现多层U理混合无法揣测Q集合了各层U理混合pL的alpha囑ֺ该不能直接用于渲染,因ؓ固定渲染线g只能用a通道来控制؜合系敎ͼ可能需要将q张U理拆成4张才行。。?/span>

RedLight 2008-12-24 20:03 发表评论
]]>
我也来分析魔兽世?场景l织(?http://www.shnenglu.com/flashboy/archive/2008/12/23/70151.htmlRedLightRedLightTue, 23 Dec 2008 05:46:00 GMThttp://www.shnenglu.com/flashboy/archive/2008/12/23/70151.htmlhttp://www.shnenglu.com/flashboy/comments/70151.htmlhttp://www.shnenglu.com/flashboy/archive/2008/12/23/70151.html#Feedback0http://www.shnenglu.com/flashboy/comments/commentRss/70151.htmlhttp://www.shnenglu.com/flashboy/services/trackbacks/70151.html没有办法WOW太经典,当自q到问题的时候再回头研究wow发现wow然没有问题Q暴雪的游戏制作l验让wow一开始就设计的如此讲IӞ不得不感叹国内游戏同世界设计斚w的差异?

׃没有wow的源代码Q所有的分析x都来自与wowmapviewq个开源的wow地图察看器,wowmapview的代码写的很凌ؕQ但很容易理解,好了Q我们开始吧QGogo

wow场景是由一pdMapTilel成Q这些MapTile的大是1600/3 ?533.33mQ而每个MapTile又是?16x16 个MapChunkl成Q由此可以计出每个MapChunk?3.33mQ如图:

在wow中,一个MapTile是有׃个adt文g描述?

比如World\Maps\AhnQiraj\AhnQiraj_29_48.adt文g描q在xzQ?9Q?8Q位|的MapTileQ每个MapTile都包含了该tile内用的贴图Q引用外部)、模型(引用外部Q、wmoQMapObjectQ、模型实例、wmo实例Q所谓模型实例就是相同模型在tile内不同摆放位|、大、角度的说明信息Q在wow引擎中的术语是doodadQ即可以随意摆放的小东西Qwmo实例cM。ؓ了节省文件尺寸,模式实例、wmo实例是通过index模型、wmo的方式保存的Q同点索引cM?

每个MapChunk又由9x9Q?x8个地形顶炚w度,法线Q若q脓囑ֱQ一般ؓ4层)Q水面,Alpha贴图层(用于控制地表贴图的؜合比例,一般ؓ3张,寸64x64Q和一层shadow mapQ?4x64Q组成。如图,由此可推出wow的地面精度≈2m

Wow的地表是非常_的,q与它用了alpha贴图控制地表混合比例有关Q而一般的引擎则把地表贴图的؜合比例放在地表顶点中记录Q这样地表的_ֺ同点密度保持一致?

Wow使用固定方向光照Q所以可以用shadow map来模拟树、房子等在地表透射的阴影,shadow map的尺怹?4x64Q可见阴q_ֺ也是非常高的?

q样的地形顶点分布是wow在最高地表精度下的高度顶点布局Q当相机q离MapChunkӞq个高度点的布局可能是这P

此时Q地表的_ֺ?m?/p>

Wow的地表是支持挖洞的,有意思的是ؓ了节省空_其标C挖z的信息数据是一个intQ通过使用位运来得到一?x4_ֺ的挖z信息,我们不放把这U?x4的洞叫做holeChunkQ每个holeChunk支持4U状态来标示其内?x2的洞分布状况Q由此可见wow在数据结构方面已l发挥到了极_对于需要精密表现的地表好不吝啬的?4x64混合贴图Q而对于holeq种只需要粗略(一半还不用的东西Q的记录一个int?/p>

RedLight 2008-12-23 13:46 发表评论
]]>
˾ҹվھƷþþþþþþ | AVĻþר| һþaþþƷvrۺ| avھƷþþþӰԺ | ޹˾þۺ| þAV뾫Ʒɫҹ | þþþҹҹҹƷ| RE99þþƷ66| ޾þþһ| þþƷAɫ| | Ʒ˾þþþӰԺ | þþƷ˳| þ99Ʒþ99С˵| ˾Ʒþ| Ʒþþ| þþƷav鶹ͼƬ| ŷպƷþ| һɫþۺ޾Ʒ| ޹ƷAVþۺӰԺ | þݺҹҹ2020| þav| 99þ777ɫ| þAVۺϺɫ| þþþþþþƷɫ| þ99ƷþþþþҰ| AVӰƬþþþþ| ޹Ʒþþþվ| þۺ97ɫһһ | 99þˬ޾ƷŮ| Ʒξþþþ99վ| ޾ƷŮþþ| ھƷþۺ88| ˾þۺӰԺ| ľƷþþþ| þþþþ˸߳ӰԺ| 99þþƷѿһ| þþƷձҰ| AŮAVۺϾþþ| ޹Ʒþ| ޹СƵƷþþ |