Example #1
0
Material Material::cloneMe()
{
    String name = mMaterial->getName();

    unsigned int i = 0;
    Ogre::MaterialPtr ptr = Ogre::MaterialManager::getSingletonPtr()->getByName(name+StringUtils::toString(i));
    while(ptr.getPointer())
    {
        ++i;// keep going until we get a unique name
        ptr = Ogre::MaterialManager::getSingletonPtr()->getByName(name+StringUtils::toString(i));
    }

    Ogre::MaterialPtr newptr = mMaterial->clone(name+StringUtils::toString(i));

    return Material(newptr.getPointer());
}
Example #2
0
SoftBody::Material * SoftBody::PushMaterial()
{
    PhysicsFn->SelectMemory( TEXT("SoftBodies") );
    Material * pMaterial = New Material();
    PhysicsFn->UnSelectMemory();

    pMaterial->fLinearStiffness = 0.0f;
    pMaterial->fAngularStiffness = 0.0f;
    pMaterial->fAreaStiffness = 0.0f;
    pMaterial->fVolumeStiffness = 0.0f;
    pMaterial->dwFlags = 0;

    m_arrMaterials.Push( pMaterial );

    return pMaterial;
}
Example #3
0
Material AasRenderer::CreateGeometryShadowMaterial(gfx::RenderingDevice &device)
{
	BlendState blendState;
	blendState.blendEnable = true;
	blendState.srcBlend = D3DBLEND_SRCALPHA;
	blendState.destBlend = D3DBLEND_INVSRCALPHA;
	RasterizerState rasterizerState;
	rasterizerState.cullMode = D3DCULL_NONE;
	DepthStencilState depthStencilState;
	depthStencilState.depthWrite = false;

	auto vs{ device.GetShaders().LoadVertexShader("shadow_geom_vs") };
	auto ps{ device.GetShaders().LoadPixelShader("diffuse_only_ps") };

	return Material(blendState, depthStencilState, rasterizerState, {}, vs, ps);
}
Example #4
0
ParserResult MaterialSymbol::ParseLine(const std::vector<std::string>& aParameters, Scene& aOutput){
    if(aParameters.size() != 6){
        return kParseMalformedLine;
    }

    double se, diffuse, specular, shininess, reflectivity;
    REQUIRE_PARSE_SUCCESS(Misc::GetDouble(aParameters[1], &se));
    REQUIRE_PARSE_SUCCESS(Misc::GetDouble(aParameters[2], &diffuse));
    REQUIRE_PARSE_SUCCESS(Misc::GetDouble(aParameters[3], &specular));
    REQUIRE_PARSE_SUCCESS(Misc::GetDouble(aParameters[4], &shininess));
    REQUIRE_PARSE_SUCCESS(Misc::GetDouble(aParameters[5], &reflectivity));

    aOutput.mMaterials.push_back(Material(se, diffuse, specular, shininess, reflectivity));

    return kParseSuccess;
}
Material SceneSettingReader::readMaterial()
{
    settings_.beginGroup("material");
    settings_.beginGroup("diffuse");
    const Color diffuse = readColor();
    settings_.endGroup();
    settings_.beginGroup("specular");
    const Color specular = readColor();
    settings_.endGroup();
    settings_.beginGroup("ambient");
    const Color ambient = readColor();
    settings_.endGroup();
    const double shininess = settings_.value("shininess").toDouble();
    settings_.endGroup();
    return Material(specular, diffuse, ambient, shininess);
}
Example #6
0
void MainMenu::init(Game* game)
{
	// Important to set the game for changeState() to work!
	setGame(game);

	// Create the menu.
	mMenu = new Menu("MainMenu", NavigationType::MOUSE, HOR); 
	mMenu->setSize(880, 700, 256, 512);
	mMenu->addMenuItem(new MenuItem("SelectLevel", "data/imgs/buttons/play_standard.png", "data/imgs/buttons/play_glow.png"));
	mMenu->addMenuItem(new MenuItem("About", "data/imgs/buttons/about_standard.png", "data/imgs/buttons/about_glow.png"));
	mMenu->addMenuItem(new MenuItem("Quit", "data/imgs/buttons/quit_standard.png", "data/imgs/buttons/quit_glow.png"));
	mMenu->buildMenu(116*1.5, 50*1.5);
	mMenu->connect(&MainMenu::menuMessage, this);

	// Side menu.
	mAboutMenu = new Menu("SideMenu", NavigationType::MOUSE, HOR); 
	mAboutMenu->setSize(1000, 700, 256, 512);
	MenuItem* item = new MenuItem("Back", "data/imgs/buttons/back_standard.png", "data/imgs/buttons/back_glow.png");
	mAboutMenu->addMenuItem(item);
	mAboutMenu->buildMenu(116*1.5, 50*1.5);
	mAboutMenu->connect(&MainMenu::menuMessage, this);

	// Create the world.
	mWorld = new World();
	mLight = new Light(D3DXVECTOR3(0, 25, 0), D3DXVECTOR3(0, -1, 0), Material(WHITE, 0), 32, 1600.0f);
	mWorld->addLight(mLight); 
	mWorld->addAmbientLight(D3DCOLOR_ARGB(200, 100, 100, 100));

	mLogo = gGraphics->loadTexture("data/imgs/logo.png");
	mAboutTexture = gGraphics->loadTexture("data/imgs/about.png");

	// Set the graphics light list.
	gGraphics->setLightList(mWorld->getLights());

	// Setup the camera.
	gCamera->setPosition(D3DXVECTOR3(0, 5000, 0));
	gCamera->setDirection(D3DXVECTOR3(0, -0.6, 0.4));

	ShowCursor(true);

	gSound->muteMusic(false);
	gSound->playMusic("data/sound/menu_loop.wav", true, 0);
	gSound->setVolume(0.15f);

	mShowingAbout = false;
}
bool GraphicsInit()
{
    graphicsEngine  = new Renderer();
    customScene     = new CustomScene("MeshScene", graphicsEngine);
    
    // Set the lights
    globalLight     = new Light(Material(MaterialWhite), glm::vec4(0.00001, 2.0, 25.0, 1.0));
    customScene->addLight(globalLight);
    
    // Camera's are added in the CustomScene's constructor
    customModel     = new CustomModel( customScene, NULL, None );
    customScene->addModel(customModel);
    graphicsEngine->initializeScenes();
    graphicsEngine->initializeScenes();
    
    return true;
}
Example #8
0
//===================================================================
Mesh::Mesh(const Mesh &mesh)
{
    // copy ctor
    mShaderProgram = new QOpenGLShaderProgram(this);

    mDebugView = mesh.mDebugView;
    mIndexBuffer = QOpenGLBuffer(mesh.mIndexBuffer);
    mMode = mesh.mMode;
    mTextureImage = mesh.mTextureImage;
    setTextureImage(mTextureImage);

    for (int index = 0; index < mesh.mVertices.count(); index++)
          mVertices.append(mesh.vertices().at(index)) ;

    addMaterial(Material());
    mOpacity = mesh.mOpacity;
}
Example #9
0
//----------------------------------------------------------------------------------------------
DebugMultiPoly::DebugMultiPoly()
{
    m_origin = Vector3f();
    m_firstColor = Color4f();
    m_timeToLiveSeconds = 0.f;
    m_killNextFrame = false;
    m_shouldBeRemoved = false;
    m_hasTexture = false;
    m_material = Material();
    m_material.m_useVBO = true;
    //m_VBOOffset = 0;
    genVBO();
    //Texture* currTex = new Texture(".\\Data\\cobblestonesDiffuse.png");
    //m_material.m_useVBO = true;
    //m_material.m_useDiffuse = true;
    //m_material.m_useShaderProgram=true;
    ////currMat-._useShaderProgram = true;
    //m_material.m_diffuseID = currTex->m_openGLTextureID;
}
Example #10
0
void TPZBndCond::Clone(std::map<int, TPZAutoPointer<TPZMaterial> > &matvec) {
    int matid = Id();

    TPZAutoPointer<TPZMaterial> refmaterial = Material();
    TPZAutoPointer<TPZMaterial> newrefmaterial;
    int refmatid = 0;
    if(refmaterial) {
        refmaterial->Clone(matvec);
        refmatid = refmaterial->Id();
        newrefmaterial = matvec[refmatid];
    }
    std::map<int, TPZAutoPointer<TPZMaterial> >::iterator matit;
    matit = matvec.find(matid);
    if(matit == matvec.end())
    {
        TPZAutoPointer<TPZMaterial> newmat = TPZAutoPointer<TPZMaterial>(new TPZBndCond(*this, newrefmaterial));
        matvec[matid] = newmat;
    }
}
Example #11
0
void Graphics::drawTest(ID3DXMesh* mesh, IDirect3DTexture9* texture, D3DXVECTOR3 position, D3DXVECTOR3 rotation)
{
	HR(mFX->SetTechnique(mhTexTech));

	D3DXMATRIX M;

	float rotY = atan2f(rotation.x, rotation.z);
	D3DXMatrixRotationY(&M, rotY);

	setEffectData(texture, position, Dimensions(500), Material(), 0, M, true);

	HR(mFX->Begin(0, 0));
	HR(mFX->BeginPass(0));

	mesh->DrawSubset(0);

	HR(mFX->EndPass());
	HR(mFX->End());
}
Example #12
0
global func FindPosInMat(string sMat, int iXStart, int iYStart, int iWidth, int iHeight, int iSize)
{
	var iX, iY;
	var iMaterial = Material(sMat);
	for(var i = 0; i < 500; i++)
	{
		iX = AbsX(iXStart+Random(iWidth));
		iY = AbsY(iYStart+Random(iHeight));
		if(GetMaterial(iX,iY)==iMaterial &&
		   GetMaterial(iX+iSize,iY+iSize)==iMaterial &&
		   GetMaterial(iX+iSize,iY-iSize)==iMaterial &&
		   GetMaterial(iX-iSize,iY-iSize)==iMaterial &&
		   GetMaterial(iX-iSize,iY+iSize)==iMaterial
		) {
			return [iX, iY]; // Location found.
		}
	}
	return 0; // No location found.
}
bool GraphicsInit()
{
    graphicsEngine = new Renderer();
    scene1 = new Scene("MeshScene", graphicsEngine);
    scene1->addLight(new Light(Material(MaterialWhite),glm::vec4(0.0, 0.0, 10.0, 1.0)));
    
    // Base
    Base =  new ObjLoader	( scene1, NULL, CUBE, None );
    Base->SetMaterial(Material(MaterialSilver));
    Base->SetName(std::string("Base"));
    Base->ScaleLocal(1.5, 0.25, 1.5);
    
    // Stand
    Stand =  new ObjLoader	( scene1, Base, SEMI_HOLLOW_CYLINDER, None );
    Stand->SetMaterial(Material(MaterialSilver));
    Stand->SetName(std::string("Stand"));
    Stand->Translate(0.0, 4.0, 0.0);
    Stand->ScaleLocal(0.5, 4.0, 0.5);
    
    // Motor Shaft
    MotorShaft =  new ObjLoader	( scene1, Stand, CUBE, None );
    MotorShaft->SetMaterial(Material(MaterialSilver));
    MotorShaft->SetName(std::string("MotorShaft"));
    MotorShaft->Translate(0.0, 4.0, 1.0);
    MotorShaft->ScaleLocal(0.5, 0.5, 2.0);
    
    // Motor Engine
    Sphere =  new ObjLoader	( scene1, MotorShaft, SPHERE, None );
    Sphere->SetMaterial(Material(MaterialGold));
    Sphere->Translate(0.0, 0.0, 2.0);
    Sphere->SetName(std::string("Sphere"));
    
    // Fan Blades
    for(int i=0; i<360; i+=360/18){
        CubePlane =  new ObjLoader	( scene1, Sphere, CUBE, None );
        CubePlane->SetMaterial(Material(MaterialCopper));
        CubePlane->SetName(std::string("FanBlade"));
        CubePlane->Translate(0.0, 2.0, 0.0);
        CubePlane->SetCenter(glm::vec3(0.0, -2.0, 0.0));
        CubePlane->ScaleLocal(0.20, 2.0, 0.20);
        CubePlane->Rotate(i, 0.0, 0.0, 1.0);
    }
    scene1->addModel( Base);
    graphicsEngine->initializeScenes();
//    Sphere->SetVisible(!true, true);
//    Sphere->SetVisible(true, !true);
    Base->Rotate(45.0, 0.0, 1.0, 0.0);
//    Sphere->SetVisible(true, true);
    return true;
}
Example #14
0
UMaterial* UGTCaptureComponent::GetMaterial(FString InModeName = TEXT(""))
{
	// Load material for visualization
	static TMap<FString, FString>* MaterialPathMap = nullptr;
	if (MaterialPathMap == nullptr)
	{
		MaterialPathMap = new TMap<FString, FString>();
		MaterialPathMap->Add(TEXT("depth"), TEXT("Material'/UnrealCV/SceneDepthWorldUnits.SceneDepthWorldUnits'"));
    MaterialPathMap->Add(TEXT("plane_depth"), TEXT("Material'/UnrealCV/ScenePlaneDepthWorldUnits.ScenePlaneDepthWorldUnits'"));
		MaterialPathMap->Add(TEXT("vis_depth"), TEXT("Material'/UnrealCV/SceneDepth.SceneDepth'"));
		MaterialPathMap->Add(TEXT("debug"), TEXT("Material'/UnrealCV/debug.debug'"));
		// MaterialPathMap->Add(TEXT("object_mask"), TEXT("Material'/UnrealCV/VertexColorMaterial.VertexColorMaterial'"));
		MaterialPathMap->Add(TEXT("normal"), TEXT("Material'/UnrealCV/WorldNormal.WorldNormal'"));

		FString OpaqueMaterialName = "Material'/UnrealCV/OpaqueMaterial.OpaqueMaterial'";
		MaterialPathMap->Add(TEXT("opaque"), OpaqueMaterialName);
	}

	static TMap<FString, UMaterial*>* StaticMaterialMap = nullptr;
	if (StaticMaterialMap == nullptr)
	{
		StaticMaterialMap = new TMap<FString, UMaterial*>();
		for (auto& Elem : *MaterialPathMap)
		{
			FString ModeName = Elem.Key;
			FString MaterialPath = Elem.Value;
			ConstructorHelpers::FObjectFinder<UMaterial> Material(*MaterialPath); // ConsturctorHelpers is only available for UObject.

			if (Material.Object != NULL)
			{
				StaticMaterialMap->Add(ModeName, (UMaterial*)Material.Object);
			}
		}
	}

	UMaterial* Material = StaticMaterialMap->FindRef(InModeName);
	if (Material == nullptr)
	{
		UE_LOG(LogUnrealCV, Warning, TEXT("Can not recognize visualization mode %s"), *InModeName);
	}
	return Material;
}
Example #15
0
LeafSystem::LeafSystem(const Mesh& mesh, TextureType texture_type, const glm::vec3& origin, int numParticles) : 
            draw_template_({
                  ShaderType::DEFERRED,
                  mesh, 
                  Material(),
                  Texture(texture_type, DIFFUSE_TEXTURE),
                  boost::none,
                  EffectSet({EffectType::CASTS_SHADOW, EffectType::CASTS_REFLECTION})
                  }),
            origin_(origin),
            scale_(0.7f),
            velocity_(glm::vec3(0.0f, -0.00001f, 0.0f)),
            acceleration_(glm::vec3(0.0f, -0.000001f, 0.0f)) {
               for (int i = 0; i < numParticles; i++) {
                  glm::vec3 randVec = getRandomVec();
                  float randAngle = static_cast <float> (rand()) / (static_cast <float> (RAND_MAX / ROT_MAX));
                  particles_.push_back(Particle(glm::vec3(origin_.x + randVec.x, origin_.y + randVec.y, origin_.z + randVec.z), 
                              scale_, randAngle, velocity_,  acceleration_));
               }
            }
Example #16
0
TestScene::TestScene()
{
  auto tex = -1;// ImageHandler::GetInstance().LoadFromFile("input_data/chino.jpg", true);

  //AddObject(new Sphere(1e5, Vector3(1e5 + 1, 40.8, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.25, 0.25), 0.0, tex)), true, false);  // 左
  AddFloorYZ_xUp(200, 200, Vector3(1, 40.8, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.25, 0.25), 0.0)); // 左
  //AddObject(new Sphere(1e5, Vector3(-1e5 + 99, 40.8, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.25, 0.25, 0.75), tex)), true, false);  // 右
  AddFloorYZ_xDown(200, 200, Vector3(99, 40.8, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.25, 0.25, 0.75), 0.0)); // 右
  //AddObject(new Sphere(1e5, Vector3(50, 40.8, 1e5), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.75, 0.75))), true, false);  // 奥
  AddFloorXY_zUp(150, 150/1.77777777777, Vector3(50, 40.8, 0), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(1, 1, 1), 0.0, tex));  // 奥
  //AddObject(new Sphere(1e5, Vector3(50, 40.8, -1e5 + 250), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color())), true, false);                  // 手前
  AddFloorXY_zDown(150, 150 / 1.77777777777, Vector3(50, 40.8, 250), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.75, 0.75), 0.0, tex));  // 手前
  //AddObject(new Sphere(1e5, Vector3(50, 1e5, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.75, 0.75))), true, false);  // 下
  AddFloorXZ_yUp(200, 200, Vector3(50, 0, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.75, 0.75)));
  //AddObject(new Sphere(1e5, Vector3(50, -1e5 + 81.6, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.75, 0.75))), true, false);  // 上
  AddFloorXZ_yDown(200, 200, Vector3(50, 81.6, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(), Color(0.75, 0.75, 0.75)));

  m_ibl.reset(new IBL("input_data/Barce_Rooftop_C_Env.hdr"));
 
  Model *cube = new Model;
  //if (!cube->ReadFromObj("input_data/Cargo_ship/OBJ/msmunchen_visualstudio.obj", true)) {
  if (!cube->ReadFromObj("input_data/shrine.obj", true)) {
    std::cerr << "failed to load cube.obj!!!" << std::endl;
    getchar();
    exit(-1);
  }
  //cube->Transform(Vector3(50, 30, 50), Vector3(10, 10, 10), Matrix::RotateAroundVector(Vector3(0, 1, 0), 45.0 / 180 * PI));
  //cube->Transform(Vector3(50, 10, 50), Vector3(6, 6, 6), Matrix::RotateAroundVector(Vector3(0, 1, 0), 30.0 / 180 * PI));
  //cube->Transform(Vector3(50, 5, 70), Vector3(0.05, 0.05, 0.05), Matrix::RotateAroundVector(Vector3(0, 1, 0), 15.0 / 180 * PI));
  cube->Transform(Vector3(27, 16.5, 47), Vector3(2, 2, 2), Matrix::RotateAroundVector(Vector3(0, 1, 0), 0 / 180 * PI));
  AddModel(cube, true, true);
  
  //AddObject(new Sphere(10,Vector3(),           Material(Material::REFLECTION_TYPE_LAMBERT,    Color(), Color(0.25, 0.75, 0.25))));    // 緑球
  //AddObject(new Sphere(16.5,Vector3(27, 16.5, 47),       Material(Material::REFLECTION_TYPE_SPECULAR,   Color(), Color(0.99, 0.99, 0.99))));   // 鏡
  //AddObject(new Sphere(16.5,Vector3(77, 16.5, 78),       Material(Material::REFLECTION_TYPE_REFRACTION, Color(), Color(0.99, 0.99, 0.99), REFRACTIVE_INDEX_OBJECT))); // ガラス


  //SphereLight *sphereLight = new SphereLight(7.5, Vector3(50.0, 72.5, 61.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(26, 26, 26), Color()));
  SphereLight *sphereLight = new SphereLight(15, Vector3(50.0, 90, 81.6), Material(Material::REFLECTION_TYPE_LAMBERT, Color(36, 36, 36), Color()));
  AddObject(sphereLight, true, false);    // 照明

  //ConstructBVH();
  ConstructQBVH();
}
Example #17
0
int XFileLoader::CreateMaterial(const string& materialName, vec4 diffuse, vec4 specular, const string& textureFilename)
{
	if (m_materialLookup.find(materialName) != m_materialLookup.end())
		return m_materialLookup[materialName];
    int materialIdx = m_materials.size();
    m_materials.emplace_back(std::move(Material()));
	Material::MaterialData data = { diffuse, specular };
	m_materials[materialIdx].setMaterialData(data);
	m_materialLookup.insert(make_pair(move(materialName), materialIdx));
	if (!textureFilename.empty())
	{
        string fname(textureFilename.begin(), textureFilename.end());
        m_materials[materialIdx].setDiffuseTexture(move(VBGL::Texture2D::loadTexture(fname)));
		auto ext = fname.rfind(L'.');
        if (ext == fname.npos)
            THROW_EXCEPTION_T("Parsing error", ParsingException);
        string specName = fname.substr(0, ext) + "_Specular" + fname.substr(ext);
        m_materials[materialIdx].setSpecularTexture(move(VBGL::Texture2D::loadTexture(specName)));
	}
	return materialIdx;
}
Example #18
0
int WriterNodeVisitor::processStateSet(osg::StateSet* ss)
{
    MaterialMap::const_iterator itr = _materialMap.find(ss);
    if (itr != _materialMap.end())
    {
        assert(itr->second.index>=0);
        return itr->second.index;
    }

    osg::Material* mat = dynamic_cast<osg::Material*>(ss->getAttribute(osg::StateAttribute::MATERIAL));
    osg::Texture* tex = dynamic_cast<osg::Texture*>(ss->getTextureAttribute(0, osg::StateAttribute::TEXTURE));

    if (mat || tex)
    {
        int matNum = _lastMaterialIndex;
        _materialMap.insert(std::make_pair(osg::ref_ptr<osg::StateSet>(ss), Material(*this, ss, mat, tex, _preserveMaterialNames, matNum) ));
        ++_lastMaterialIndex;
        return matNum;
    }
    return -1;
}
Example #19
0
int main() {
	// Initiatisation
	glm::ivec2 screenSize = glm::ivec2(400, 300);
	// -- Camera
	Camera cam = Camera(70.f, screenSize, 1);
	cam.LookAt(glm::vec3(50,52,295.6), glm::vec3(50,52,295.6) + glm::vec3(0,0.0,-1));

	// -- Scene
	Scene sc;
//	Sphere(1e5, Vec( 1e5+1,40.8,81.6), Vec(),Vec(.75,.25,.25),DIFF),//Left
//	Sphere(1e5, Vec(-1e5+99,40.8,81.6),Vec(),Vec(.25,.25,.75),DIFF),//Rght
//	Sphere(1e5, Vec(50,40.8, 1e5),     Vec(),Vec(.75,.75,.75),DIFF),//Back
//	Sphere(1e5, Vec(50,40.8,-1e5+170), Vec(),Vec(),           DIFF),//Frnt
//	Sphere(1e5, Vec(50, 1e5, 81.6),    Vec(),Vec(.75,.75,.75),DIFF),//Botm
//	Sphere(1e5, Vec(50,-1e5+81.6,81.6),Vec(),Vec(.75,.75,.75),DIFF),//Top

	sc.AddPrimitive(
			new Sphere(glm::vec3(1e5 + 1, 40.8, 81.6), 1e5,
					Material(glm::vec3(.75, .25, .25))));
	sc.AddPrimitive(
			new Sphere(glm::vec3(-1e5 + 99, 40.8, 81.6), 1e5,
					Material(glm::vec3(.25, .25, .75))));
	sc.AddPrimitive(
			new Sphere(glm::vec3(50,40.8, 1e5), 1e5,
					Material(glm::vec3(.75, .75, .75))));
	sc.AddPrimitive(
			new Sphere(glm::vec3(50, 40.8, -1e5 + 250), 1e5,
					Material(glm::vec3(.75, .75, .75))));
	sc.AddPrimitive(
			new Sphere(glm::vec3(50, 1e5, 81.6), 1e5,
					Material(glm::vec3(.75, .75, .75))));
	sc.AddPrimitive(
			new Sphere(glm::vec3(50,-1e5+81.6,81.6), 1e5,
					Material(glm::vec3(.75, .75, .75))));

	sc.AddLight(new PointLight(glm::vec3(50,52,240)));

	// -- Screne
	Screen screen(screenSize);
	// Ray generation
	for (int x = 0; x < screenSize.x; x++)
		for (int y = 0; y < screenSize.y; y++) {
			glm::vec3 colorFinal = sc.ComputeColor(cam.GetRay(x,y));
			screen.Store(x, y, colorFinal*100.f);
		}
	screen.SaveToPGM("out.pgm");
	return 0;
}
Example #20
0
    const Geometry::Material& MaterialManager::materialAt(const DDSurfaces::Vector3D& pos ){

      if( pos != _pos ) {
	
	TGeoNode *node=_tgeoMgr->FindNode( pos[0], pos[1], pos[2] ) ;
	
	if( ! node ) {
	  std::stringstream err ;
	  err << " MaterialManager::material: No geometry node found at location: " << pos ;
	  throw std::runtime_error( err.str() );
	}

	//	std::cout << " @@@ MaterialManager::material @ " << pos << " found volume : " << node->GetName() << std::endl ;

	_m = Material( node->GetMedium() ) ;
	
	_pos = pos ;
      }

      return _m ; ;
    }
void ObjObject::buildShaderProgram()
{
	if ( shaderProgram==0 )  {

		// Create array of ShaderInfo structs that specifies the vertex and
		// fragment shaders to be compiled and linked into a program.
		ShaderInfo shaders[] = {
			{ GL_VERTEX_SHADER, "pVS-phong-per-frag.vert" },
			{ GL_FRAGMENT_SHADER, "pfixed-function-phong-toon-per-frag.frag"},
			//{ GL_VERTEX_SHADER, "pVSpSolidColor.vert" },
			//{ GL_FRAGMENT_SHADER, "pFSc.frag"},
			{ GL_NONE, NULL } // signals that there are no more shaders
		};

		shaderProgram = LoadShaders(shaders);

	}
	 glUseProgram(shaderProgram);
		modelLocation = glGetUniformLocation(shaderProgram, "modelMatrix");
		assert(modelLocation != 0xFFFFFFFF);

		solidColorLocation = glGetUniformLocation(shaderProgram, "objectColor");
		//assert(solidColorLocation != 0xFFFFFFFF);

		material = Material( getUniformLocation( shaderProgram, "object.ambientMat"),
							 getUniformLocation( shaderProgram, "object.diffuseMat"),
							 getUniformLocation( shaderProgram, "object.specularMat"),
							 getUniformLocation( shaderProgram, "object.specularExp"),
							 getUniformLocation( shaderProgram, "object.emissiveMat" ),
							 getUniformLocation( shaderProgram, "object.textureMapped"),
							 getUniformLocation( shaderProgram, "object.toon") );
	
		//material.setAmbientAndDiffuseMat( objectColor );
		material.setAmbientAndDiffuseMat( vec4(0.8f,0.6f,0.2f,1.0f) * 0.5f );
		material.setSpecularMat( vec4(1.0f, 1.0f, 1.0f, 1.0f) );
		material.setSpecularExponentMat( 64.0f );
		material.setTextureMapped(true);
		material.setToon(true);

	} // end buildShaderProgram
Example #22
0
/**
 * Callback d'affichage d'OpenGL
 */
void DisplayCallback()
{
	// On ne repasse pas dans le loop si il y a une demande de fermeture
	if(_exitRequest || glutGet(GLUT_WINDOW_FORMAT_ID) == 0 ){
		_displayExited = true;
		return;
	}

	// Vidage de la frame	
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	// On dirige la caméra
	_camera->Look();

	// Par défaut, on applique un matérial blanc
	Material mat = Material();
	mat.ToWhiteReflect();
	mat.Enable();

	// Affichage de la montre
	glPushMatrix();
		glRotatef(-45.0, 1.0, 0.0, 0.0);
		glScalef(0.2, 0.2, 0.2);
		_montre->FastDisplay();
	glPopMatrix();

	// On réapplique le matériel 
	// Et on affiche la pièce
	mat.Enable();
	glPushMatrix();
		glTranslatef(0, -1.8, 0);
		glRotatef(-90, 1.0, 0.0, 0.0);
		_room->BuildAndDisplayHorloge();
		_room->FastDisplay();
	glPopMatrix();

	// Netoyage
	glutSwapBuffers();
	glFlush();
}
Example #23
0
//----------------------------------------------------------------------------
bool MtlLoader::GetNewMaterial (const vector<string>& tokens)
{
    // Syntax
    //
    // newmtl name

    if (tokens[0] == "newmtl")
    {
        mCurrent = (int)mMaterials.size();
        mMaterials.push_back(Material());

        if (tokens.size() > 1)
        {
            mMaterials[mCurrent].Name = tokens[1];
            return true;
        }

        assert(false);
        mCode = EC_TOO_FEW_TOKENS;
    }
    return false;
}
Example #24
0
void Graphics::setEffectParameters(D3DXMATRIX world)
{
	Light lights1[4];
	for(int i = 0; i < mLightList->size(); i++)
		lights1[i] = *mLightList->operator[](i);

	// Calculate the inverse transpose matrix.
	D3DXMATRIX worldInverseTranspose;
	D3DXMatrixInverse(&worldInverseTranspose, 0, &world);
	D3DXMatrixTranspose(&worldInverseTranspose, &worldInverseTranspose);

	// Set the parameters.
	HR(mFX->SetMatrix(mhWVP, &(world*gCamera->getViewMatrix()*gCamera->getProjectionMatrix())));
	HR(mFX->SetMatrix(mhWorld, &world));
	HR(mFX->SetVector(mhEyePos, &D3DXVECTOR4(gCamera->getPosition(), 0)));
	HR(mFX->SetMatrix(mhWorldInverseTranspose, &worldInverseTranspose));
	HR(mFX->SetInt(mhNumLights, mLightList->size()));
	HR(mFX->SetRawValue(mhLights, (void*)&lights1, 0, sizeof(Light)*mLightList->size()));

	// Set the DEFUALT = WHITE object material and the light array (max 4 lights right now).
	HR(mFX->SetRawValue(mhObjectMaterial, (void*)&Material(), 0, sizeof(Material)));
}
Example #25
0
bool IVCONV::swv_read_materials( )

/*****************************************************************************/
/*
Purpose:
    Creates materials with textures from Bullfrog's game Syndicate Wars
*/
{
  //Setup textures
  int base_txtr=texture_num;
  for (unsigned int i=0;i<6;i++)
  {
    texture[texture_num]=Texture();
    sprintf(texture[texture_num].name,"TEX%02uC.PNG",i);
    texture[texture_num].intense=1.0f;
    if ( debug )
        printf ( "  SW_READ_MATERIALS creating texture entry for %s\n",texture[texture_num].name);
    texture_num++;
    texture[texture_num]=Texture();
    sprintf(texture[texture_num].name,"TEX%02uM.PNG",i);
    texture[texture_num].intense=1.0f;
    texture_num++;
  }
  //Now materials
  for (unsigned int i=0;i<6;i++)
  {
    material[material_num]=Material();
    material[material_num].rgb=vec3(.5,.5,.5);
    material[material_num].ambient=vec3(.4,.4,.4);
    material[material_num].specular=vec3(.8,.8,.8);
    sprintf(material[material_num].name,"%s%02u",DEFAULT_MATERIAL_NAME,i);
    material[material_num].texture=base_txtr+2*i;
    material[material_num].mask_texture=base_txtr+2*i+1;
    material[material_num].alpha=0.0f;
    if ( debug )
        printf ( "  SW_READ_MATERIALS creating material entry %u\n",i);
    material_num++;
  }
}
Example #26
0
void Montre::BuildStructureIntermediaire()
{
	// Plaque
	glPushMatrix();
		glTranslatef(-0.35, 0, 0);
		glRotatef(180, 0, 1, 0);
		_plaqueSeparation->FastDisplay();
	glPopMatrix();

	// Pilier de soutien
	for(int i=0; i<4; i++)
	{
		Material mat = Material();
		mat.ToBlackReflect();
		mat.Enable();
		glPushMatrix();
			glTranslatef((i%2?1:-1)*1.15, 0.02, (i%3?1:-1)*1.15);
			glRotatef(90, 1, 0, 0);
			_rotorInferieur->FastDisplay();
		glPopMatrix();
	}
}
Example #27
0
void Box::setBoxWithRandomColor(float width, float height, float depth)
{
	float w2 = width / 2;
	float h2 = height / 2;
	float d2 = depth / 2;

	std::vector<FigureVertex> vertices;
	std::vector<UINT> indices;

	GeometryGenerator::createBox(width, height, depth, vertices, indices);

	setBuffer(vertices, indices);

	auto material = Material();
	material.m_Ambient = XMFLOAT4(0.01f * (rand() % 100), 0.01f * (rand() % 100), 0.01f * (rand() % 100), 1.0f);
	material.m_Diffuse = XMFLOAT4(0.01f * (rand() % 100), 0.01f * (rand() % 100), 0.01f * (rand() % 100), 0.5f);
	material.m_Specular = XMFLOAT4(0.01f * (rand() % 100), 0.01f * (rand() % 100), 0.01f * (rand() % 100), 16.0f);

	setMaterial(material);

	
}
Example #28
0
ClicECAL::ClicECAL(double innerRadius,
                   double innerZ,
                   double depth,
                   double clusterSizePhoton,
                   double clusterSize,
                   double etaAcceptance,
                   const std::vector<double>
                       emin,
                   const std::vector<double>
                       eresBarrel,
                   int nX0,
                   int nLambdaI,
                   double eResponse)
    : Calorimeter(Layer::kEcal,
                  VolumeCylinder(Layer::kEcal, innerRadius + depth, innerZ + depth, innerRadius, innerZ),
                  Material("Clic_ECAL", depth / nX0, depth / nLambdaI)),
      m_clusterSize(clusterSize),
      m_clusterSizePhoton(clusterSizePhoton),
      m_emin(emin),
      m_eresBarrel(eresBarrel),
      m_eResponse(eResponse),
      m_etaAcceptance(etaAcceptance) {}
Example #29
0
		/// \brief Do an update: mix the materials of all children and choose
		///		type randomly
		void PostTraversal(const ei::IVec4& _position, Model::ModelData::SVON* _node,
			const Model::ModelData::SVON* _left, const Model::ModelData::SVON* _right, const Model::ModelData::SVON* _bottom,
			const Model::ModelData::SVON* _top, const Model::ModelData::SVON* _front, const Model::ModelData::SVON* _back)
		{
			if( !_node->Data().IsDirty() ) return;

			int selfInner = _position.w == 0 ? _node->Data().inner : 0;
			_node->Data().surface =
				   ((_left == nullptr)   || !(_left->Data().inner || selfInner))
				| (((_right == nullptr)  || !(_right->Data().inner || selfInner))  << 1)
				| (((_bottom == nullptr) || !(_bottom->Data().inner || selfInner)) << 2)
				| (((_top == nullptr)    || !(_top->Data().inner || selfInner))    << 3)
				| (((_front == nullptr)  || !(_front->Data().inner || selfInner))  << 4)
				| (((_back == nullptr)   || !(_back->Data().inner || selfInner))   << 5);

			// Recompute the material from surface voxels only
			if( _node->Children() && _node->Data().surface )
			{
				Material materials[8];	int num = 0;
				for( int i = 0; i < 8; ++i )
				{
					if( _node->Children()[i].Data().surface 
						&& _node->Children()[i].Data().material != Material::UNDEFINED ) {
						//Assert( _node->Children()[i].Data().material != Material::UNDEFINED, "Undefined child material in use." );
						materials[num++] = _node->Children()[i].Data().material;
					}
				}
				if( num > 0 )
					_node->Data().material = Material(materials, num);
				else
					// If all children are non-surface this one is non-surface too.
					// The estimation from solidity was wrong.
					_node->Data().surface = 0;
				Assert(_node->Data().material != Material::UNDEFINED, "The voxel has an undefined material and will appear green.");
			}

			_node->Data().dirty = 0;
		}
Example #30
0
void Wall::buildShaderProgram()
{
	if ( shaderProgram==0 )  {

		ShaderInfo shaders[] = {
			{ GL_VERTEX_SHADER, "pVSpSolidColor.vert" },
			{ GL_FRAGMENT_SHADER, "pFSc.frag"},
			{ GL_NONE, NULL } // signals that there are no more shaders
		};

		// Read the files and create the OpenGL shader program.
		shaderProgram = LoadShaders(shaders);
	}

	// This program will stay in effect for all draw calls until it is 
	// replaced with another or explicitly disabled (and the 
	// fixed function pipeline is enabld) by calling glUseProgram with NULL
    glUseProgram(shaderProgram);

	modelLocation = glGetUniformLocation(shaderProgram, "modelMatrix");
	assert(modelLocation != 0xFFFFFFFF);

	material = Material( getUniformLocation( shaderProgram, "object.ambientMat"),
						 getUniformLocation( shaderProgram, "object.diffuseMat"),
						 getUniformLocation( shaderProgram, "object.specularMat"),
						 getUniformLocation( shaderProgram, "object.specularExp"),
						 getUniformLocation( shaderProgram, "object.emissiveMat" ),
						 getUniformLocation( shaderProgram, "object.textureMapped") );
	
	material.setAmbientAndDiffuseMat( vec4( 0.5f, 0.5f, 0.5f, 1.0f ));
	material.setSpecularMat( vec4(1.0f, 1.0f, 1.0f, 1.0f) );
	material.setSpecularExponentMat( 64.0f );
	material.setTextureMapped( true );

	// For Texture mapping
	//baseImageLoc = glGetUniformLocation(shaderProgram, "baseImage");

}