游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3059|回复: 7

一个shder程序,ps1.4\ps3.0编译都没事,但ps2.0却出问题。

[复制链接]

9

主题

18

帖子

26

积分

注册会员

Rank: 2

积分
26
发表于 2008-2-14 18:05:00 | 显示全部楼层 |阅读模式
    if( g_bTexture )
    {
                if(g_bShadow)
                        ret =  tex2D( g_samScene, Tex0)* tex2D( g_samShadow, Tex1) ;
                else
                        ret =  tex2D( g_samScene, Tex0);
    }

我在外部设置setbool(g_bTexture ,TRUE);
用ps2.0编译,没执行if里的语句。为啥?

22

主题

309

帖子

353

积分

中级会员

Rank: 3Rank: 3

积分
353
QQ
发表于 2008-2-14 18:44:00 | 显示全部楼层

Re:一个shder程序,ps1.4\ps3.0编译都没事,但ps2.0却出问题。

ps2.0不支持if

9

主题

18

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2008-2-14 23:31:00 | 显示全部楼层

Re: 一个shder程序,ps1.4\ps3.0编译都没事,但ps2.0却出问题。

多谢楼上,ps1.4,ps3.0支持,而只有ps2.0不支持吗,敢问在哪有此说明啊?
dx文档里没发现呐。

22

主题

309

帖子

353

积分

中级会员

Rank: 3Rank: 3

积分
353
QQ
发表于 2008-2-15 12:32:00 | 显示全部楼层

Re:一个shder程序,ps1.4\ps3.0编译都没事,但ps2.0却出问题。

忘了在哪看过..
好像if/else,for之类的都会在编译的时候展开
等楼下的来回答-_-

29

主题

405

帖子

405

积分

中级会员

Rank: 3Rank: 3

积分
405
发表于 2008-2-15 12:58:00 | 显示全部楼层

Re:一个shder程序,ps1.4\ps3.0编译都没事,但ps2.0却出问题。

sm2.0绝对支持if...else,for..ect...

22

主题

309

帖子

353

积分

中级会员

Rank: 3Rank: 3

积分
353
QQ
发表于 2008-2-15 13:31:00 | 显示全部楼层

Re:一个shder程序,ps1.4\ps3.0编译都没事,但ps2.0却出问题。

找到了-_-
http://blog.csdn.net/soilwork/archive/2006/12/15/1443920.aspx
除像素着色器1.1以外,所有着色模型都支持流程控制语句,但只有支持顶点和像素着色器3.0的硬件才是真正使用18条流程控制语句来支持流程控制的。这意味着所有非3.0的shader都将把流程控制转换为一系列代码,执行分支的所有部分,或者把循环展开来使用。

9

主题

18

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2008-2-15 13:37:00 | 显示全部楼层

Re: 一个shder程序,ps1.4\ps3.0编译都没事,但ps2.0却出问题。

实际操作也不想这么干,就是想知道原因,d3d9SDK里的HDRLighting例子也用了类似的判断,
我运行它的程序就没事,感觉所有参数都一样啊。

39

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
发表于 2008-2-15 16:08:00 | 显示全部楼层

Re:一个shder程序,ps1.4\ps3.0编译都没事,但ps2.0却出问题。

2.0肯定可以IF吧?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 01:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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