游戏开发论坛

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

有关HLSL的小问题

[复制链接]

5

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2005-11-30 22:05:00 | 显示全部楼层 |阅读模式
最近我在学习HLSL, 看到别人的程序都有 .fx文件,或是.vsh, .psh文件,
而我的只能建立.txt文件,我想问一下,这些文件是怎么建立的呢?

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-11-30 23:47:00 | 显示全部楼层

Re:有关HLSL的小问题

.fx 和 .txt是一样的。
.vsh .psh 好像是编译过的,不确认,我们都不用编译过的。

2

主题

177

帖子

177

积分

注册会员

Rank: 2

积分
177
发表于 2005-12-1 10:34:00 | 显示全部楼层

Re:有关HLSL的小问题

只要是个纯文本文件就行,随便你用什么后缀,起个exe/dll都可以,只要最后把它当文本文件来读
fx文件一般不只是shader,还包括了一些自定义的notation,各公司可以对其扩充,比如微软的fx和ATI的fx就不同,欲知notation为何物请看MS出版社出的有本讲DirectX9 programable pipeline的书里边讲的很详尽
我所在的公司习惯上把单纯的shader起名为vsh和psh,里面存放shader的“源码”(或是汇编或是HLSL撰写),然后用编译为vso和pso做为目标码,发布时目标码随项目一起发布(之所以不用编译为头文件再include这种方法的原因是这样发布补丁时需要重编译和发布大量二进制文件)

另to Lights:
你们不编译就发布,难道是做开源项目吗

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2005-12-1 15:30:00 | 显示全部楼层

Re:有关HLSL的小问题

编译过的是VSO,PSO结尾的.
一般.FX,.VSH,.PSH都是文本的.
发布时都会编译成.VSO,.PSO,.FX也是拆开编译,这样载入会快一些,不用载入时编译.
就我的经验,.FX不适合放在最后发布的游戏里,由于方便(HLSL对ASM VS,PS的封装)它会多少影响性能,它会过多更改渲染状态和常量寄存器状态(尽管有标志可以控制),所以出于性能最后都应该将FX独自编译成VSO,PSO统一管理.

5

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2005-12-1 15:43:00 | 显示全部楼层

Re:有关HLSL的小问题

谢谢三位了!
不过我想问一下: 怎么编译这些文件为vso和pso,做为目标码呢,
我想编译时,那个"编译"选项是灰色的,
不能用啊,而其他的.cpp文件却可以.

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-12-1 16:34:00 | 显示全部楼层

Re:有关HLSL的小问题

因为都是利用别人的shader改的,也没想过产权保护。效率好像没什么区别,载入慢点,而且有时会根据情况动态拼装一些shader,编译了不知道怎么弄!

22

主题

274

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
发表于 2005-12-1 20:02:00 | 显示全部楼层

Re:有关HLSL的小问题

TO LCYX的工具目录里有 VSA.EXE,PSA.EXE,FXC.EXE分别针对.VSH,.PSH,.FX,命令行的.

TO LIGHTS:效率有区别的,看使用这个.FX的启动次数,一帧一次几次当然几乎没区别,但如果是几百次,比如几百个物体,而这个FX参数又多,这样会引发大量的SetVertexShaderConst*或者SetPixelShaderConst*,SetVertexShader,SetPixelShader,性能大打折扣.
另外:不能但看FPS变化作为性能标志,因为CPU和GPU很多时间是并行的,瓶颈可能在任何地方(CPU ,VS,PS,传输...),所以当你的CPU很累的时候,GPU也许很轻松,增加GPU任务FPS也不会掉的.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 19:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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