Example #1
0
		Effect* CreateEffect(const char* i_pBinaryMaterialFile)
		{
			// Load effects
			Effect* pResult = LoadEffectData(i_pBinaryMaterialFile);
			if (pResult)
				return pResult;
			else
				return nullptr;
		}
void ModContentManager::LoadGameData()
{
	// Note: load order dependencies

	// Load Effect
	LoadEffectData(mEffectData);

	// Load Actor
	LoadActorData(mActorData);

	// Load Projectiles
	LoadProjectileData(mProjectileData);

}
Example #3
0
void MeshEntity::QuickRender()
{
    traceInFast(MeshEntity::QuickRender);

    if(!mesh)
        return;

    if(GetActiveEffect())
        LoadEffectData();
    else
    {
        MatrixPush();
        MatrixMultiply(invTransform);
        if(bHasScale) MatrixScale(scale);
    }

    LoadVertexBuffer(VertBuffer);
    LoadIndexBuffer(mesh->IdxBuffer);

    for(DWORD i=0;i<mesh->nSections;i++)
    {
        DrawSection &section  = mesh->SectionList[i];
        Material    *material = MaterialList[i];

        if(!material)
            continue;

        if(material->effect == GetActiveEffect())
            material->LoadParameters();

        if(material->flags & MATERIAL_TWOSIDED)
        {
            GSCullMode cullMode;
            cullMode = GetCullMode();
            SetCullMode(GS_NEITHER);
            GS->Draw(GS_TRIANGLES, 0, section.startFace*3, section.numFaces*3);
            SetCullMode(cullMode);
        }
        else
            GS->Draw(GS_TRIANGLES, 0, section.startFace*3, section.numFaces*3);
    }

    if(GetActiveEffect())
        ResetEffectData();
    else
        MatrixPop();

    traceOutFast;
}
Example #4
0
void MeshEntity::RenderInitialPass()
{
    traceInFast(MeshEntity::RenderInitialPass);

    profileSegment("MeshEntity::RenderInitialPass");

    if(!mesh)
        return;

    LoadEffectData();

    LoadVertexBuffer(VertBuffer);       
    LoadIndexBuffer(mesh->IdxBuffer);

    for(DWORD i=0;i<mesh->nSections;i++)
    {
        DrawSection &section  = mesh->SectionList[i];
        Material    *material = MaterialList[i];

        if(material && section.numFaces)
        {
            if(material->effect == GetActiveEffect())
            {
                material->LoadParameters();

                if(material->flags & MATERIAL_TWOSIDED)
                {
                    GSCullMode cullMode;
                    cullMode = GetCullMode();
                    SetCullMode(GS_NEITHER);
                    Draw(GS_TRIANGLES, 0, section.startFace*3, section.numFaces*3);
                    SetCullMode(cullMode);
                }
                else
                    Draw(GS_TRIANGLES, 0, section.startFace*3, section.numFaces*3);
            }
        }
    }

    ResetEffectData();

    traceOutFast;
}
Example #5
0
void MeshEntity::RenderLightmaps()
{
    traceInFast(MeshEntity::RenderLightmaps);

    if(!mesh || !bLightmapped)
        return;

    LoadEffectData();

    LoadVertexBuffer(VertBuffer);       
    LoadIndexBuffer(mesh->IdxBuffer);

    HANDLE param[3];

    param[0] = level->GetLightmapU();//GetActiveEffect()->GetParameterByName(TEXT("lightmapU"));
    param[1] = level->GetLightmapV();//GetActiveEffect()->GetParameterByName(TEXT("lightmapV"));
    param[2] = level->GetLightmapW();//GetActiveEffect()->GetParameterByName(TEXT("lightmapW"));

    if(lightmap.X)
    {
        GetActiveEffect()->SetTexture(param[0], lightmap.X);
        GetActiveEffect()->SetTexture(param[1], lightmap.Y);
        GetActiveEffect()->SetTexture(param[2], lightmap.Z);
    }
    else
    {
        //actually it should never get here
        Texture *black = GetTexture(TEXT("Base:Default/black.tga"));
        GetActiveEffect()->SetTexture(param[0], black);
        GetActiveEffect()->SetTexture(param[1], black);
        GetActiveEffect()->SetTexture(param[2], black);
    }

    for(DWORD i=0;i<mesh->nSections;i++)
    {
        DrawSection &section  = mesh->SectionList[i];
        Material    *material = MaterialList[i];

        if(material && section.numFaces)
        {
            if(material->effect == GetActiveEffect())
            {
                material->LoadParameters();

                if(material->flags & MATERIAL_TWOSIDED)
                {
                    GSCullMode cullMode;
                    cullMode = GetCullMode();
                    SetCullMode(GS_NEITHER);
                    Draw(GS_TRIANGLES, 0, section.startFace*3, section.numFaces*3);
                    SetCullMode(cullMode);
                }
                else
                    Draw(GS_TRIANGLES, 0, section.startFace*3, section.numFaces*3);
            }
        }
    }

    ResetEffectData();

    traceOutFast;
}