游戏开发论坛

 找回密码
 立即注册
搜索
楼主: dxwood

WOW中的影子的实现讨论

[复制链接]

11

主题

188

帖子

194

积分

注册会员

Rank: 2

积分
194
发表于 2006-8-30 22:58:00 | 显示全部楼层

Re:WOW中的影子的实现讨论

楼主。能不能 帖出一张图来看看 效果 是怎么样的啊。。
谢谢了

0

主题

21

帖子

27

积分

注册会员

Rank: 2

积分
27
QQ
发表于 2006-8-31 10:34:00 | 显示全部楼层

Re:WOW中的影子的实现讨论

厉害哦大家

13

主题

74

帖子

74

积分

注册会员

Rank: 2

积分
74
 楼主| 发表于 2006-8-31 10:43:00 | 显示全部楼层

Re:WOW中的影子的实现讨论

To tarkey
     先谢谢你的提示。这种方法总结起来说就是根据场景中的物件(包括地表)构建阴影Mesh,然后渲染阴影。除了Z-Fighting的问题之外(这个相对更容易解决),这种方法最复杂的应该是构建阴影Mesh,如果地表是规则网格的话,相对容易些,但受阴影物件是复杂模型的话是很难实现的。而且构建过程是CPU计算,无法用显卡硬件加速。

To jk20012001
     1。SV因为是像素过滤,所以Quad想怎么画就怎么画都是基于2D的,而给阴影上贴图这个操作需要在3D世界中完成。
     2。如果不用浮点贴图,则每个颜色通道只有255个等级,Z-depths只有255个等级是无法满足要求的,当然也可以自己coding,把4个255组合成一个DWORD,但这个操作是每个像素执行的,效率难免受影响。
     3。这一点,在给tarkey的回复中已经提到了

72

主题

447

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
QQ
发表于 2006-8-31 11:03:00 | 显示全部楼层

Re:WOW中的影子的实现讨论

这个帖子比较长见识~~顶!

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2006-8-31 11:06:00 | 显示全部楼层

Re:WOW中的影子的实现讨论

没有什么难实现的,一个正确的算法是不会受问题规模大小影响而影响它的准确性,效率上更谈不上问题,一个阴影片才多大。shader不是万能的,以前做骨骼动画不都是在cpu里做的,效率和这个比起来那才叫performance killer.

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2006-8-31 17:01:00 | 显示全部楼层

Re:WOW中的影子的实现讨论

投影一个四边形?直接在post-projective space创建一个四边形就行了…它的影子就一圆斑……

6

主题

390

帖子

400

积分

中级会员

Rank: 3Rank: 3

积分
400
发表于 2006-8-31 19:48:00 | 显示全部楼层

Re:WOW中的影子的实现讨论

没想到居然是潜力贴……

tarkey的方法完全可以不用生成mesh,对于和阴影投影面相交的阴影接收体,可以算出uv来,给第二张贴图就完了,也不会有z fighting。projective shadow texture就是这么来的。再说相交测试又能耗多少效率?地表不是网格又如何?效率一测便知,没有你想象中那么夸张。而且只有近处人物有影子,计算更少。

13

主题

74

帖子

74

积分

注册会员

Rank: 2

积分
74
 楼主| 发表于 2006-8-31 22:02:00 | 显示全部楼层

Re:WOW中的影子的实现讨论

To hlsl

    "对于和阴影投影面相交的阴影接收体,可以算出uv来,给第二张贴图就完了"

    为了这么做,首先需要修改所有模型的VB数据的格式,(至少要再增加一个TexCoord,或者增加一个VB Stream),为了动态计算更新UV,至少需要Lock VB。现代显卡的特性是渲染的数据能够静态的效率最高,需要修改的尽量通过Shader来实现。以上方法不仅需要CPU参与计算,同时还要CPU和GPU交互。因此我实现看不出有什么优点。
   

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2006-8-31 22:15:00 | 显示全部楼层

Re:WOW中的影子的实现讨论

拖鞋的办法是经典的贴花。

用贴图算UV也可以。

shader。。。等DX10/GL2.1出来再谈Shader吧,以后的显卡只支持shader,哇哈哈哈(YY中。。。)

还有就是这种东西cull以后也没多少工作量,像那个贴花,看起来生成polygon挺麻烦,但是那才几个东西。小东西之所以没有阴影是因为根本就没考虑到它。。。

6

主题

390

帖子

400

积分

中级会员

Rank: 3Rank: 3

积分
400
发表于 2006-8-31 22:43:00 | 显示全部楼层

Re: Re:WOW中的影子的实现讨论

dxwood: Re:WOW中的影子的实现讨论

To hlsl

    "对于和阴影投影面相交的阴影接收体,可以算出uv来,给第二张贴图就完了"

   ...

顶点格式中有2,3套texcoord很平常,color mapping, light mapping, shadow texture mapping。

再说你提到的VB lock问题,think different,我们不lock,而是在绘制地形的时候跳过被阴影覆盖的三角形。随后在绘制阴影的时候使用dynamic vb把2套texcoord都用上去,再提交
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 07:26

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表