void KX_BlenderMaterial::ActivateMat( RAS_IRasterizer* rasty, TCachingInfo& cachingInfo )const { KX_BlenderMaterial *tmp = const_cast<KX_BlenderMaterial*>(this); if (mLastShader) { mLastShader->SetProg(false); mLastShader= NULL; } if (mLastBlenderShader) { mLastBlenderShader->SetProg(false); mLastBlenderShader= NULL; } if (GetCachingInfo() != cachingInfo) { if (!cachingInfo) tmp->setTexData( false,rasty ); cachingInfo = GetCachingInfo(); if (rasty->GetDrawingMode() == RAS_IRasterizer::KX_TEXTURED) tmp->setTexData( true,rasty ); else if (rasty->GetDrawingMode() == RAS_IRasterizer::KX_SHADOW && mMaterial->alphablend != GEMAT_SOLID && !rasty->GetUsingOverrideShader()) tmp->setTexData(true, rasty); else tmp->setTexData( false,rasty); if (mMaterial->ras_mode &TWOSIDED) rasty->SetCullFace(false); else rasty->SetCullFace(true); if ((mMaterial->ras_mode &WIRE) || (rasty->GetDrawingMode() <= RAS_IRasterizer::KX_WIREFRAME)) { if (mMaterial->ras_mode &WIRE) rasty->SetCullFace(false); rasty->SetLines(true); } else rasty->SetLines(false); ActivatGLMaterials(rasty); ActivateTexGen(rasty); } //ActivatGLMaterials(rasty); //ActivateTexGen(rasty); }
void KX_BlenderMaterial::ActivatShaders( RAS_IRasterizer* rasty, TCachingInfo& cachingInfo)const { KX_BlenderMaterial *tmp = const_cast<KX_BlenderMaterial*>(this); // reset... if (tmp->mMaterial->IsShared()) cachingInfo =0; if (mLastBlenderShader) { mLastBlenderShader->SetProg(false); mLastBlenderShader= NULL; } if (GetCachingInfo() != cachingInfo) { if (!cachingInfo) tmp->setShaderData(false, rasty); cachingInfo = GetCachingInfo(); if (rasty->GetDrawingMode() == RAS_IRasterizer::KX_TEXTURED) tmp->setShaderData(true, rasty); else tmp->setShaderData(false, rasty); if (mMaterial->ras_mode &TWOSIDED) rasty->SetCullFace(false); else rasty->SetCullFace(true); if ((mMaterial->ras_mode &WIRE) || (rasty->GetDrawingMode() <= RAS_IRasterizer::KX_WIREFRAME)) { if (mMaterial->ras_mode &WIRE) rasty->SetCullFace(false); rasty->SetLines(true); } else rasty->SetLines(false); ActivatGLMaterials(rasty); ActivateTexGen(rasty); } //ActivatGLMaterials(rasty); //ActivateTexGen(rasty); }
void KX_PolygonMaterial::DefaultActivate(RAS_IRasterizer* rasty, TCachingInfo& cachingInfo) const { if (GetCachingInfo() != cachingInfo) { if (!cachingInfo) GPU_set_tpage(NULL, 0, 0); cachingInfo = GetCachingInfo(); if ((m_drawingmode & RAS_IRasterizer::KX_TEX)&& (rasty->GetDrawingMode() == RAS_IRasterizer::KX_TEXTURED)) { Image *ima = (Image*)m_tface->tpage; GPU_update_image_time(ima, rasty->GetTime()); GPU_set_tpage(m_tface, 1, m_alphablend); } else GPU_set_tpage(NULL, 0, 0); if(m_drawingmode & RAS_IRasterizer::KX_BACKCULL) rasty->SetCullFace(true); else rasty->SetCullFace(false); if ((m_drawingmode & RAS_IRasterizer::KX_LINES) || (rasty->GetDrawingMode() <= RAS_IRasterizer::KX_WIREFRAME)) rasty->SetLines(true); else rasty->SetLines(false); rasty->SetSpecularity(m_specular[0],m_specular[1],m_specular[2],m_specularity); rasty->SetShinyness(m_shininess); rasty->SetDiffuse(m_diffuse[0], m_diffuse[1],m_diffuse[2], 1.0); if (m_material) rasty->SetPolygonOffset(-m_material->zoffs, 0.0); } //rasty->SetSpecularity(m_specular[0],m_specular[1],m_specular[2],m_specularity); //rasty->SetShinyness(m_shininess); //rasty->SetDiffuse(m_diffuse[0], m_diffuse[1],m_diffuse[2], 1.0); //if (m_material) // rasty->SetPolygonOffset(-m_material->zoffs, 0.0); }