zero's blog

致力于网络安全

 
嘻嘻,我又来了,这次说什么呢。

对我个人而言,现在感觉linux开源游戏发展的速度已经说是突飞猛进了。

希望一切更好,freegamer 有了free media project 他们在寻找共同的资源,建立资源库,其实这是被艺术家反对的,如此进行很可能的结果是,艺术家和开源软件维护者一样要用长时间维护一件作品,利润减少了---没有暴利。

引擎是更加适合卖钱的。开源游戏社区还有突出的问题在于引擎,其实前几年3D开源引擎很少很不堪使用,今年才算是进入beta---仍然只有少数有利用价值。
能发给我一份吗?谢谢啦!xl_happy1314@163.com
嗯,有点见地,虽然比我晚了点。

但是实际上有些情况并不那么简单。

可以来Ubuntu中文找我,游戏版置顶都是我发的。
re: 对WoW Shader文件的分析 ZERO 2006-05-30 17:00
我后来看了一下WOW地形渲染bls文件,之前都是用HLSL,汇编形式的看的比较吃力,不过还是看明白了。

我认为你看的不够仔细,alpha图的x,y,z通道分别对应第1,2,3层纹理的alpha权重(如你所说,和叠加顺序有关),w通道应该是阴影值(1为阴影,0为正常),而且能看出最终屏蔽了阴影中的高光,保留了70%的diffuse亮度。
re: 对WoW Shader文件的分析 ZERO 2006-05-23 14:05
不好意思我这里说的都是d3d的东西,OGL没有用过不过应该也有类似的概念吧
re: 对WoW Shader文件的分析 ZERO 2006-05-23 14:04
我之前已经实现了。
方法是渲染每层细节纹理时都提供两个texturestage给显卡:stage0是alpha图(也就是只用到该图的alpha通道,如果用可编程管线实际上最多可以把4层alpha塞到一个alpha图里),对于这一层,COLOR取CURRENT,ALPHA取TEXTURE;stage1是纹理本身,COLOR取TEXTURE,ALPHA取CURRENT。之后在帧缓存里把这一层纹理和前面的结果混合:SRCBLEND设为SRCALPHA,DESTBLEND设为INVSRCALPHA。也就是说对于每一层纹理都是:Res_n = Cur_n-1 * ( 1 - alpha_n ) + color_n * alpha_n
re: 对WoW Shader文件的分析 ZERO 2006-05-22 15:48
这只是我初步的考虑,还没有实践过。我会把两种方案都试一下,哪种效率高应该很容易判断。
re: 对WoW Shader文件的分析 ZERO 2006-05-22 15:43
对,DP就是指d3d的DrawPrimitive(DrawIndexedPrimitive)。
按纹理不按chunk渲染,具体说就是对于每种纹理,都把用到该纹理的chunk的顶点都拼成一个大vertex buffer(或index buffer),用一张alpha图(实际上只需要一个通道)来控制该层纹理在每个顶点位置的混合权重。这样对每层纹理渲染一次就得到最终的结果了。
re: 对WoW Shader文件的分析 ZERO 2006-05-20 16:21
我的意思是,如果按纹理来渲染,就是说对于当前每种可见的纹理都渲染一次,每次渲染都提供一张该纹理对应的alpha图(第一层不需要),当然这样就要求运行时把每种纹理对应的mesh组织好。这样渲染的优点是DP调用少,多少种纹理就多少次DP调用,而且不用频繁切换纹理;缺点是多层纹理重叠的象素实际上被渲染了多次,而且大部分顶点也都要被处理多次……说的我自己都没底气了,到底密集细碎的DP调用能多大程度影响效率这个我也没有经验,回头试一试。

WOW基本是没有LOD的(最多可以有两级好象),如果使用LOD的话,那么最坏的情况下对于远处的一个chunk可能一个DP调用只绘制了两个三角形,想起来就相当不爽
re: 对WoW Shader文件的分析 ZERO 2006-05-20 16:04
如果针对不同的纹理层数设计不同的pass,那就是说WOW的地形确实是按chunk来渲染的?那DP调用会不会太多了?而且要不停的切换纹理……

导航

统计

常用链接

留言簿(1)

随笔档案

搜索

最新评论