Add specular component
[opengl.git] / main.cpp
index 8fbff622b06ec1440851b33cdd69aeda1f46d0b8..9464e9ec5044181c2ab0340ab1a1169d7dc7be28 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -5,6 +5,7 @@
 #include <vector>
 #ifdef __APPLE__
 #include <GL/glew.h>
+#include "cocoa.h"
 #else
 #include <OpenGL/glew.h>
 #endif
@@ -169,6 +170,14 @@ void display() {
        glActiveTexture(GL_TEXTURE5);
        glBindTexture(GL_TEXTURE_CUBE_MAP, skybox->getIrradianceMap());
 
+       glUniform1i(glGetUniformLocation(pbrProg->progId, "prefilterMap"), 6);
+       glActiveTexture(GL_TEXTURE6);
+       glBindTexture(GL_TEXTURE_CUBE_MAP, skybox->getPrefilterMap());
+
+       glUniform1i(glGetUniformLocation(pbrProg->progId, "brdfMap"), 7);
+       glActiveTexture(GL_TEXTURE7);
+       glBindTexture(GL_TEXTURE_2D, skybox->getBRDFMap());
+
        pbr->draw();
 
        for (Light &light: lights) drawLight(light);
@@ -220,14 +229,16 @@ void init() {
        glUseProgram(pbrProg->progId);
        pbr = new Model("models/sphere.dae", *pbrProg, *skybox);
 
-       albedoMap = loadTexture("models/darktiles/darktiles1_basecolor.png");
-       metallicMap = loadTexture("models/darktiles/darktiles1_metallic.png");
-       normalMap = loadTexture("models/darktiles/darktiles1_normal.png");
-       roughnessMap = loadTexture("models/darktiles/darktiles1_roughness.png");
-       aoMap = loadTexture("models/darktiles/darktiles1_AO.png");
+       albedoMap = loadTexture("models/streakedmetal/streakedmetal_albedo.png");
+       metallicMap = loadTexture("models/streakedmetal/streakedmetal_metalness.png");
+       normalMap = loadTexture("models/streakedmetal/streakedmetal_normal.png");
+       roughnessMap = loadTexture("models/streakedmetal/streakedmetal_roughness.png");
+       aoMap = loadTexture("models/streakedmetal/streakedmetal_ao.png");
 
        glEnable(GL_DEPTH_TEST); 
        glEnable(GL_CULL_FACE); 
+       // prevent edge artifacts in specular cubemaps
+       glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS);
 }
 
 bool* keyStates = new bool[256];
@@ -322,6 +333,8 @@ int main(int argc, char** argv) {
        
        init();
        
+       swizzle();
+
        glutKeyboardFunc(keyboard);
        glutKeyboardUpFunc(keyboardUp);
        glutTimerFunc(16, timer, 0);