X-Git-Url: https://git.lukelau.me/?p=opengl.git;a=blobdiff_plain;f=main.cpp;h=9464e9ec5044181c2ab0340ab1a1169d7dc7be28;hp=caaa2a308a507aec6985488c622b371fc12c05b4;hb=d80972d96e5fcd444657f937ab2700039efa83d2;hpb=a03f2bc751bbd7f91cbc2f52d2f0f6e753d6f776 diff --git a/main.cpp b/main.cpp index caaa2a3..9464e9e 100644 --- a/main.cpp +++ b/main.cpp @@ -5,6 +5,7 @@ #include #ifdef __APPLE__ #include +#include "cocoa.h" #else #include #endif @@ -161,10 +162,22 @@ void display() { glActiveTexture(GL_TEXTURE3); glBindTexture(GL_TEXTURE_2D, roughnessMap); - glUniform1i(glGetUniformLocation(pbrProg->progId, "aoMap"), 3); + glUniform1i(glGetUniformLocation(pbrProg->progId, "aoMap"), 4); glActiveTexture(GL_TEXTURE4); glBindTexture(GL_TEXTURE_2D, aoMap); + glUniform1i(glGetUniformLocation(pbrProg->progId, "irradianceMap"), 5); + 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); @@ -216,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]; @@ -318,6 +333,8 @@ int main(int argc, char** argv) { init(); + swizzle(); + glutKeyboardFunc(keyboard); glutKeyboardUpFunc(keyboardUp); glutTimerFunc(16, timer, 0);