/// ****************************************************************************
/// @file   
/// @author Dr.Neeton
/// @date   200X/X/X - 2014/03/07
/// 
/// @brief  共通シェーダフラグメント（グローバル変数関連）
/// 
/// ****************************************************************************


#include "CPL_DX_Shader_CSF_Global.h"

namespace CPL {
namespace DX {
namespace Shader {
namespace CSF {


  
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// マテリアル　グローバルパラメーター構築
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Global_Material::On_SetupGlobalParameter( rout<CIV_Global> out_global_param )
{
  // マテリアル構造体定義設定
  CIVariable st_material = CPType(struct_) | CPName(zzf_GetStructName());
  CIVariable
    va_m_diffuse  = CPType(float4_) | CPName(kw_diffuse),
    va_m_emissive = CPType(float4_) | CPName(kw_emissive);
  st_material << va_m_diffuse << va_m_emissive; // マテリアル構造体へメンバ登録
  // マテリアル変数定義設定
  CIVariable
    va_g_material = CPType(st_material.GetName()) | CPName(kw_g_material);

  // 変数アイテム登録
  out_global_param
    << st_material // マテリアル構造体
    << va_g_material; // マテリアル変数
}




// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// テクスチャー　グローバルパラメーター構築
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Global_Texture::On_SetupGlobalParameter( rout<CIV_Global> out_global_param )
{
  // 
  CIVariable
    va_g_texture =
      CPType(Texture2D) | CPName(kw_g_texture) | CPNum(m_tex_num);

  //
  out_global_param << va_g_texture;
}



// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// サンプラー　グローバルパラメーター構築
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Global_Sampler::On_SetupGlobalParameter( rout<CIV_Global> out_global_param )
{
  // サンプラー変数アイテム作成
  CIVariable
    va_g_sampler =
      m_type | CPName( kw_g_sampler ) | CPNum( m_samp_num );

  // 登録
  out_global_param << va_g_sampler;
}



// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ピクセルカラー　グローバルパラメーター構築
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void Global_PixelColor::On_SetupGlobalParameter( rout<CIV_Global> out_global_param )
{
  // カラー変数アイテム作成
  CIVariable va_g_pixel_color = CPType(float4_) | CPName( kw_g_pixel_color );

  // 登録
  out_global_param << va_g_pixel_color;
}


  
} // namespace VSF
} // namespace Shader
} // namespace DX
} // namespace CPL