次の方法で共有


関数宣言の構文

HLSL 関数は、次の構文で宣言されます。

[StorageClass][clipplanes()][precise]Return_Value Name ( [ArgumentList] ) [: Semantic] { [StatementBlock] };

 

パラメーター

StorageClass

関数宣言を再定義する修飾子。 現在、インライン 唯一の修飾子値です。 修飾子の値も既定値であるため、インライン する必要があります。 したがって、関数はインライン 指定するかどうかに関係なくインラインであり、HLSL 内のすべての関数はインラインです。 インライン関数は、関数呼び出しごとに関数本体のコピーを生成します (コンパイル時)。 これは、関数を呼び出すオーバーヘッドを減らすために行われます。

Clipplanes

クリッププレーンのオプションリスト。ユーザー指定のクリッププレーンは最大6個です。 これは、機能レベル 9_x 以上で動作する SV_ClipDistance の代替メカニズムです。

名の

シェーダー関数の名前を一意に識別する ASCII 文字列。

ArgumentList

省略可能な引数リスト。関数に渡 引数のコンマ区切りのリストです。

セマンティック

戻りデータの目的の使用法を識別する省略可能な文字列 (セマンティクス (DirectX HLSL)を参照)。

StatementBlock

関数の本体を構成する省略可能な ステートメント。 本体なしで定義された関数は、関数プロトタイプと呼ばれます。プロトタイプ関数の本体は、関数を呼び出す前に他の場所で定義する必要があります。

戻り値

戻り値の型には、HLSL 型のいずれかを指定できます。

備考

このページの構文では、ほぼすべての種類の HLSL 関数について説明します。これには頂点シェーダー、ピクセル シェーダー、ヘルパー関数が含まれます。 ジオメトリ シェーダーも関数を使用して実装されますが、その構文はもう少し複雑であるため、ジオメトリ シェーダー関数宣言を定義する別のページがあります (Geometry-Shader Object (DirectX HLSL)を参照)。

パラメーター型やパラメーターの順序の一意の組み合わせが与えられている限り、関数はオーバーロードできます。 HLSL には、組み込み関数や 組み込み関数も多数実装されています。

クリッププレーン 属性を使用して、ユーザー固有のクリッププレーンを指定できます。 Windows は、描画されたすべてのプリミティブにこれらのクリッププレーンを適用します。 クリッププレーン 属性は SV_ClipDistance と同様に機能しますが、すべてのハードウェア 機能レベル 9_x 以上で動作します。 詳細については、「機能レベル 9 ハードウェア のユーザ クリップ プレーンを参照してください。

この例は、BasicHLSL10 サンプルの BasicHLSL10.fx からのものです。

struct VS_OUTPUT
{
    float4 Position   : SV_POSITION; 
    float4 Diffuse    : COLOR0;
    float2 TextureUV  : TEXCOORD0;
};

VS_OUTPUT RenderSceneVS( float4 vPos : POSITION,
                         float3 vNormal : NORMAL,
                         float2 vTexCoord0 : TEXCOORD,
                         uniform int nNumLights,
                         uniform bool bTexture,
                         uniform bool bAnimate )
{
    VS_OUTPUT Output;
    ...
    return Output;    
}

AdvancedParticles サンプルの AdvancedParticles.fx のこの例は、戻り値の型にセマンティックを使用する方法を示しています。

//
// PS for particles
//
float4 PSPointSprite(PSSceneIn input) : SV_Target
{   
    return g_txDiffuse.Sample( g_samLinear, input.tex ) * input.color;
}

Functions (DirectX HLSL)