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);
}
示例#2
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);
	}
示例#3
0
void CMaterial::SetValues(float* dif, float* spec, float* amb, float shin)
{
	SetDiffuse(dif);
	SetSpecular(spec);
	SetAmbient(amb);
	SetShininess(shin);
}
示例#4
0
//********************************************
// 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]);
}
示例#5
0
CMaterial::CMaterial(void)
{
	float val[4] = {0.5f,0.5f,0.5f,1.0f};
	SetSpecular(val);
	SetDiffuse(val);
	SetAmbient(val);
	SetShininess(20.0f);
}
示例#6
0
//********************************************
// 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);
}
示例#7
0
文件: GLLight.cpp 项目: kzs-sgw/GLSL
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_ );
}
示例#8
0
文件: Light.cpp 项目: DCubix/1.4.0
//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;
 }
示例#10
0
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);
}