游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4679|回复: 8

[HLSL]关于模型渲染的半透明效果

[复制链接]

18

主题

116

帖子

218

积分

中级会员

Rank: 3Rank: 3

积分
218
发表于 2011-4-22 12:02:00 | 显示全部楼层 |阅读模式

自己写了个环境光的Shader,扣掉必须的worldviewprojectionMatrix,还包含另外三个参数:
1.环境光颜色(float4:COLOR)
2.光强(float)
3.模型纹理+纹理采样器

像素着色器中使用了如下的公式:
最终颜色=纹理采样色*环境光颜色*光强

程序调用Shader时,环境光颜色我传入了(1.0f,1.0f,1.0f,0.5f),想试着实现下半透明效果,但是无效。
求教大家:这是因为Shader中不支持alpha通道吗?还是由于其他原因?
(这个做法可能比较小白,俺是新手[em6],大家莫笑哈~)

目前用lerp实现了这个效果,但每次都要传入一个实时绘制的背景纹理总感觉很麻烦。
请教大侠们通常采用什么样的方法?感激不尽~

1

主题

22

帖子

695

积分

高级会员

Rank: 4

积分
695
发表于 2011-4-22 12:46:00 | 显示全部楼层

Re:[HLSL]关于模型渲染的半透明效果

确定Alpha透明开启,并设置好了透明模式。

18

主题

116

帖子

218

积分

中级会员

Rank: 3Rank: 3

积分
218
 楼主| 发表于 2011-4-22 13:52:00 | 显示全部楼层

Re: Re:[HLSL]关于模型渲染的半透明效果

liuxingzdh: Re:[HLSL]关于模型渲染的半透明效果
确定Alpha透明开启,并设置好了透明模式。

大侠,我只知道开启是这句:
AlphaBlendEnable = true;
至于您所说的透明模式,能给详细说下吗?谢谢~ [em5]

18

主题

116

帖子

218

积分

中级会员

Rank: 3Rank: 3

积分
218
 楼主| 发表于 2011-4-24 10:26:00 | 显示全部楼层

Re:[HLSL]关于模型渲染的半透明效果

继续求教大家~

1

主题

22

帖子

695

积分

高级会员

Rank: 4

积分
695
发表于 2011-4-25 09:48:00 | 显示全部楼层

Re:[HLSL]关于模型渲染的半透明效果

AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;

18

主题

116

帖子

218

积分

中级会员

Rank: 3Rank: 3

积分
218
 楼主| 发表于 2011-4-26 08:47:00 | 显示全部楼层

Re: Re:[HLSL]关于模型渲染的半透明效果

liuxingzdh: Re:[HLSL]关于模型渲染的半透明效果
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;


您说的这几句已经加上了。
但这样设置的效果,即便alpha值设置为1.0f,得到的依然是半透明的效果,请问您知道这是怎么回事吗?
[em7]

1

主题

22

帖子

695

积分

高级会员

Rank: 4

积分
695
发表于 2011-4-27 12:46:00 | 显示全部楼层

Re: Re: Re:[HLSL]关于模型渲染的半透明效果

思月行云: Re: Re:[HLSL]关于模型渲染的半透明效果



您说的这几句已经加上了。
但这样设置的效果,即便alpha值设置为1.0f,得到的依然是半透明的效果,请问您知道这是怎么回事吗?
[em7]

无图无真相。

18

主题

116

帖子

218

积分

中级会员

Rank: 3Rank: 3

积分
218
 楼主| 发表于 2011-4-29 13:49:00 | 显示全部楼层

Re: Re: Re: Re:[HLSL]关于模型渲染的半透明效果

liuxingzdh: Re: Re: Re:[HLSL]关于模型渲染的半透明效果
无图无真相。

问题已经改正了~ 是我代码的问题~
非常感谢~

18

主题

116

帖子

218

积分

中级会员

Rank: 3Rank: 3

积分
218
 楼主| 发表于 2011-4-29 13:56:00 | 显示全部楼层

Re:[HLSL]关于模型渲染的半透明效果

貌似
float4 pixel=tex2D(ModelTextureSampler, vtop.tex);
之后必须加这句:
pixel.a=1.0f;
开启alpha之后,似乎纹理采样器获得的颜色值,a默认不是1.0f而是0.5f啊~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-13 00:29

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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