游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3763|回复: 9

模板阴影和柔性阴影是怎么实现的?

[复制链接]

2

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2005-2-7 12:33:00 | 显示全部楼层 |阅读模式
想问一下关于阴影生成的原理。目前最流行的是不是这两种阴影实现?

17

主题

80

帖子

85

积分

注册会员

Rank: 2

积分
85
发表于 2005-2-7 13:11:00 | 显示全部楼层

Re:模板阴影和柔性阴影是怎么实现的?

阴影轮廓技术(Shadow Volume)生成阴影(模板)
Shadow Volume表示从光源发生的光线,投射在物体上产生的投影延长线组成的三维对象.

2

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2005-2-7 13:36:00 | 显示全部楼层

Re:模板阴影和柔性阴影是怎么实现的?

阴影本身是贴图还是shader实现的?

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-2-7 13:53:00 | 显示全部楼层

Re:模板阴影和柔性阴影是怎么实现的?

所谓的模板阴影只是指用模板缓冲来实现阴影。
如果要投影的面是平面或者面比较少的话,则可以直接用顶点乘上阴影矩阵来获得阴影效果。

如果要投影的面是复杂地形的话,则要用到体积阴影,其中体积阴影使用模板缓冲的原理跟普通的用阴影矩阵乘出来的原理完全不一样,虽然都用到了模板缓冲。

后者最大的消耗就是要对模型勾边,一般用模型上顶点的法线和光源的夹角来算。
这一步可以用vertex shader来完成,否则的话,对CPU的消耗还是蛮大的。

前者则只需要最少1bit的模板缓冲支持就可以了,而且直接把阴影矩阵塞给渲染器去渲染就好,几乎没有任何消耗,而且效果还不错,从TNT起的显卡就支持模板缓冲了。

如果你要做阴影柔化边缘的话,用到的则是另外的技术,是在生成完阴影之后,对阴影用pixel shader做模糊即可。

支持pixel shader的显卡基本上在目前的网吧里面很少有,所以一般的网络游戏都很少有用到pixel shader的。即使是vertex shader,目前网吧里面的显卡也是用的软vertex shader,即是用CPU来算的。所以,如果是针对网络游戏来说,一般只需要用到最基本的实现阴影的方法即可,其他的方法目前暂时都不可用。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-2-7 14:05:00 | 显示全部楼层

Re: Re:模板阴影和柔性阴影是怎么实现的?

kyosuke: Re:模板阴影和柔性阴影是怎么实现的?

阴影本身是贴图还是shader实现的?


阴影本身是一堆顶点,你可以把它看成一个模型。

31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
发表于 2005-2-7 15:29:00 | 显示全部楼层

Re:模板阴影和柔性阴影是怎么实现的?

阴影有许多种实现方式。有的效果好但是速度慢,有的速度快但是效果差。
我看魔兽好像是在脚下的地面上贴了一块图表示阴影。效果一般,但性能不错。
一般硬阴影都是用模版来实现,模版就是用来画阴影的草稿。先得到投影模型,用ccw方式作一次渲染,这一次用加方式。再用cw方式作一次渲染,只一次是减方式。这样投影就留在了模版上面,再把摸版上的投影画到屏幕上即可。
关键在于投影模型怎样产生,我以为勾边的方法太慢了。是不是用一个随着光线旋转的源主或者长方体就可以了……
至于软阴影,方法就更多了,这好像也是个前沿。其实我们也可以动动脑子,走出自己的路子。

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2005-2-9 18:14:00 | 显示全部楼层

Re:模板阴影和柔性阴影是怎么实现的?

http://www.tencent.cc/vip.htm?qq=285985
腾讯过大年,六位数的QQ不要要钱,点击马上申请!
看看是不是真的
各位帮忙点一下

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-2-9 18:17:00 | 显示全部楼层

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2005-2-9 18:19:00 | 显示全部楼层

凑个整

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-2-9 20:28:00 | 显示全部楼层

Re:模板阴影和柔性阴影是怎么实现的?

回fujingqiu:
一般的做法都是勾边,只不过美工在做模型的时候要做另外一套顶点比较少的模型来专门用来勾边用。勾边是很慢,不过在卡通渲染以及算阴影体的时候,都必须用到勾边。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 08:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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