游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6558|回复: 13

[HLSL]请教大侠:如何实现装备发光效果

[复制链接]

18

主题

116

帖子

218

积分

中级会员

Rank: 3Rank: 3

积分
218
发表于 2011-5-28 10:59:00 | 显示全部楼层 |阅读模式
之前玩《诛仙》的时候,发现经炼器的装备可以发出各种颜色的光,感觉挺帅的。
早先曾尝试用posteffect写过全屏泛光的效果,不过感觉单个网格泛光的效果跟全屏泛光应该是不同的。
求教大侠能够给一点思路上的提示~[em6]
如下附上效果图:

(角色的衣服和鞋子是发白光的,截出来的效果不太好~ 呵呵~)
PS:
感觉shader中的像素着色器只能控制该点的颜色,可以将周围点的颜色混合到该点,却无法控制周围点的颜色,且该点要事先传入shader中才可以。
是我理解不到位吗?求大侠指教一二~  [em5]

0

主题

52

帖子

919

积分

高级会员

Rank: 4

积分
919
发表于 2011-5-28 20:33:00 | 显示全部楼层

Re:[HLSL]请教大侠:如何实现装备发光效果

我的理解是,不同的部位有不同的附着点,在不同的附着点附着不同的特效,就能达到效果
程序只用实现将不同附着点上的特效show出来,具体的特效是绑定在特定的模型MOD上还是绑定在动作上就要看是什么作用的特效了

18

主题

116

帖子

218

积分

中级会员

Rank: 3Rank: 3

积分
218
 楼主| 发表于 2011-6-1 10:45:00 | 显示全部楼层

Re: Re:[HLSL]请教大侠:如何实现装备发光效果

gxlierenmm: Re:[HLSL]请教大侠:如何实现装备发光效果
我的理解是,不同的部位有不同的附着点,在不同的附着点附着不同的特效,就能达到效果
程序只用实现将不同...

非常感谢您的指教~
从理论上讲,这种方式确实可以实现装备局部发光的效果,不过这样恐怕要辛苦美工了~ ??
微软的Silverlight内部封装了一种叫做DropShadowEffect的特效,附加到精灵的话,可以直接实现精灵发光的效果。而其2D特效的本质就是像素着色器~
我感觉图中的发光效果单靠Shader应该就可以实现了,只是仍旧苦无思路~
[em17]

22

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
QQ
发表于 2011-6-2 20:41:00 | 显示全部楼层

Re:[HLSL]请教大侠:如何实现装备发光效果

多渲染一遍角色,把角色渲染到另一张纹理上,使用原来的深度缓冲,输出的颜色是你想要的泛光颜色。然后用这张图做和泛光同样的操作就能局部泛光了。还有一种方法不用多渲一次,但只对不透明的物体有效,就是把想要泛光的物体的alpha值输出成1,其余输出成0,这样叠加之后就只有alpha是1的有泛光效果。但是需要做alpha混合的物体就不能有泛光了。

18

主题

116

帖子

218

积分

中级会员

Rank: 3Rank: 3

积分
218
 楼主| 发表于 2011-6-3 08:54:00 | 显示全部楼层

Re: Re:[HLSL]请教大侠:如何实现装备发光效果

hflong240: Re:[HLSL]请教大侠:如何实现装备发光效果
多渲染一遍角色,把角色渲染到另一张纹理上,使用原来的深度缓冲,输出的颜色是你想要的泛光颜色。然后用这...

非常感谢您提供的思路~
只是,小弟是菜鸟,想再向您请教一下两种思路的一些细节问题~
您的第一种思路,实现起来是这样的吗:
1.角色绘制到一张透明纹理上,该纹理尺寸为屏幕尺寸,角色输出泛光颜色,针对该纹理进行全屏泛光,得到影子角色。
2.绘制背景。
3.绘制影子角色。
4.绘制真实角色。
请问是这样吗?
您的第二种思路小弟不是太理解,能麻烦再说明一下吗?
感激不尽~~

22

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
QQ
发表于 2011-6-3 09:16:00 | 显示全部楼层

Re:[HLSL]请教大侠:如何实现装备发光效果

就是对于不透明物体,关闭alpha混合和alpha测试,把不需要泛光的物体的alpha输出成0,这样只要后备缓冲是带alpha通道的,那么在做全屏泛光的时候你获得的屏幕纹理除了需要泛光的部分以外其他部分就是透明的了。但是alpha混合的物体必须在获得屏幕纹理之后再渲染。

22

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
QQ
发表于 2011-6-3 09:28:00 | 显示全部楼层

Re:[HLSL]请教大侠:如何实现装备发光效果

第一种是要先把场景都渲染完了再多渲一遍角色到纹理上(纹理要先清成黑色),这样才有完整的深度缓冲信息,使被遮挡的部分不被绘制。之后只要把这张纹理模糊化再叠加到屏幕上就行了,因为是叠加操作所以黑色部分给屏幕加了0还是原来的颜色。

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2011-6-3 10:22:00 | 显示全部楼层

Re:[HLSL]请教大侠:如何实现装备发光效果

粒子效果。

18

主题

116

帖子

218

积分

中级会员

Rank: 3Rank: 3

积分
218
 楼主| 发表于 2011-6-3 12:05:00 | 显示全部楼层

Re: Re:[HLSL]请教大侠:如何实现装备发光效果

hflong240: Re:[HLSL]请教大侠:如何实现装备发光效果
第一种是要先把场景都渲染完了再多渲一遍角色到纹理上(纹理要先清成黑色),这样才有完整的深度缓冲信息,...

真是太谢谢您了~
已经实现了您提供的第一种思路~ 如下是一个简单的效果图:

只有坦克是发光的,背景的三根坐标轴是清晰的,画面粗糙了一点,呵呵~
谢谢您让我学到了一种新的思路,再次对您表示感谢~
您的第二种思路正在尝试中~ 呵呵~

59

主题

404

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2011-6-5 10:58:00 | 显示全部楼层

Re:[HLSL]请教大侠:如何实现装备发光效果

这种特效,用粒子系统就可以。没有这么麻烦
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-9 14:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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