{"id":27097659,"url":"https://github.com/wdevore/ranger-beta","last_synced_at":"2026-05-19T07:32:46.361Z","repository":{"id":285303793,"uuid":"957229474","full_name":"wdevore/Ranger-Beta","owner":"wdevore","description":"A c++17 continuation of Ranger-Alpha and FlutterRanger","archived":false,"fork":false,"pushed_at":"2025-10-05T17:40:42.000Z","size":663,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-07T07:39:23.215Z","etag":null,"topics":["glfw","opengl"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wdevore.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-29T21:21:18.000Z","updated_at":"2025-10-05T17:40:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"bbd9b442-8375-4958-aab0-463b298d5c67","html_url":"https://github.com/wdevore/Ranger-Beta","commit_stats":null,"previous_names":["wdevore/ranger-beta"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wdevore/Ranger-Beta","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdevore%2FRanger-Beta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdevore%2FRanger-Beta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdevore%2FRanger-Beta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdevore%2FRanger-Beta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wdevore","download_url":"https://codeload.github.com/wdevore/Ranger-Beta/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdevore%2FRanger-Beta/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33206320,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-19T07:16:55.748Z","status":"ssl_error","status_checked_at":"2026-05-19T07:16:54.366Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["glfw","opengl"],"created_at":"2025-04-06T10:49:05.577Z","updated_at":"2026-05-19T07:32:46.356Z","avatar_url":"https://github.com/wdevore.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ranger-Beta\nA c++17 continuation of Ranger-Alpha and FlutterRanger\n\nThis project was started in April 2025 and is a mixture of:\n\n- [Ranger-Alpha](https://github.com/wdevore/Ranger-Alpha) was done in March 2016\n- [Ranger-Go-IDE](https://github.com/wdevore/Ranger-Go-IGE) was done is 2020\n- [SimpleOpenGL-Go](https://github.com/wdevore/SimpleOpenGL-Go) was done in 2020\n\n# Dev Notes:\nWhen you want to create a new project (aka another folder under examples) You\nneed to do a few things:\n1) update *Ranger-Beta/.vscode/settings.json* and change \u003cpath\u003e to the folder where the project is located.\n2) update the ```examples/\u003cpath to project\u003e/CmakeList.txt``` such that the project name matches the *settings.json* file:\n```cmake\nproject(\u003cyour project-name\u003e VERSION 0.1.0 LANGUAGES C CXX)\n```\n3) (potentially optional) run ```Delete Catch and Reconfigure```\n\nYou now be able to be able to go to the CMake extension and hover over the *Build* item and click on the *Edit* icon. This should bring up a list of targets. Select that matches the *settings.json* file.\n\n# Checkmark ✔\n\n# Tasks\n* Complete shapes ✔\n* Event system ✔\n* Integrate Node system ✔\n  * Zoom Node ✔\n  * Dragging ✔\n  * Space mapping ✔\n* Zones\n* Interpolation\n* Fonts\n  * Vector \u003c-- **INPROGRESS** Still needs vertices fixed. AI generated a mess.\n  * Bitmap ✔\n  * Particle ✔\n* Box2D\n* Particles\n* Physics\n  * Ship motion \u003c-- **WORKING** Will Use Coding Train's framework\n* Filters\n* Animation (tweening) *Using tanema's library*: https://github.com/tanema/gween\n\n# Code documentation\n\n## Shader\nA Shader has a program associated with it. You construct a Shader using Vertex and Fragment shader programs.\n\n# Atlas\nAn Atlas has a Shader associated with it. It contains vector shapes.\n\n# Fonts\n\n0x18 24 42 42 24 18 00 00\n00011000 0x18\n00100100 0x24\n01000010 0x42\n01000010 0x42\n00100100 0x24\n00011000 0x18\n00000000 0x00\n00000000 0x00\n\n## Font tasks\n- For each 0 pixel we render with a dark color (to be done later)\n- For each 1 pixel we render with a light color.\n\nStaticMonoAtlas:\n\nWe add a new shape that is built using 8x8=64 rectangles. Each rectangle is the shape is displaced by a gap. All rectangles fill the unit space.\nWe then create Indices for each character. In the first draft only pixels a \"1\" are drawn. For example, to render an exclamation point you would need 5 indice definitions (aka offsets in the EBO). Basically we keep adding indices at the next available offset.\n\nWe also keep a map of ```\u003cString,int-offset\u003e``` so we can lookup the characater index, the map is stored in darkrose_bitmap_font (dbf). dbf is given an ```evn``` for referencing the atlas. It then uses a generator to create rectangle unit squares. dbf then generates indices for each character.\nonce complete the shape can be added to the atlas and then can be initialized env.postInitiailize();\nNote: that postInitiailize bakes the atlas and this can only be done once all the shapes are present.\n\n- In the render call we use a localModel that is composited with the incoming\nmodel. The localModel has appended a translation equal to 1.0.\n- The fontNode has a scale equal to font size.\n\n# Atlases\nAn Atlas combines Geometry with Shaders. Some Atlases are given Geometry and others generate geometry.\n\nAn Atlas contains a shader that has an VAO, EBO, VBO. However, an UBO shares a common buffer for the Projection and View camera matrices.\n\n# From Geometry to Atlas to Rendering\n\n## Geometry construction\nFor each Atlas the following sequence of events is required:\n\n1) Create geometry (vertices and indices)\n    - using either the *ShapeGenerator* or\n    - your own custom generator, for example, the font Atlases use their own generator.\n2) Construct Atlas\n    - Initialize shaders\n        - Sets paths to shader files\n        - Compiles shaders\n3) Pass geometry to Atlas. Atlas consumes geometry\n    - Geometry is uploaded to GL buffers\n4) Fetch Model and Color uniforms\n5) Set Projection Matrix\n6) Build UBO\n    - Pass list of programs generated by Atlases\n    - Generate UBO Id\n    - Bind UBO to binding Point (i.e. 0)\n    - Link shader programs to binding Point\n    - Copy Projection and View matrices to Sub buffers\n\n\n## Raw Atlas shaders sequence\nThis is a basic straight sequence:\n\n1) Build and compile all shaders\n2) Build and Bind VAO, VBO, and EBO\n3) Fetch Model and Color uniforms\n4) Set Projection Matrix\n5) Build UBO\n6) Link shader programs to binding Point (i.e. 0)\n7) Copy Projection and View matrices to Sub buffers\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwdevore%2Franger-beta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwdevore%2Franger-beta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwdevore%2Franger-beta/lists"}