BOOL CParamUtil::SetDescValue( izanagi::S_PES_PARAMETER& sDesc, CGparameter param) { CGparameterclass classParam = ::cgGetParameterClass(param); CGtype typeParam = _GetCGType(param); sDesc.Class = CPostEffectConvUtil::CgParamClassToIzanagiPostEffectParamClass(classParam); sDesc.Type = CPostEffectConvUtil::CgParamTypeToIzanagiPostEffectParamType(typeParam); sDesc.Rows = ::cgGetParameterRows(param); sDesc.Columns = ::cgGetParameterColumns(param); // 配列の要素数を取得 // Dimensionは0固定 sDesc.Elements = ::cgGetArraySize(param, 0); // TODO // 構造体は禁止なので計算しない sDesc.StructMembers = 0; UINT size = CPostEffectConvUtil::GetSizeFromCgType(typeParam); sDesc.Bytes = size * sDesc.Rows * sDesc.Columns; if (sDesc.Elements > 0) { sDesc.Bytes *= sDesc.Elements; } sDesc.hasAnn = HasAnn(param); sDesc.Public = _IsPublic(param); sDesc.DoNotStrip = _DoNotStrip(param); return TRUE; }
BOOL CParamUtil::DoNotStrip(CGparameter param) { return _DoNotStrip(param); }
BOOL CParamUtil::SetDescValue( const SShaderConfig& config, izanagi::shader::S_SHD_PARAMETER& sDesc, CGparameter param) { CGparameterclass classParam = ::cgGetParameterClass(param); CGtype typeParam = _GetCGType(param); sDesc.Class = CShaderConvUtil::CgParamClassToIzanagiShaderParamClass(classParam); sDesc.Type = CShaderConvUtil::CgParamTypeToIzanagiShaderParamType(typeParam); sDesc.originalType = sDesc.Type; sDesc.Rows = ::cgGetParameterRows(param); sDesc.Columns = ::cgGetParameterColumns(param); // 配列の要素数を取得 // Dimensionは0固定 sDesc.Elements = ::cgGetArraySize(param, 0); #if 0 // For debug... auto name = ::cgGetParameterName(param); printf("Parameter[%s]\n", name); #define _SHD_PARAM_TYPE(type) {izanagi::shader::E_SHADER_PARAMETER_TYPE_##type, #type} struct { izanagi::shader::E_SHADER_PARAMETER_TYPE type; const char* name; } types[] = { _SHD_PARAM_TYPE(FLOAT), _SHD_PARAM_TYPE(FLOAT1), _SHD_PARAM_TYPE(FLOAT4), _SHD_PARAM_TYPE(FLOAT4x4), }; IZ_BOOL isMatch = IZ_FALSE; for (IZ_UINT i = 0; i < COUNTOF(types); i++) { if (types[i].type == sDesc.Type) { printf(" Type(%s)\n", types[i].name); isMatch = IZ_TRUE; break; } } if (isMatch) { printf(" Type(Unknown)\n"); } printf(" Rows(%d) Columns(%d) Elements(%d)\n", sDesc.Rows, sDesc.Columns, sDesc.Elements); #endif // TODO // 構造体は禁止なので計算しない sDesc.StructMembers = 0; UINT size = CShaderConvUtil::GetSizeFromCgType(typeParam); sDesc.Bytes = size * sDesc.Rows * sDesc.Columns; if (sDesc.Elements > 0) { sDesc.Bytes *= sDesc.Elements; } sDesc.hasAnn = HasAnn(param); sDesc.Public = _IsPublic(param); sDesc.DoNotStrip = _DoNotStrip(param); return TRUE; }