/// <summary> /// テクニック名の追加 /// </summary> /// <param name="idx">テクニックインデックス</param> /// <param name="name">idxのパラメーター名</param> /// <param name="type">name 型のタイプ</param> /// <param name="arySize">typeが配列の場合、そのサイズ</param> /// <returns></returns> public int RegisterAddPara(int idx, string name, UtilValueType type, int arySize = 0) { MCUtilValueEX p = new MCUtilValueEX(); MC_EFF_VALUE_MGR pTmp; if (m_TPars.Count <= idx) { throw new Exception("RegisterAddPara(" + idx + "," + name + ") テクニックインデックスが不正です"); } pTmp = m_TPars[idx]; if (pTmp.index.ContainsKey(name)) { throw new Exception("RegisterAddPara(" + idx + "," + name + ") 変数が既に登録されています"); } switch (type) { case UtilValueType.FLOAT: case UtilValueType.ARY_FLOAT: case UtilValueType.BOOL: case UtilValueType.ARY_BOOL: case UtilValueType.INT: case UtilValueType.ARY_INT: p.sv = m_spCoreEffect.GetVariableByName(name).AsScalar(); if (!p.sv.IsValid) { return(-1); } break; case UtilValueType.FLOAT2: case UtilValueType.FLOAT3: p.vv = m_spCoreEffect.GetVariableByName(name).AsVector(); if (!p.vv.IsValid) { return(-1); } break; case UtilValueType.FLOAT4x4: p.mv = m_spCoreEffect.GetVariableByName(name).AsMatrix(); if (!p.mv.IsValid) { return(-1); } break; } p.Create(type, arySize); pTmp.item.Add(p); pTmp.index.Add(name, pTmp.item.Count - 1); return(pTmp.item.Count - 1); }
/// <summary> /// /// </summary> /// <param name="name"></param> protected void GetVariableMatrix(out EffectMatrixVariable val, string name) { val = m_coreEffect.GetVariableByName(name).AsMatrix(); if (!val.IsValid) { throw new Exception("変数が存在しません。エフェクトファイル[common.hlsl]内に" + name + "が存在しません。"); } }