0001: // -------------------------------------------------------------
0002: // 3Dモデルを定数色で表示する
0003: // 
0004: // Copyright (c) 2002,2003 IMAGIRE Takashi. All rights reserved.
0005: // -------------------------------------------------------------
0006: 
0007: // -------------------------------------------------------------
0008: // グローバル変数
0009: // -------------------------------------------------------------
0010: float4x4 mWVP;  // ローカルから射影空間への座標変換
0011: 
0012: // -------------------------------------------------------------
0013: // 頂点シェーダからピクセルシェーダに渡すデータ
0014: // -------------------------------------------------------------
0015: struct VS_OUTPUT
0016: {
0017:     float4 Pos  : POSITION;
0018:     float4 Col  : COLOR0;
0019: };
0020: 
0021: // -------------------------------------------------------------
0022: // 頂点シェーダプログラム
0023: // -------------------------------------------------------------
0024: VS_OUTPUT VS(
0025:       float4 Pos    : POSITION,          // モデルの頂点
0026:       float3 Normal : NORMAL             // モデルの法線
0027: ){
0028:     VS_OUTPUT Out = (VS_OUTPUT)0;        // 出力データ
0029:     float4 diffuse = { 1.0f, 0.0f, 0.0f, 1.0f};
0030:     float4 amb     = { 0.3f, 0.3f, 0.3f, 1.0f};
0031:     float3 dir     = {-0.6f, 0.6f,-0.6f};
0032: 
0033:     Out.Pos = mul(Pos, mWVP);            // 座標変換
0034:     Out.Col = diffuse * max( dot(dir, Normal), 0) + amb;                     // 定数色
0035: 
0036:     return Out;
0037: }
0038: // -------------------------------------------------------------
0039: // ピクセルシェーダプログラム
0040: // -------------------------------------------------------------
0041: float4 PS(
0042:     float4 Col  : COLOR0 ) : COLOR
0043: {
0044:     return Col;
0045: }
0046: 
0047: // -------------------------------------------------------------
0048: // テクニック
0049: // -------------------------------------------------------------
0050: technique TShader
0051: {
0052:     pass P0
0053:     {
0054:         // シェーダ
0055:         VertexShader = compile vs_1_1 VS();
0056:         PixelShader  = compile ps_1_1 PS();
0057:     }
0058: }
0059: