コード例 #1
0
ファイル: Material.cpp プロジェクト: wangyanxing/Demi3D
    DiMaterialPtr DiMaterial::Clone( const DiString& newname )
    {
        DiMaterialPtr mat = DiAssetManager::GetInstance().CreateManualAsset<DiMaterial>(newname);

        mat->SetShaderFlag(mat->mShaderFlag);
        mat->LoadShader(mVertexShader->GetName().ExtractBaseName(),
            mPixelShader->GetName().ExtractBaseName());

        mat->mCullMode        = mCullMode;
        mat->mDepthWrite      = mDepthWrite;
        mat->mDepthCheck      = mDepthCheck;
        mat->mWireframe       = mWireframe;
        mat->mForceWireframe  = mForceWireframe;
        mat->mBlendMode       = mBlendMode;
        mat->mInstanceState   = mInstanceState;
        mat->mOpacity         = mOpacity;
        mat->mShininess       = mShininess;
        mat->mAmbient         = mAmbient;
        mat->mDiffuse         = mDiffuse;
        mat->mSpecular        = mSpecular;

        mShaderParameter->CloneVarsTo(mat->GetShaderParameter());
        
        return mat;
    }
コード例 #2
0
ファイル: ModelConverter.cpp プロジェクト: redkaras/Demi3D
void ModelConverter::WriteSimpleMaterial( int boneWeightsNum, const DiString& filename )
{
	DiMaterialPtr mat = Demi::DiAssetManager::GetInstancePtr(
		)->CreateOrReplaceAsset<DiMaterial>("_tempSimple");

	if (boneWeightsNum == 0)
	{
		mat->LoadVertexShader(DiMaterialDefine::STATIC_MESH_SHADER_NAME);
	}
	else if (boneWeightsNum == 1)
	{
        mat->LoadVertexShader(DiMaterialDefine::SKINING_1_WEIGHT_SHADER);
	}
	else if (boneWeightsNum == 2)
	{
        mat->LoadVertexShader(DiMaterialDefine::SKINING_2_WEIGHTS_SHADER);
	}
	else
	{
        mat->LoadVertexShader(DiMaterialDefine::SKINING_4_WEIGHTS_SHADER);
	}

    mat->LoadPixelShader(DiMaterialDefine::DIFFUSE_PIXEL_SHADER);

	Demi::DiShaderParameter* materialIns = mat->GetShaderParameter();
	materialIns->WriteTexture2D("diffuseTexture","_default.dds");

	DiMaterialSerializer mas;
	mas.SaveMaterial(filename,mat.get());
}
コード例 #3
0
ファイル: Material.cpp プロジェクト: wangyanxing/Demi3D
    Demi::DiMaterialPtr DiMaterial::Clone()
    {
        DiMaterialPtr mat = QuickCreate(mVertexShader->GetName().ExtractBaseName(),
            mPixelShader->GetName().ExtractBaseName(), mShaderFlag);

        mat->mCullMode        = mCullMode;
        mat->mDepthWrite      = mDepthWrite;
        mat->mDepthCheck      = mDepthCheck;
        mat->mWireframe       = mWireframe;
        mat->mForceWireframe  = mForceWireframe;
        mat->mBlendMode       = mBlendMode;
        mat->mInstanceState   = mInstanceState;
        mat->mOpacity         = mOpacity;
        mat->mShininess       = mShininess;
        mat->mAmbient         = mAmbient;
        mat->mDiffuse         = mDiffuse;
        mat->mSpecular        = mSpecular;

        mShaderParameter->CloneVarsTo(mat->GetShaderParameter());

        return mat;
    }