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; }
DiMaterialPtr DiMaterial::QuickCreate(const DiString& name, const DiString& vs, const DiString& ps, uint64 flag ) { DiMaterialPtr mat = DiAssetManager::GetInstance().CreateOrReplaceAsset<DiMaterial>(name); mat->SetShaderFlag(flag); mat->LoadShader(vs,ps); return mat; }
DiMaterialPtr DiMaterial::QuickCreate( const DiString& vs, const DiString& ps , uint64 flag) { static int quickcreateID = 0; DiString name; name.Format("quick_%d", quickcreateID++); DiMaterialPtr mat = DiAssetManager::GetInstance().CreateOrReplaceAsset<DiMaterial>(name); mat->SetShaderFlag(flag); mat->LoadShader(vs,ps); return mat; }