void TeapotWorld::Init(shared_ptr<Renderer> renderer) { renderer->AddShader("full", "full"); renderer->AddShader("skybox", "skybox"); renderer->SetUniform("full|full", 1, 1.f); // specular renderer->SetUniform("full|full", 2, 128.f); // shininess shared_ptr<Buffer> cubeVertexBuffer = make_shared<Buffer>(); cubeVertexBuffer->SetData(cubeVerts, 108); shared_ptr<Object> c = make_shared<Object>(); c->AttachBuffer(0, cubeVertexBuffer); cube_ = make_shared<RenderObject>(); cube_->object = c; cube_->program = "skybox|skybox"; cube_->transformation = Matrix::Scale(30, 12, 30); cube_->colour[0] = cube_->colour[1] = cube_->colour[2] = 1; cube_->textureBindings.insert(make_pair(0, "environment")); shared_ptr<Buffer> teapotVertexBuffer = make_shared<Buffer>(); shared_ptr<Buffer> teapotNormalBuffer = make_shared<Buffer>(); teapotVertexBuffer->SetData(teapot_verts, 22176); teapotNormalBuffer->SetData(teapot_normals, 22176); shared_ptr<Object> o = make_shared<Object>(); o->AttachBuffer(0, teapotVertexBuffer); o->AttachBuffer(1, teapotNormalBuffer); for (unsigned int i = 0; i < 50; ++i) { auto teapot = make_shared<RenderObject>(); teapot->object = o; teapot->program = "full|full"; teapot->colour[0] = RandF(0, 1); teapot->colour[1] = RandF(0, 1); teapot->colour[2] = RandF(0, 1); teapot->textureBindings.insert(make_pair(0, "environment")); teapots_.push_back(teapot); rotation_.push_back(Vector(RandF(0, PI), RandF(0, PI), RandF(0, PI))); position_.push_back(Vector(RandF(-5, 5), RandF(-2, 2), RandF(-5, 5))); reflectiveness_.push_back(RandF(0, 1)); } vector<string> environment = { "posx.jpg", "negx.jpg", "posy.jpg", "negy.jpg", "posz.jpg", "negz.jpg" }; renderer->AddCubeTexture("environment", environment); }
void SwarmWorld::Init(shared_ptr<Renderer> renderer) { renderer->AddShader("basic", "basic"); renderer->AddShader("skybox", "skybox"); shared_ptr<Buffer> boidVertexBuffer = make_shared<Buffer>(); boidVertexBuffer->SetData(boidVerts, 27); shared_ptr<Object> o = make_shared<Object>(); o->AttachBuffer(0, boidVertexBuffer); bird_ = make_shared<RenderObject>(); bird_->object = o; bird_->program = "basic|basic"; bird_->colour[0] = bird_->colour[1] = bird_->colour[2] = 0.f; for (unsigned int i = 0; i < NUM_BOIDS; ++i) { Boid b; b.id = i; b.position = Vector(RandF(-4, 4), RandF(-4, 4), RandF(-4, 4)); b.velocity = Vector(RandF(-0.01f, 0.01f), RandF(-0.01f, 0.01f), RandF(-0.01f, 0.01f)); boids_.push_back(b); anims_.push_back(RandF(0, 1)); } ermergerd_ = 0; shared_ptr<Buffer> skyboxVertexBuffer = make_shared<Buffer>(); skyboxVertexBuffer->SetData(cubeVerts, 108); shared_ptr<Object> skyboxObject = make_shared<Object>(); skyboxObject->AttachBuffer(0, skyboxVertexBuffer); skybox_ = make_shared<RenderObject>(); skybox_->object = skyboxObject; skybox_->program = "skybox|skybox"; skybox_->textureBindings.insert(make_pair(0, "skybox")); vector<string> skyboxFilenames = { "posx.jpg", "negx.jpg", "posy.jpg", "negy.jpg", "posz.jpg", "negz.jpg" }; renderer->AddCubeTexture("skybox", skyboxFilenames); renderer->SetCameraPosition(Vector(0, -3, 7)); renderer->SetCameraLookAt(Vector(0, 0, 0)); glDisable(GL_CULL_FACE); }