白云哥

身披半件长工衣,怀揣一颗地主心

 

FXComposer中的Annotations与Semantics

DXSAS : DirectX Standard Annotations and Semantics,DirectX引入的一项在Shader代码与应用程序之间进行数据绑定的规范,当出到0.8时被广泛用于各种应用程序中,后来从MS的产品线中神秘消失,有关DXSAS的规范文档被从MSDN中移除,只留下几页引用说明。。。

 

简单来说,当我们在DX中使用Shader的时候,我们会使用一个常量表来设置各种参数值,其中最重要的当属世界变换矩阵了。这在用DX写游戏程序时没有问题,但是在其他一些Shader编辑工具中问题就出来了,如何设置这些变量?当然,每种工具可以提供自己的方法,比如现在Max,Maya都提供了自己的方法在Shader中绑定世界变换矩阵,但问题是每种工具提供的方法都不一样,这样写出来的Shader文件就麻烦了。。。

 

于是,MS这时站出来,提出了一个标准:DXSAS。这是目前还能找到的DXSAS的一段描述:

Standard annotations and semantics (DXSAS) provide a method of using shaders in a standard way that enables shaders to be used with tools, applications, and game engines. DXSAS defines a set of semantics and annotations that are attached to host application values and effect parameters for the purpose of sharing effects.

地址:http://msdn.microsoft.com/en-us/library/bb173004(VS.85).aspx

 

有标准是好事,而且我们也能看到,大量的Shader工具及游戏引擎也使用到了SAS,比如FXComposer,比如RenderMonkey,比如CryEngine。。。当然,各工具可能对SAS都会有自己的扩展,但大部分还都是按照标准来的。

 

可是,为什么MS突然就将这标准移除了。。。而且,没有任何理由的。。。以至于FXComposer1.8版本以前的文档中附带的SAS描述章节也跟着一并删除,我在FXComposer2.5上找遍了整个手册也没找到这个 WorldViewProjection 从哪里来,翻遍了MSDN上HLSL有关的内容也没有看到这几个关键字。无奈Google之,原来受此困惑的人还真不少。

 

好在,Nvidia推出了一份新的文档,描述SAS的使用方法,或许Nvidia也很困惑,“which came from DirectX 9, and are sometimes hard to find”。。。但是新的FXComposer手册中对这些只字未提却是我仍然很困惑的,对于像我这样的一个新手来说,完全不可能知道这些东西是如何来的,如何去找这些Semantics的定义。

 

Nvidia网站上的SAS说明文档:http://developer.nvidia.com/object/using_sas.html

 

以及FXComposor官方论坛上置顶的关于SAS文档的说明贴,当时我竟然没看到这个置顶贴 :(  http://developer.nvidia.com/forums/index.php?showtopic=1358

 

其他人提出的一些相关疑问:

http://developer.nvidia.com/forums/index.php?showtopic=750

http://developer.nvidia.com/forums/index.php?showtopic=31

http://developer.nvidia.com/forums/index.php?showtopic=1061

http://developer.nvidia.com/forums/index.php?showtopic=1347

http://developer.nvidia.com/forums/index.php?showtopic=1394

 

留下这些记录,也许有跟我一样的初哥们,少点困惑 :)

posted on 2009-09-28 00:02 白云哥 阅读(1761) 评论(3)  编辑 收藏 引用 所属分类: GameDev

评论

# re: FXComposer中的Annotations与Semantics 2009-09-28 07:34 黑色灵猫

这个东西本身就是一个鸡肋,既不是新的api,也不是很强大完整的框架,仅仅是一个小封装。一般的项目拿来嵌入,工程浩大。本身因为设计原因,难以嵌入大的项目。MS有很多东西都废掉的,这个东西更类似于DirectPlay  回复  更多评论   

# re: FXComposer中的Annotations与Semantics 2009-09-28 10:28 白云哥

@黑色灵猫

受教,目前在使用FXComposor时用到了这个,不得不对这多些了解。或许MS将这个标准废除是有理由的,Nvidia的FXComposor需要这样一种方法也是确定的,所以,DXSAS变成了SAS  回复  更多评论   

# re: FXComposer中的Annotations与Semantics 2009-10-02 22:35 99读书人

Nvidia的FXComposor需要这样一种方法也是确定的  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

常用链接

留言簿(4)

随笔分类

随笔档案

相册

我的链接

搜索

最新评论

阅读排行榜

评论排行榜