- plainProgId = compileShaders((char*)"plainvertex.glsl", (char*)"plainfrag.glsl");
- glUseProgram(plainProgId);
- setupLightBuffers(plainProgId);
- validateProgram(plainProgId);
-
- normalProgId = compileShaders((char*)"vertex.glsl", (char*)"normalfrag.glsl");
- glUseProgram(normalProgId);
- setupTeapotBuffers(normalProgId);
- validateProgram(normalProgId);
-
- solidProgId = compileShaders((char*)"vertex.glsl", (char*)"solidfrag.glsl");
- glUseProgram(solidProgId);
- validateProgram(solidProgId);
-
- textureProgId = compileShaders((char*)"texturevertex.glsl", (char*)"texturefrag.glsl");
- glUseProgram(textureProgId);
- validateProgram(textureProgId);
-
- monkeyHead = new Model("monkeyhead_smooth.dae", solidProgId);
- chest = new Model("models/chest.dae", textureProgId);
+void init() {
+ initUtilProg();
+
+ plainProg = new Program("plainvertex.glsl", "plainfrag.glsl");
+ glUseProgram(plainProg->progId);
+ setupPlainBuffers(plainProg->progId, cube());
+ plainProg->validate();
+
+ cursorProg = new Program("plainvertex.glsl", "plainfrag.glsl");
+ glUseProgram(cursorProg->progId);
+ glGenVertexArrays(1, &cursorVao);
+ cursorNumIndices = setupBuffersWithIndices(cursorProg->progId, cursorVao, sphere(), sphereIndices());
+ cursorProg->validate();
+
+ skyboxes.push_back(Skybox(Image("skyboxes/loft/Newport_Loft_Ref.hdr")));
+ 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);
+
+ /* if (curMode == Default) { */
+ /* const std::string scenePath = "models/cowedboy.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); */
+ /* } */
+
+ /* if (scene->mNumCameras > 0) { */
+ /* aiCamera *cam = scene->mCameras[0]; */
+ /* glm::mat4 camTrans; */
+ /* if (findNodeTrans(scene->mRootNode, cam->mName, &camTrans) != 0) */
+ /* abort(); // there must be a node with the same name as camera */
+
+ /* camPos = {camTrans[3][0], camTrans[3][1], camTrans[3][2]}; */
+
+ /* glm::vec3 camLookAt = */
+ /* glm::vec3(cam->mLookAt.x, cam->mLookAt.y, cam->mLookAt.z); */
+ /* camFront = camLookAt - camPos; */
+
+ /* camUp = glm::vec3(cam->mUp.x, cam->mUp.y, cam->mUp.z); */
+
+ /* fov = cam->mHorizontalFOV; */
+ /* // TODO: aspectRatio = cam->mAspect; */
+ /* znear = cam->mClipPlaneNear; */
+ /* zfar = cam->mClipPlaneFar; */
+ /* } */
+
+ /* for (int i = 0; i < scene->mNumLights; i++) { */
+ /* aiLight *light = scene->mLights[i]; */
+ /* glm::mat4 trans; */
+ /* findNodeTrans(scene->mRootNode, light->mName, &trans); */
+ /* glm::vec3 col = {light->mColorAmbient.r, light->mColorAmbient.g, */
+ /* light->mColorAmbient.b}; */
+ /* Light l = {trans, col}; */
+ /* lights.push_back(l); */
+ /* } */
+
+ /* sceneModel = new Model(scene, *pbrProg); */
+ /* } */
+
+ /* if (curMode == Blendshapes) { */
+ /* loadBlendshapes("models/high-res-blendshapes/", *pbrProg, &bsModel); */
+ /* targetModel = bsModel.model; */
+
+ /* size_t numBlends = bsModel.blendshapes.size(); */
+ /* std::vector<std::string> names(numBlends); */
+ /* for (int i = 0; i < numBlends; i++) names[i] = bsModel.blendshapes[i].name; */
+ /* controlWindow = createControlWindow(names, &cwDelegate); */
+
+ /* camPos = { 0, 18, 81 }; */
+ /* camFront = { 0, 0, -1 }; */
+ /* camUp = { 0, 1, 0 }; */
+ /* zfar = 10000; */
+ /* znear = 0.1f; */
+ /* } */