游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10399|回复: 29

shadowmap怎么才能透射alpha透明贴图?

[复制链接]

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2008-5-22 15:44:00 | 显示全部楼层 |阅读模式
我正在做场景编辑器,昨天加入了shadowmap阴影的支持,我用的是1024的阴影通道,帧数也掉的厉害,我这个是6100的板载显卡sm3.0渲染,还算能抗的住。

只是,树的枝叶用的是alpha透明贴图,我想知道shadowmap点光源投影拍照怎么才能穿透alpha通道?是不是要在拍摄阴影通道的时候在ps里面去处理?
sf_2008522154420.png

34

主题

629

帖子

629

积分

高级会员

Rank: 4

积分
629
发表于 2008-5-22 20:57:00 | 显示全部楼层

Re:shadowmap怎么才能透射alpha透明贴图?

texkill

51

主题

134

帖子

140

积分

注册会员

Rank: 2

积分
140
发表于 2008-5-22 21:31:00 | 显示全部楼层

Re:shadowmap怎么才能透射alpha透明贴图?

多大的地形啊。。。1024 够不够用

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2008-5-23 00:57:00 | 显示全部楼层

Re:shadowmap怎么才能透射alpha透明贴图?

我的想法是渲染带alpha的物体时,不能只用简单的不考虑纹理的shader
把alpha test打开,然后根据物体本身的纹理来做alpha test
当然,这只是对于全透明的情况,不过对于树叶应该满足了
至于半透明就更复杂了,可以参考一下http://www.gamedev.net/community/forums/topic.asp?topic_id=111381

传说texkill是很慢的指令,最好不要用

0

主题

228

帖子

285

积分

中级会员

Rank: 3Rank: 3

积分
285
发表于 2008-5-23 12:17:00 | 显示全部楼层

Re:shadowmap怎么才能透射alpha透明贴图?

没作过,猜测镂空情况用alpha test来做

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2008-5-23 20:38:00 | 显示全部楼层

Re:shadowmap怎么才能透射alpha透明贴图?

抛弃硬件渲染深度图,
自己写SHADER渲染深度图

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2008-5-23 20:41:00 | 显示全部楼层

Re:shadowmap怎么才能透射alpha透明贴图?

我问了别人,说是要用到Variance Shadow map,据说挺复杂的,看来要花些时间了。
昨天发现了大的bug,改了场景渲染,搞的客户端模块受了些影响,现正调整中。。。。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2008-5-23 20:45:00 | 显示全部楼层

Re:shadowmap怎么才能透射alpha透明贴图?

自己写SHADER渲染深度图?
我看你以前发过一篇帖子,阴影效果很不错,不过是静态影子对吧?
那个效果就很好了。

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2008-5-24 18:45:00 | 显示全部楼层

Re:shadowmap怎么才能透射alpha透明贴图?

这个不需要用Variance Shadow map,vsm只是为了得到更平滑的影子
你现在的深度图不是用shader渲染的吗??

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
 楼主| 发表于 2008-5-24 20:13:00 | 显示全部楼层

Re:shadowmap怎么才能透射alpha透明贴图?

我的深度是用shader渲染的,如果要算alphatest怎么搞?

void BuildShadowMapVS(float3 posL : POSITION0,
                      out float4 posH : POSITION0,
                      out float2 depth : TEXCOORD0)
{
        // Render from light's perspective.
        posH = mul(float4(posL, 1.0f), gLightWVP);
       
        // Propagate z- and w-coordinates.
        depth = posH.zw;
}

float4 BuildShadowMapPS(float2 depth : TEXCOORD0) : COLOR
{
        // Each pixel in the shadow map stores the pixel depth from the
        // light source in normalized device coordinates.
        return depth.x / depth.y; // z / w
}

technique BuildShadowMapTech
{
        pass P0
        {
                vertexShader = compile vs_2_0 BuildShadowMapVS();
        pixelShader  = compile ps_2_0 BuildShadowMapPS();
        }
}

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 09:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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