Beispiel #1
0
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;
}
Beispiel #2
0
BOOL CParamUtil::DoNotStrip(CGparameter param)
{
    return _DoNotStrip(param);
}
Beispiel #3
0
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;
}