{"id":17744050,"url":"https://github.com/andreibarsan/yeti","last_synced_at":"2025-04-21T08:31:46.150Z","repository":{"id":6112714,"uuid":"7340505","full_name":"AndreiBarsan/Yeti","owner":"AndreiBarsan","description":"Java OpenGL engine with forward/deferred rendering, real-time shadows, and SSAO. Started as a 3rd semester project at Carl von Ossietzky Universität, Oldenburg for OpenGL mit Java. Continued in the 4th semester as part of the OpenGL Praktikum.","archived":false,"fork":false,"pushed_at":"2020-10-13T16:29:53.000Z","size":60485,"stargazers_count":7,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-03-15T23:10:18.930Z","etag":null,"topics":["deferred-rendering","engine","graphics","graphics-engine","java","java-opengl-engine","jogl","opengl"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AndreiBarsan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-12-27T13:14:00.000Z","updated_at":"2021-12-14T09:36:20.000Z","dependencies_parsed_at":"2022-08-30T05:23:28.370Z","dependency_job_id":null,"html_url":"https://github.com/AndreiBarsan/Yeti","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreiBarsan%2FYeti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreiBarsan%2FYeti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreiBarsan%2FYeti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreiBarsan%2FYeti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AndreiBarsan","download_url":"https://codeload.github.com/AndreiBarsan/Yeti/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250023521,"owners_count":21362414,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deferred-rendering","engine","graphics","graphics-engine","java","java-opengl-engine","jogl","opengl"],"created_at":"2024-10-26T06:41:49.201Z","updated_at":"2025-04-21T08:31:41.084Z","avatar_url":"https://github.com/AndreiBarsan.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"The Yeti Java OpenGL Engine\n===========================\n\nSummary\n-------\nThis engine is a personal project of mine, so it's not really recommended for \nserious projects (like for serious game development endeavors). I try to document\nit decently, so one might learn a couple of things from it. Or at least learn about \nwhat nasty hacks to avoid in the future.\n\nLooking forward to any fork! :)\n\n\u003cimg src=\"res/deferred.jpg\" width=\"600px\" alt=\"Renderer screenshot\" /\u003e\nHere's Yeti with a few Bioshock models loaded | (deferred renderer).\n\n\u003cimg src=\"res/platformer.jpg\" width=\"600px\" alt=\"PlanetHeads screenshot\" /\u003e\nThis is an example of a (very) simple platformer game showcasing the engine.\n\n\u003cimg src=\"res/screenshot.jpg\" width=\"600px\" alt=\"Deferred rendering screenshot\" /\u003e\nAnother screenshot of the deferred renderer operating on a relatively large number of lights in\na scene (39).\n\nRunning the thing\n-----------------\nThe project used to be quite easy to build.\nNow it's even easier, since it uses Maven.\n\n1. Clone repo.\n2. Load the project in Eclipse. It should figure out which jars to use thanks to\npom.xml.\n3. Run either barsan.opengl.tools.DeferredTest or barsan.opengl.planetHeads.Game\n4. Note that Java 7 and OpenGL 3 are needed (the GL3bc profile, actually - which is why\nthe project doesn't work on most Macs due to them only supporting either GL2 or GL3)\n5. If the game crashes, it's very likely because:\n  * your video card doesn't support a certain feature;\n  * your video card has stricter shader compilation rules and chokes on something;\n  * in both cases, it would really help to open a ticket on the issue tracker here on GitHub!\n6. If it's runnig, congratulations, you got it going! Remember, pull requests are always welcome! :)\n\nOf course, Eclipse isn't *required* to build the engine. You can `javac` it, no \nproblem, you can use a different folder for the libs, and so on.\n\nYou can also open the project in IntelliJ and it should \"just work\". Running\n`./src/barsan/opengl/editor/App.java` is  a good starting point, and so is the\n`DeferredTest` scene.\n\nFeatures\n--------\nAmong the most important features implemented so far are:\n - forward and deferred rendering (using stencil tests for light receiver culling)\n - basic Wavefront *.obj loading\n - vertex interpolation keyframe animations\n - phong lighting model (with directional, point and spot lights)\n - normal mapping\n - skyboxes and environment mapping\n - shadow mapping (for all light types - omnidirectional shadowmaps generated\n in a single pass using a geometry shader)\n - simple and axis-aligned billboarding\n - scene management\n - multipass rendering with post-processing support (right now used for FBO-based\n multisampling and a naive SSAO implementation)\n - simple 2D platformer physics\n\nMiscellaneous things \u0026 philosophy\n---------------------------------\nFirst and foremost, this is a learning experience. I am learning OpenGL as I'm\nwriting this, so don't expect the engine to be in any way clean or optimized.\nSome things worth noting are the major roadblocks I've hit (and overcome!)\nwhile developing this project - for most of them, I've left some sort of \"monument\"\nin the source code, describing the nature of the problem and how I've fixed it. I\nfind that by actually writing this down and then seeing it over and over again helps\nyou remember common mistakes that you've made and thus helps you avoid them in the\nfuture.\n\nI obviously don't recommend doing this in an actual serious project (that's what\nbug trackers are for!), but I like to use it in small personal projects.\n\nThe code is designed to fail as often as possible. And by that I mean that whenever\nit detects something that's wrong, it instantly crashes telling you what went \nwrong. It doesn't struggle to chug along at any cost. Again, for a professional\nproject this might not be the right technique all of the time, and you'd probably \nwant to have some sort of crash recovery system in some of the cases.\n\nLicense\n-------\nYeti is licensed under the BSD 2-clause license.\n\nCopyright (c) 2012-2013, Andrei Bârsan\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this list\nof conditions and the following disclaimer.\n\nRedistributions in binary form must reproduce the above copyright notice, this \nlist of conditions and the following disclaimer in the documentation and/or other\n materials provided with the distribution.\n \nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\nIN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\nINDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\nBUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, \nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF \nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE \nOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED \nOF THE POSSIBILITY OF SUCH DAMAGE.\n\nThe JOGL source code is mostly licensed under the New BSD 2-clause license,\nhowever it contains other licensed material as well. See the jogl.LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreibarsan%2Fyeti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreibarsan%2Fyeti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreibarsan%2Fyeti/lists"}