麒麟子

~~

导航

<2009年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

统计

常用链接

留言簿(12)

随笔分类

随笔档案

Friends

WebSites

积分与排名

最新随笔

最新评论

阅读排行榜

评论排行榜

#

WOW渲染中的纹理压缩

一直没玩台服,国服也停留在72级。 成都的天气一天天严峻,更是不想动了,于是用NVPerfHUD挂了下WOW,看看它到底啥样。

用NVPerfHUD挂程序需要被挂的程序自身支持,但是网上有一个老兄写的一个NVPerfHUD Any程序可以帮你完成这个功能。对大多数D9的都有效。除非本身做了破解。

给大家这个链接,自己去解决个人问题。

http://www.thecodeway.com/blog/?p=433

 

完美时空的引擎很不错,依然坚挺地用着D8。其实挺想挂来看看的,可惜市面上主流的工具都不支持D8,只有D9以及以后的版本。

 

WOW在CTM的版本中升级了它的渲染引擎,光从水面和火焰就看得出来。 但WOW一向是以负载和流畅度为主,并且WOW本身卖的不是画面。所以若不能帮助提升游戏性的渲染损耗基本上被无视了。 其实吧,个人觉得,做游戏无非就三种了。 一种是追求画面,这一点棒子很有心得。二是追求可玩性,这一点我想WOW应该遥遥领先了吧。 另外一种追求就显得很单纯了---钱。 这一点国内许多游戏做得很好,在此就不列名字了,因为比较多。

 

由于上星期在公司测试新写好的材质和资源管理时,发现ALPHA测试的草丛效果很不理想,于是将草的ALPHA混合开启了,一时间,感觉世界被颠倒了。因为草是按簇画的,排序也只能是按簇排序,当开启了ALPHA混合后,草丛与草丛之间没有太多问题,只是草丛本身出现了像素渲染错误。 不管是Z写和Z测试如何选择开启和关闭。都会有问题。

突然发现草这个东西很特别。

草丛的建模和GPU GEMS 1上的建模方式一样, 三个矩形交叉的方式。

1、它需要用ALPHA混合来实现效果

用ALPHA混合的效果是很不错的。因为可以使边缘柔和。毕竟ALPHA测试会因为图片ALPHA值采样引起的误差导致严重的钜齿。其次就是对美术要求太高了,需要严格控制ALPHA与非ALPHA交界处。

2、但它的行为属性却是一个非透明物体。 

这是因为它必须有深度关系,必需写Z。 因为只有写了Z,才能够正确地与特效等透明物混合,并且也只有写了Z,同一草中的多个面片才能够正常混合。

在忽略其它情况下,我试过了Z测试和Z写的四种组合,也未能达到草丛本身和单棵草都同时达到正确的效果。

 

还是多看看别人怎么做的吧,所以上来就比较关心WOW的植被渲染了。 当看到下面这样的纹理的时候,我笑了。没想到BLZ的美术资源节约到了这样的程度,真是细致入微啊(这不是拍马屁,试问有多少美术资源是这样做的)。 可以看出,若不采用这样的半张,而用整张,那么就是128X128的大小。

左边为原图,右边为ALPHA通道查看图

 

image image

 

而对于树的渲染,则很普通了。设置好纹理,设置好数据和渲染状态,提交绘制即可。

image image

为了看到ALPHA混合的效果,我强忍着把WOW在我7300的显卡上开完了效果。以为会咋的,结果啥也没发生。

WOW的植被的确没有用到ALPHA混合。我失望了。

可能许多人觉得,把多张纹理整合在一张上更好吧。 当然了,这是自然的。 下面就是WOW中经常一起出现的植被的纹理打包图。

大家可以看到,右边的图并没有被裁剪,其原因不言而谕(因为想以非对称营造感觉,并且小件物体纹理本身比较小。)。

image image

 

image

image

发现这草用的是两片,并且大小还不一样。 不知是否真的有此必要。

 

 

我最后要说明的是,这文章就算完了。没有结论,也没有感言。因为那样太俗套!

posted @ 2011-01-23 20:00 麒麟子 阅读(1710) | 评论 (0)编辑 收藏

2D Skinned Mesh(3D的完全翻版 带旋转)

     摘要: 由下面几个文章引发的欲望,让我自己也试着实现了一个基于2D的骨骼动画。



一篇讲述骨骼动画数学运算的文章

http://www.cnblogs.com/neoragex2002/archive/2007/09/13/891945.html



两篇讲述骨骼动画原理和实现的文章 一篇也是用的2D,老外的那篇用的是DX 

http://www.cppblog.com/Leaf/archive/2010/12/31/137818.html



空明流转用C#写的一个,当然也可以下载源码。只是在他的BLOG中,他未解释任何东西。并且我也未曾下载任何源码,不知是否源码中有文档

http://www.cppblog.com/lingjingqiu/archive/2008/06/07/52463.aspx



很不爽的是,许多例子或原理讲的时候没有带旋转。 其实那才是重头戏。 空明流转的貌似有旋转,可  阅读全文

posted @ 2011-01-14 00:24 麒麟子 阅读(2276) | 评论 (2)编辑 收藏

Reflect & Refract (以水渲染为例)

     摘要:

我不是Shader帝,虽然知道Shader怎么写,但一直没仔细研究过。最近蛋疼至极,研究了下RenderMonkey,于是抽着几个看着比较有趣的效果做了一下。



先前的模型贴花http://www.cppblog.com/Leaf/archive/2011/01/07/138093.html

和CUBE MAP http://www.cppblog.com/Leaf/archive/2011/01/07/138106.html

就是此次蛋疼期的产物之一。



还是先围观,上图再说
  阅读全文

posted @ 2011-01-08 22:35 麒麟子 阅读(2692) | 评论 (1)编辑 收藏

CubeMap视线反射方向计算详解

     摘要: 其基本原理很多例子上有讲到。下面给出一些比较合适的链接

http://developer.nvidia.com/object/cube_map_ogl_tutorial.html NVIDIA官网上的 Opengl Cube texture mapping
http://www.zwqxin.com/archives/shaderglsl/review-cube-mapping-shader.html 某位兄弟的个人BLOG。
以上两位都适合OPENGL控。
本文给出一个DX HLSL例子。并解释了反射方向计算的数学模型。希望能给大家一定的帮助。

CUBE映射主要分为两步:
一、在VS中根据法线和观察位置计算反射方向,并且得到观察空间中的反射方向。
反射方向有两种计算方法。
1、在世界坐标系空间中计算,然后再将计算到的反射方向转换到观察空间。 这要求我们转入观察位置。
2、在观察空间中进行计算,此时观察位置已经为0,0,0,于是不需要传入观察位置,并且得到的向量即为所求。本文的代码采用此  阅读全文

posted @ 2011-01-07 13:32 麒麟子 阅读(4109) | 评论 (2)编辑 收藏

使用投影纹理进行模型贴花(Mesh Decals)

     摘要: 一、投影纹理进行模型贴花时,主要是进行三角面剔除,使在渲染贴花时,提交最少的三角面。

二、在贴花PASS中,需要将全局混合开启,并设置相应的SRCBLEND(SRC_ALPHA)和DESTBLEND(DEST_ALPHA)值。括号内为我用的值。

当然,如果你不想让贴花与场景(模型)混合,则可以不开启。 

三、请注意纹理的寻址方式以及纹理边缘的ALPHA情况。 若纹理边缘ALPHA不为0,则可以手工进行裁剪。

四、本文仅是采用了固定的投影方向和SHADER内部定义变量的方式来进行贴花渲染。 并且,并未进行模型三角面剔除。所以若要使用,则需要注意第一个问题。

五、本文灵感来源于此贴:http://forums.create.msdn.com/forums/p/34339/198791.aspx

六、支持邮件交流:BoYueGame#Gmail#com
  阅读全文

posted @ 2011-01-07 00:37 麒麟子 阅读(5160) | 评论 (3)编辑 收藏

仅列出标题
共38页: First 8 9 10 11 12 13 14 15 16 Last