semantics - セマンティクス

公開:2011-07-12 20:41
更新:2020-02-15 04:36
カテゴリ:directx,windows,c++

HLSLには変数にセマンティクスを付けたりする。セマンティクスの言葉の意味は「意味論」で、要するにその変数の「意味」を表すことのようだ。「POSITION」やら「NORMAL」やら「TEXCOORD0」などを付けることでシェーダ間で意味を共有するようなのだが、なぜ必要なのかよくわからない。MSDNを見てもよくわからないのである。

セマンティクスは、シェーダー入力またはシェーダー出力に付加されている文字列で、パラメーターの使用目的に関する情報を伝達します。セマンティクスは、シェーダー ステージ間で渡されるすべての変数に指定する必要があります。シェーダー変数にセマンティクスを追加するための構文については、「変数構文 (DirectX HLSL)」を参照してください。通常、パイプライン ステージ間で渡されるのは完全に一般的なデータであり、システムによって一意に解釈されることはありません。そのため、特別な意味を持たないものであれば、任意のセマンティクスを指定することができます。特別な意味を持つセマンティクスを含む Direct3D 10 のパラメーターは、システム値セマンティクスと呼ばれます。
http://msdn.microsoft.com/ja-jp/library/bb509647(v=vs.85).aspx

いやーさっぱり理解できない。

セマンティクスはシンタックスに対するものみたいなイメージだけれど、なんかモヤッとして、イメージできない。Wikipediaで「意味論」を調べても頭が痛くなってくるばかりである。

いろいろググっていたら、教えて!Gooの「セマンティクスの概念とは?」を読んでなんとなく腑に落ちた気分になった。でもHLSLのセマンティクスの意味は分からないんだけれどね。。