- glm::vec3 vertices[12] = {
- glm::vec3(0.0f, 1.0f, 0.0f),
- glm::vec3(1.0f, -1.0f, -1.0f),
- glm::vec3(-1.0f, -1.0f, -1.0f),
-
- glm::vec3(0.0f, 1.0f, 0.0f),
- glm::vec3(-1.0f, -1.0f, 1.0f),
- glm::vec3(1.0f, -1.0f, 1.0f),
-
- glm::vec3(0.0f, 1.0f, 0.0f),
- glm::vec3(-1.0f, -1.0f, -1.0f),
- glm::vec3(-1.0f, -1.0f, 1.0f),
-
- glm::vec3(0.0f, 1.0f, 0.0f),
- glm::vec3(1.0f, -1.0f, 1.0f),
- glm::vec3(1.0f, -1.0f, -1.0f)
- };
-
- // work out the normals
- glm::vec3 normals[12];
- for (int i = 0; i < 4; i++) {
- glm::vec3 a = vertices[i * 3];
- glm::vec3 b = vertices[i * 3 + 1];
- glm::vec3 c = vertices[i * 3 + 2];
- glm::vec3 u = glm::normalize(a - c);
- glm::vec3 v = glm::normalize(b - c);
- glm::vec3 norm = glm::normalize(glm::cross(v, u));
- for(int j = 0; j < 3; j++) {
- normals[i * 3 + j] = glm::vec3(norm);
- }
+ plainProg = new Program("plainvertex.glsl", "plainfrag.glsl");
+ glUseProgram(plainProg->progId);
+ setupLightBuffers(plainProg->progId);
+ plainProg->validate();
+
+ skyboxes.push_back(Skybox(Image("skyboxes/wooden_lounge_8k.hdr")));
+ skyboxes.push_back(Skybox(Image("skyboxes/machine_shop_02_8k.hdr")));
+ skyboxes.push_back(Skybox(Image("skyboxes/pink_sunrise_8k.hdr")));
+
+ pbrProg = new Program("pbrvert.glsl", "pbrfrag.glsl");
+ glUseProgram(pbrProg->progId);
+
+ const std::string scenePath = "models/ik.glb";
+ const aiScene *scene = importer.ReadFile(scenePath, aiProcess_Triangulate | aiProcess_CalcTangentSpace | aiProcess_GenNormals | aiProcess_FlipUVs);
+ if (!scene) {
+ std::cerr << importer.GetErrorString() << std::endl;
+ exit(1);