Light::Light() { /* setType(D3DLIGHT_POINT); setDiffuse(r, g, b, a); setAmbient(0, 0, 0, 0); setRange((float)sqrt(FLT_MAX)); setSpecular(r, g, b, a); setAttenuation(1, 0, 0); */ SetType(LIGHT_POINT); SetDiffuse(1, 1, 1, 1); SetSpecular(1, 1, 1, 1); SetAmbient(0, 0, 0, 0); SetRange((float)sqrt(FLT_MAX)); SetAttenuation(1, 0, 0); SetThetaPhi(1.f, 2.f); SetFalloff(1.f); SetLocation(0, 0, 0); SetDirection(0, 1, 0); }
void xPointLight::Serialize(xSerializer & Serializer) { xObj::Serialize(Serializer); int version = 0; if (Serializer.IsSave()) { Serializer << version; Serializer << Position; Serializer << Diffuse; Serializer << Specular; Serializer << Range; } else { Serializer >> version; if (version == 0) { Serializer >> Position; Serializer >> Diffuse; Serializer >> Specular; Serializer >> Range; } SetPosition(Position); SetDiffuse(Diffuse); SetSpecular(Specular); SetRange(Range); }
void CMaterial::SetValues(float* dif, float* spec, float* amb, float shin) { SetDiffuse(dif); SetSpecular(spec); SetAmbient(amb); SetShininess(shin); }
//******************************************** // Copy //******************************************** void CMaterial::Copy(CMaterial *pMaterial) { SetSpecular(pMaterial->GetSpecular()[0],pMaterial->GetSpecular()[1],pMaterial->GetSpecular()[2],pMaterial->GetSpecular()[3]); SetAmbient(pMaterial->GetAmbient()[0],pMaterial->GetAmbient()[1],pMaterial->GetAmbient()[2],pMaterial->GetAmbient()[3]); SetDiffuse(pMaterial->GetDiffuse()[0],pMaterial->GetDiffuse()[1],pMaterial->GetDiffuse()[2],pMaterial->GetDiffuse()[3]); SetEmission(pMaterial->GetEmission()[0],pMaterial->GetEmission()[1],pMaterial->GetEmission()[2],pMaterial->GetEmission()[3]); SetShininess(pMaterial->GetShininess()[0]); }
CMaterial::CMaterial(void) { float val[4] = {0.5f,0.5f,0.5f,1.0f}; SetSpecular(val); SetDiffuse(val); SetAmbient(val); SetShininess(20.0f); }
//******************************************** // Constructor //******************************************** CMaterial::CMaterial() { // Default SetAmbient(0.0f,0.33f,0.5f,1.0f); SetDiffuse(0.5f,0.5f,0.5f,1.0f); SetSpecular(1.0f,1.0f,1.0f,1.0f); SetShininess(84.0f); SetEmission(0.0f,0.0f,0.0f,1.0f); }
GLLight::GLLight( GLenum GL_LIGHTn, GLColor ambient, GLColor diffuse, GLColor specular, GLPosition position ) { glEnable( GL_LIGHTING ); lightNum_ = GL_LIGHTn; glEnable ( lightNum_ ); SetAmbient ( ambient_ ); SetDiffuse ( diffuse_ ); SetSpecular( specular_ ); SetPosition( position_ ); }
//This function is specially used for Collada format CVoid CLight::SetColor( CColor4f& color ) { m_color = color; CFloat diffuse[4] = { color.r, color.g, color.b, color.a }; CFloat specular[4] = { g_lightProperties.m_specularColor[0], g_lightProperties.m_specularColor[1], g_lightProperties.m_specularColor[2], g_lightProperties.m_specularColor[3] }; CFloat ambient[4] = {g_lightProperties.m_ambientColor[0], g_lightProperties.m_ambientColor[1], g_lightProperties.m_ambientColor[2], g_lightProperties.m_ambientColor[3] }; //It seems that collada doesn't specify the ambient property SetAmbient( ambient ); SetDiffuse( diffuse ); SetSpecular( specular ); SetShininess(g_lightProperties.m_shininess); }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------ MaterialCSPtr PrimitiveEntityFactory::CreateStaticBlinnColourMaterial(const Colour& in_colour) const { auto materialName = "_PrimitiveStaticBlinnColour(" + ToString(in_colour) + ")"; auto material = m_resourcePool->GetResource<Material>(materialName); if (material == nullptr) { auto texture = m_resourcePool->LoadResource<Texture>(StorageLocation::k_chilliSource, "Textures/Blank.csimage"); auto mutableMaterial = m_materialFactory->CreateStaticBlinnShadowed(materialName, texture); mutableMaterial->SetEmissive(Colour::k_black); mutableMaterial->SetAmbient(in_colour); mutableMaterial->SetDiffuse(in_colour); mutableMaterial->SetSpecular(Colour(0.5f, 0.5f, 0.5f, 10.0f)); mutableMaterial->SetLoadState(Resource::LoadState::k_loaded); material = mutableMaterial; } return material; }
xPointLight::xPointLight(const TString128 & name) : xObj(name) { Position = Vec3::Zero; Diffuse = Color4::White; Specular = Color4::Black; Range = 20; mLight = World::Instance()->CreateLight(name); mNode = World::Instance()->CreateSceneNode(); mNode->Attach(mLight); mNode->GetFlag().SetFlags(PICK_Flag); mLight->SetBounds(Aabb(-1, -1, -1, 1, 1, 1), Sphere(0, 0, 0, 1)); mLight->SetType(LT_POINT); Technique * tech = xApp::Instance()->GetHelperShaderLib()->GetTechnique("PointLight"); mBillboard = BillboardManager::Instance()->Create(tech); mBillboard->SetWidth(5); mBillboard->SetHeight(5); Material * mat = mBillboard->GetMaterial(); mat->SetDepthWrite(false); mat->SetBlendMode(BM_ALPHA_BLEND); mat->SetDiffuseMap("Editor\\PointLight.png"); mNode->Attach(mBillboard); SetScale(Range); SetDiffuse(Diffuse); SetSpecular(Specular); }