void init(void) { glClearColor(0.0, 0.0, 0.0, 1.0); // Yeah.. so.. we need an global array with all the avaliable textures to be used with keystrokes for texture selection... std::string texture_array[] = {"0.125", "0.5", "2", "8", "32", "128", "512", "2048"}; globals.textures = std::vector<std::string>(texture_array,end(texture_array)); globals.cubemap_0 = loadCubeMap(cubemapDir() + "RomeChurch/prefiltered/"+globals.textures[0]); globals.cubemap_1 = loadCubeMap(cubemapDir() + "RomeChurch/prefiltered/"+globals.textures[1]); globals.cubemap_2 = loadCubeMap(cubemapDir() + "RomeChurch/prefiltered/"+globals.textures[2]); globals.cubemap_3 = loadCubeMap(cubemapDir() + "RomeChurch/prefiltered/"+globals.textures[3]); globals.cubemap_4 = loadCubeMap(cubemapDir() + "RomeChurch/prefiltered/"+globals.textures[4]); globals.cubemap_5 = loadCubeMap(cubemapDir() + "RomeChurch/prefiltered/"+globals.textures[5]); globals.cubemap_6 = loadCubeMap(cubemapDir() + "RomeChurch/prefiltered/"+globals.textures[6]); globals.cubemap_7 = loadCubeMap(cubemapDir() + "RomeChurch/prefiltered/"+globals.textures[7]); globals.cubemap_sky_box = loadCubeMap(cubemapDir() + "RomeChurch"); std::string dir = shaderDir(); loadProgram(shaderDir() + "environment_mapping.vert", shaderDir() + "environment_mapping.frag", &globals.program); loadProgram(shaderDir() + "skybox.vert", shaderDir() + "skybox.frag", &globals.program_sky_box); loadMesh((modelDir() + "gargo.obj"), &globals.mesh); createMeshVAO(globals.mesh, &globals.meshVAO); createBoxVAO(); initializeTrackball(); }
void init(Context &ctx) { ctx.program = loadShaderProgram(shaderDir() + "triangle.vert", shaderDir() + "triangle.frag"); createTriangle(ctx); }
void init(Context &ctx) { ctx.program = loadShaderProgram(shaderDir() + "mesh.vert", shaderDir() + "mesh.frag"); loadMesh((modelDir() + "armadillo.obj"), &ctx.mesh); createMeshVAO(ctx, ctx.mesh, &ctx.meshVAO); initializeTrackball(ctx); }
void init(void) { glClearColor(globals.bg_color.x, globals.bg_color.y, globals.bg_color.z, 1.0); loadProgram(shaderDir() + "mesh.vert", shaderDir() + "mesh.frag", &globals.program); loadMesh((modelDir() + "bunny.obj"), &globals.mesh); createMeshVAO(globals.mesh, &globals.meshVAO); initializeTrackball(); }
// Creates the GLSL shader program that we will use to render the // triangle. void createTriangleShader(void) { cgtk::GLSLSourceFileReader glslReader; glslReader.read(std::string(shaderDir() + "triangle.vert").c_str()); std::string vertexShaderSource = glslReader.getSourceString(); glslReader.read(std::string(shaderDir() + "triangle.frag").c_str()); std::string fragmentShaderSource = glslReader.getSourceString(); globals.program.create(vertexShaderSource, fragmentShaderSource); if (!globals.program.isProgram() || !globals.program.isValid()) { std::cerr << "Error: Could not create program." << std::endl; exit(EXIT_FAILURE); } }
void init(void) { glClearColor(0.0, 0.0, 0.0, 1.0); loadMesh((modelDir() + "bunny.obj"), &globals.mesh); std::string vshaderFilename = shaderDir() + "mesh.vert"; std::string fshaderFilename = shaderDir() + "mesh.frag"; createShaderProgram(vshaderFilename, fshaderFilename, &globals.program); createMeshVAO(globals.mesh, globals.program, &globals.meshVAO); initializeTrackball(); }
void init(Context &ctx) { ctx.program = loadShaderProgram(shaderDir() + "mesh.vert", shaderDir() + "mesh.frag"); ctx.skyboxProgram = loadShaderProgram(shaderDir() + "skybox.vert", shaderDir() + "skybox.frag"); loadMesh((modelDir() + "gargo.obj"), &ctx.mesh); createMeshVAO(ctx, ctx.mesh, &ctx.meshVAO); createSkyboxVAO(ctx, &ctx.skyboxVAO); // Load cubemap texture(s) // ... const std::string cubemap_path = cubemapDir() + "/Forrest/"; ctx.cubemap = loadCubemap(cubemap_path); const std::string levels[] = { "2048", "512", "128", "32", "8", "2", "0.5", "0.125" }; for (int i=0; i < NUM_CUBEMAP_LEVELS; i++) { ctx.cubemap_prefiltered_levels[i] = loadCubemap(cubemap_path + "prefiltered/" + levels[i]); } //ctx.cubemap_prefiltered_mipmap = loadCubemapMipmap(cubemap_path + "prefiltered/"); ctx.cubemap_index = 0; ctx.zoom = 1.0f; ctx.lensType = LensType::PERSPECTIVE; initializeTrackball(ctx); ctx.background_color = glm::vec3(0.2f); ctx.ambient_light = glm::vec3(0.04f); ctx.light_position = glm::vec3(1.0, 1.0, 1.0); ctx.light_color = glm::vec3(1.0, 1.0, 1.0); ctx.diffuse_color = glm::vec3(0.1, 1.0, 0.1); ctx.specular_color = glm::vec3(0.04); ctx.specular_power = 60.0f; ctx.ambient_weight = 1.0f; ctx.diffuse_weight = 1.0f; ctx.specular_weight = 1.0f; ctx.color_mode = ColorMode::NORMAL_AS_RGB; ctx.use_gamma_correction = 1; ctx.use_color_inversion = 0; }
void reloadShaders(Context *ctx) { glDeleteProgram(ctx->program); ctx->program = loadShaderProgram(shaderDir() + "mesh.vert", shaderDir() + "mesh.frag"); ctx->skyboxProgram = loadShaderProgram(shaderDir() + "skybox.vert", shaderDir() + "skybox.frag"); }
void ShaderWriter::includeFile(string filename, string fromFile) { if(fileExists(currentDir() + "/"+ filename)){ filename = currentDir() + "/"+ filename; } else if (fileExists(dirName(fromFile) + "/"+ filename)){ filename = dirName(fromFile) + "/"+ filename; } else if (fileExists(shaderDir() + "/"+ filename)){ filename = shaderDir() + "/"+ filename; } else if(!fileExists(filename)) { cerr << "Could not find file: " << filename << endl; return; } ifstream file; file.open(filename); bool inComment = false; char _buff[200]; while(!file.eof()) { file.getline(_buff,sizeof(_buff)); string buff(_buff); if(!m_Debug) { if(buff[buff.size()-1] == '\r') { buff[buff.size()-1] =0; } if(inComment) { size_t i = buff.find("*/"); if(i != -1){ buff = buff.substr(i+2); inComment = false; } else { buff=""; } }else{ size_t i = buff.find("//"); if(i != -1) { buff = buff.substr(0,i); } i = buff.find("/*"); if(i != -1) { buff = buff.substr(0,i); inComment =true; } buff = stringReplace(buff,"\t",""); } } if(buff.substr(0,8) == "#include"){ includeFile(string(buff).substr(9),filename); }else{ m_Shader << buff << endl; } } }
void reloadShaders(Context *ctx) { glDeleteProgram(ctx->program); ctx->program = loadShaderProgram(shaderDir() + "triangle.vert", shaderDir() + "triangle.frag"); }