コード例 #1
0
/**
* シェーダ解析
*/
BOOL CShaderConverter::Export(const SShaderConfig& sConfig)
{
    IZ_ASSERT(m_pCgEffect != NULL);

    VRETURN(m_Out.Open(sConfig.out));

    // ファイルヘッダ
    {
        FILL_ZERO(&m_ShdHeader, sizeof(m_ShdHeader));

        // TODO
        // magic
        // version

        m_ShdHeader.name.SetString(sConfig.name);
        m_ShdHeader.nameKey = m_ShdHeader.name.GetKeyValue();

        m_ShdHeader.sizeHeader = sizeof(m_ShdHeader);
    }

    // ファイルヘッダ分空ける
    VRETURN(m_Out.Seek(sizeof(m_ShdHeader), izanagi::E_IO_STREAM_SEEK_POS_START));

    ExportParameter(sConfig);
    ExportTexture();
    ExportSampler(sConfig);
    ExportTechnique();

    ExportPass(sConfig);

    ExportStringBuffer();

    // Export program chunk's header.
    _ExportChunkHeader(m_Out, izanagi::shader::SHD_CHUNK_MAGIC_NUMBER_PROG);

    // プログラム開始位置
    m_ShdHeader.posProgram = m_Out.GetCurPos();

    ExportProgram(sConfig);

    // Export chunk's terminater.
    //_ExportChunkHeader(m_Out, izanagi::SHD_PROGRAM_CHUNK_TERMINATER);

    // ファイルサイズ取得
    m_ShdHeader.sizeFile = m_Out.GetCurPos();

    // 先頭に戻る
    VRETURN(m_Out.Seek(0, izanagi::E_IO_STREAM_SEEK_POS_START));

    // ファイルヘッダ出力
    m_Out.Write(&m_ShdHeader, 0, sizeof(m_ShdHeader));

    m_Out.Finalize();

    return TRUE;
}
コード例 #2
0
/**
* シェーダ解析
*/
BOOL CPostEffectConverter::Export(LPCSTR lpszOutFile)
{
    IZ_ASSERT(m_pCgEffect != NULL);

    VRETURN(m_Out.Open(lpszOutFile));

    // ファイルヘッダ
    {
        FILL_ZERO(&m_PesHeader, sizeof(m_PesHeader));

        // TODO
        // magic
        // version

        m_PesHeader.sizeHeadaer = sizeof(m_PesHeader);
    }

    // ファイルヘッダ分空ける
    VRETURN(m_Out.Seek(sizeof(m_PesHeader), izanagi::E_IO_STREAM_SEEK_POS_START));

    ExportParameter();
    ExportTexture();
    ExportSampler();
    ExportTechnique();
    
    ExportPass();
    ExportUsedParamAndSamplerIdxByPass();

    ExportStringBuffer();

    // プログラム位置
    m_PesHeader.posProgram = m_Out.GetCurPos();

    ExportPSProgram();

    ExportVSProgram();

    // ファイルサイズ取得
    m_PesHeader.sizeFile = m_Out.GetCurPos();

    // 先頭に戻る
    VRETURN(m_Out.Seek(0, izanagi::E_IO_STREAM_SEEK_POS_START));

    // ファイルヘッダ出力
    m_Out.Write(&m_PesHeader, 0, sizeof(m_PesHeader));

    m_Out.Finalize();
    
    return TRUE;
}
コード例 #3
0
void AWDExporter::ExportMaterial( AWD *awd, awd_ncache *ncache, Mtl* mtl, int mtlID, int subNo) {

    TimeValue t = GetStaticFrame();
    int i;

    BOOL usediffusemap = FALSE;

    const char *name = mtl->GetName();
    int namelen = strlen( name );




    AWDMaterial *material = new AWDMaterial( AWD_MATTYPE_COLOR, name, namelen );

    AWDTexture *tex;

    for (i=0; i<mtl->NumSubTexmaps(); i++) {
        Texmap* subTex = mtl->GetSubTexmap(i);
        float amt = 1.0f;
        if (subTex) {
            // If it is a standard material we can see if the map is enabled.
            if (mtl->ClassID() == Class_ID(DMTL_CLASS_ID, 0)) {
                if (!((StdMat*)mtl)->MapEnabled(i))
                    continue;
                amt = ((StdMat*)mtl)->GetTexmapAmt(i, 0);

            }
            tex = ExportTexture(awd, ncache, subTex, mtl->ClassID(), i, material );

            if( tex && i == ID_DI ) {
                usediffusemap = true;
            }

        }
    }

    if (mtl->ClassID() == Class_ID(DMTL_CLASS_ID, 0)) {
        StdMat* std = (StdMat*)mtl;
        material->color = get_awd_color( std->GetDiffuse(t), 1.0f );

    } else {
        material->color = get_awd_color( mtl->GetDiffuse(), 1.0f );

    }



    AWD_mat_type mattype;
    if( usediffusemap ) mattype = AWD_MATTYPE_BITMAP;
    else				mattype = AWD_MATTYPE_COLOR;


    material->set_type( mattype );

    awd_ncache_add(ncache, (InterfaceServer*)mtl, material);

    awd->add_material( material );



    if (mtl->NumSubMtls() > 0)  {


        for (i=0; i<mtl->NumSubMtls(); i++) {
            Mtl* subMtl = mtl->GetSubMtl(i);
            if (subMtl && mtlList.GetMtlID( subMtl ) == -1 ) {
                ExportMaterial(awd, ncache, subMtl, 0, i);
            }
        }
    }

}