游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2141|回复: 6

HLSL SM3.0 for指令困惑问题

[复制链接]

13

主题

74

帖子

74

积分

注册会员

Rank: 2

积分
74
发表于 2009-7-1 01:14:00 | 显示全部楼层 |阅读模式
按照DX SDK文档介绍 Shader Model 3.0支持 Dynamic Flow Control。
找来dxsdk文档中的skinmesh例子 把.fx中的 VS_OUTPUT VShade(VS_INPUT i, uniform int NumBones)
uniform int NumBones直接使用参数外部传递,结果画面错乱。

for (int iBone = 0; iBone < NumBones-1; iBone++)



NumBones 定义为 uniform int NumBones, 动态传入,并不是在编译时候生成多份VertexShader。
compile vs_2_0 上结果正确, compile vs_3_0 上结果错误。

难道for指令中的循环控制变量只能是static 类型?

2

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2009-7-1 20:14:00 | 显示全部楼层

Re:HLSL SM3.0 for指令困惑问题

参数里的uniform需要在compile vs_2_0 VS(骨骼个数常量)时指定,也就是编译出多份;否则需要指定循环不展开

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2009-7-1 23:13:00 | 显示全部楼层

Re:HLSL SM3.0 for指令困惑问题

先用pix看看吧

13

主题

74

帖子

74

积分

注册会员

Rank: 2

积分
74
 楼主| 发表于 2009-7-2 01:08:00 | 显示全部楼层

Re:HLSL SM3.0 for指令困惑问题

fxc 的profile中 有 fx_2_0 和 fx_4_0 唯独没有fx_3_0
而编译 compile vs_3_0 结果错误, 会不会和这个有关?

2

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2009-7-2 19:34:00 | 显示全部楼层

Re:HLSL SM3.0 for指令困惑问题

无关,fx_2_0和fx_4_0是fx容器的版本,和shader版本不是一一对应的

13

主题

74

帖子

74

积分

注册会员

Rank: 2

积分
74
 楼主| 发表于 2009-7-2 22:51:00 | 显示全部楼层

Re:HLSL SM3.0 for指令困惑问题

真正让我困惑的是, 为什么compile vs_3_0的渲染效果会是错误的(Effect的编译没有任何错误提示),而使用compile vs_2_0是正确的,
测试显卡是 NV 9500,肯定是支持SM30的

2

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2009-7-3 19:40:00 | 显示全部楼层

Re:HLSL SM3.0 for指令困惑问题

因为3.0支持循环指令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-19 21:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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