LoadVertexShader

頂点シェーダーバイナリを読み込みシェーダーハンドルを作成する

val = LoadVertexShader(FileName)

FileName : 頂点シェーダーバイナリファイルのパス

(プラグイン / モジュール : DxLibW)

解説

頂点シェーダーのプログラムをコンパイルしてできるバイナリファイルをメモリに読み込み、
それを使用するためのハンドル( int型の値 )を取得します。

コンパイル前のシェーダープログラムを読み込むことはできませんので注意してください。( シェーダープログラムをコンパイルするためのソフトはDXライブラリのパッケージの Tool\ShaderCompiler の中に入っています )

戻り値で得られるシェーダーハンドルは SetUseVertexShader の引数として使用します。

同時に読み込んでおけるシェーダーの数には限りがありますので、必要が無くなったら DeleteShader で削除してください。

頂点シェーダーに渡される頂点データについて

今の所頂点シェーダーに渡される頂点データは以下のように固定されています。

DrawPolygon3DToShader, DrawPolygonIndexed3DToShaderの場合

( DrawPolygon2DToShader, DrawPolygonIndexed2DToShader では

頂点シェーダーは使用されません )

struct VSInput
{
// 座標( VERTEX3DSHADER構造体の pos の値 )
float3 Position        : POSITION0 ;

// 補助座標( VERTEX3DSHADER構造体の spos の値 )
float4 SubPosition     : POSITION1 ;

// 法線( VERTEX3DSHADER構造体の norm の値 )
float3 Normal          : NORMAL0 ;

// 接線( VERTEX3DSHADER構造体の tan の値 )
float3 Tangent         : TANGENT ;

// 従法線( VERTEX3DSHADER構造体の binorm の値 )
float3 Binormal        : BINORMAL0 ;

// ディフューズカラー( VERTEX3DSHADER構造体の dif の値 )
float4 DiffuseColor    : COLOR0 ;

// スペキュラカラー( VERTEX3DSHADER構造体の spc の値 )
float4 SpecularColor   : COLOR1 ;

// テクスチャ座標0( VERTEX3DSHADER構造体の u, v の値 )
float2 TextureCoord0   : TEXCOORD0 ;

// テクスチャ座標1( VERTEX3DSHADER構造体の su, sv の値 )
float2 TextureCoord1   : TEXCOORD1 ;
} ;

MV1DrawModelMV1DrawFrame などの3Dモデル描画の場合

剛体メッシュ( 1フレームの影響を受ける頂点のみ )の場合

struct VS_INPUT
{
float4 Position        : POSITION ;    // 座標( ローカル空間 )
float3 Normal          : NORMAL0 ;    // 法線( ローカル空間 )
float4 Diffuse         : COLOR0 ;    // ディフューズカラー
float4 Specular        : COLOR1 ;    // スペキュラカラー
float4 TexCoords0      : TEXCOORD0 ;    // テクスチャ座標
} ;

法線マップ付き剛体メッシュの場合

struct VS_INPUT
{
float4 Position        : POSITION ;        // 座標( ローカル空間 )
float3 Tan             : TANGENT0 ;        // 接線( ローカル空間 )
float3 Bin             : BINORMAL0 ;    // 従法線( ローカル空間 )
float3 Normal          : NORMAL0 ;        // 法線( ローカル空間 )
float4 Diffuse         : COLOR0 ;        // ディフューズカラー
float4 Specular        : COLOR1 ;        // スペキュラカラー
float4 TexCoords0      : TEXCOORD0 ;        // テクスチャ座標
} ;

1頂点へ影響を与えるフレームの数が1~4個のスキニングメッシュの場合

struct VS_INPUT
{
float4 Position        : POSITION ;        // 座標( ローカル空間 )
int4   BlendIndices0   : BLENDINDICES0 ;    // スキニング処理用 Float型定数配列インデックス
float4 BlendWeight0    : BLENDWEIGHT0 ;    // スキニング処理用ウエイト値
float3 Normal          : NORMAL0 ;        // 法線( ローカル空間 )
float4 Diffuse         : COLOR0 ;        // ディフューズカラー
float4 Specular        : COLOR1 ;        // スペキュラカラー
float4 TexCoords0      : TEXCOORD0 ;        // テクスチャ座標
} ;

1頂点へ影響を与えるフレームの数が1~4個の法線マップ付きスキニングメッシュの場合

struct VS_INPUT
{
float4 Position        : POSITION ;        // 座標( ローカル空間 )
int4   BlendIndices0   : BLENDINDICES0 ;    // スキニング処理用 Float型定数配列インデックス
float4 BlendWeight0    : BLENDWEIGHT0 ;    // スキニング処理用ウエイト値
float3 Tan             : TANGENT0 ;        // 接線( ローカル空間 )
float3 Bin             : BINORMAL0 ;    // 従法線( ローカル空間 )
float3 Normal          : NORMAL0 ;        // 法線( ローカル空間 )
float4 Diffuse         : COLOR0 ;        // ディフューズカラー
float4 Specular        : COLOR1 ;        // スペキュラカラー
float4 TexCoords0      : TEXCOORD0 ;        // テクスチャ座標
} ;

1頂点へ影響を与えるフレームの数が1~8個のスキニングメッシュの場合

struct VS_INPUT
{
float4 Position        : POSITION ;        // 座標( ローカル空間 )
int4   BlendIndices0   : BLENDINDICES0 ;    // スキニング処理用 Float型定数配列インデックス0
int4   BlendIndices1   : BLENDINDICES1 ;    // スキニング処理用 Float型定数配列インデックス1
float4 BlendWeight0    : BLENDWEIGHT0 ;    // スキニング処理用ウエイト値0
float4 BlendWeight1    : BLENDWEIGHT1 ;    // スキニング処理用ウエイト値1
float3 Normal          : NORMAL0 ;     ...

戻り値:
  -1    : エラー発生
  -1以外 : シェーダーハンドル

情報

プラグイン / モジュールDxLibW
バージョン3.24f
作成日2026/04/12
著作者DxLib: Takumi Yamada / HSP binding: IronHSP Project
URLhttps://dxlib.xsrv.jp/
備考hspdxlib.as をインクルードして使用
タイプDxLib ゲームライブラリ
グループDxLib その他
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\hspdxlib.hs