游戏开发论坛

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

WOW中的影子的实现讨论

[复制链接]

14

主题

251

帖子

251

积分

中级会员

Rank: 3Rank: 3

积分
251
发表于 2006-9-1 02:55:00 | 显示全部楼层

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

好帖,顶一下

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-9-1 09:34:00 | 显示全部楼层

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

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

To hlsl

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

   ...



谁说用两张贴图就必须要在VB里面给两套UV?固定管线里面尚且有纹理坐标自动生成,更不要说Shader了,你只要在Shader里面动态算出纹理坐标,传入PS就ok了,跟顶点数据一点关系都没有

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2006-9-1 09:38:00 | 显示全部楼层

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

用uv的方法的好处就是如果只是投到地面上,会很容易解决,如果是在建筑物和地面的接缝处,如果要得到正确的效果,一样需要类似我提的那种方法。

13

主题

74

帖子

74

积分

注册会员

Rank: 2

积分
74
 楼主| 发表于 2006-9-2 00:57:00 | 显示全部楼层

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

To hlsl
   “随后在绘制阴影的时候使用dynamic vb把2套texcoord都用上去,再提交“
    我不知道这里的dynamic vb指的是什么?是指以D3DUSAGE_DYNAMIC标记来Lock吗,如果是那么对于这个问题本质上是没有区别的。如果是指DIPUP,这个DX只支持一组VB Stream0,所以无法实现。

To jk20012001
   多张贴图可以共用一组TexCoord,这个是很平常的现象(曾经弄过3张贴图Blend只用一组TexCoord)。我们现在讨论的是如何动态在物件上绘制阴影,请问针对这个需求使用原来的TexCoord可以实现吗?是否需要再额外增加一组TexCoord?

To tarkey
   赞同你的方法 ^_^。我认为如果不用SM,SV,那么重新构建阴影Mesh是最简洁的方法。最简洁是指对原有的渲染体系(渲染物件)影响最小。

6

主题

390

帖子

400

积分

中级会员

Rank: 3Rank: 3

积分
400
发表于 2006-9-2 01:02:00 | 显示全部楼层

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

使用dynamic vb是指动态构建你所需投射影子所覆盖的地形的一小部分,你若是觉得不实用大可不用呗,不过就是有人这样做罢了

回到主题上来说,WOW中的影子绝对是projective shadow texture,除非故意,否则SM和SV都是有自阴影的

30

主题

357

帖子

388

积分

中级会员

Rank: 3Rank: 3

积分
388
QQ
发表于 2006-9-2 08:20:00 | 显示全部楼层

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

贴花啊老兄,不骗你

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-9-2 09:29:00 | 显示全部楼层

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

LZ看看Projective Texture就知道怎么做了,纹理坐标是根据顶点坐标计算出来的,跟原来的TexCoord无关,不需要再多一层
tarkey说的对,在接缝处Project会有Artifacts,不过LZ讨论的是WOW的影子,WOW的影子有那么复杂么?与其要考虑什么接缝处,暴雪不如先把那个圆乎乎的玩意儿换成人物的形状更要紧些吧

3

主题

23

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2006-9-2 10:27:00 | 显示全部楼层

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

把什么Shadow mapping ,Shadow volum都搬出来了,晕。
这个假影子的做法和赛车游戏中,赛道上的肽痕效果做法是一样的,只要在画这个贴图的时候把深度缓存关掉(z-buffer),那么肽痕就会遮盖住赛道。WOW的影子也是这样做的。
至于什么半透明啊,颜色过渡啊,就更加简单了。
这些游戏开发常用的技巧在DirectX SDK里面都有提到的,其实

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2006-9-6 11:32:00 | 显示全部楼层

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

画影子,z关不得吧
新版里队长给怪物的标记才是关了z的

同意jk20012001
LZ还停留在ff中vb/ib的年代,先去看看projective texturet和shader就了解众人所言谓何了
LZ提到影子不一定投到场景所有物体的情况,这个应该是属于: 这部分场景物件是属于detail物件,起点缀作用,甚至不存在于碰撞,通常会是一些小石头小板凳花花草草什么的,可能不在wow中影子处理的物件数组中,被ignore,无视ing~

补充: sm不一定非要float texture,rgba一样可以压缩进来,而且也不是非要ps才能做,ff一样可以做,sm这种标准已经固化到hardware中,直接通过api的hack方法就可以实现
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_COMPARE_R_TO_TEXTURE);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL);

原因是float texture太伤了,而且有支持的问题,如果嫌byte的精度问题那就pcf吧
我觉得问题是当存在有multimap而hardware的texture unit不足时需要multi pass

还有,我至今还真不知道什么东西在保证逻辑上正确的显示时可以关掉z,望各位指点。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2006-9-6 13:28:00 | 显示全部楼层

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

偶曾经在做勾边的时候用halo方法渲染自身模型的时候关掉过z- -;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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