{"id":20914786,"url":"https://github.com/jdeokkim/mvp-demo","last_synced_at":"2025-10-08T15:29:02.524Z","repository":{"id":262740348,"uuid":"869507220","full_name":"jdeokkim/mvp-demo","owner":"jdeokkim","description":"A raylib demo to visualize the Model, View, and Projection (MVP) matrices.","archived":false,"fork":false,"pushed_at":"2025-06-23T11:50:53.000Z","size":5271,"stargazers_count":20,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-23T12:39:37.914Z","etag":null,"topics":["c","c99","chungnam-national-university","cnu","cnucse","computer-graphics","graphics","graphics-programming","model-matrix","mvp-matrix","opengl","opengl-tutorial","projection-matrix","raylib","view-matrix"],"latest_commit_sha":null,"homepage":"https://redd.it/1gxy6za","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/jdeokkim.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}},"created_at":"2024-10-08T12:15:19.000Z","updated_at":"2025-06-14T18:05:52.000Z","dependencies_parsed_at":"2024-11-14T02:35:55.404Z","dependency_job_id":"faf87225-44ad-4171-bf23-316587660b27","html_url":"https://github.com/jdeokkim/mvp-demo","commit_stats":null,"previous_names":["jdeokkim/mvp-demo"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/jdeokkim/mvp-demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdeokkim%2Fmvp-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdeokkim%2Fmvp-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdeokkim%2Fmvp-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdeokkim%2Fmvp-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdeokkim","download_url":"https://codeload.github.com/jdeokkim/mvp-demo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdeokkim%2Fmvp-demo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268081642,"owners_count":24192967,"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","status":"online","status_checked_at":"2025-07-31T02:00:08.723Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["c","c99","chungnam-national-university","cnu","cnucse","computer-graphics","graphics","graphics-programming","model-matrix","mvp-matrix","opengl","opengl-tutorial","projection-matrix","raylib","view-matrix"],"created_at":"2024-11-18T16:10:57.315Z","updated_at":"2025-10-08T15:28:57.485Z","avatar_url":"https://github.com/jdeokkim.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MVP Transform Visualizer\r\n\r\n\u003e \"The engines don’t move the ship at all. \r\n\u003e\r\n\u003e **The ship stays where it is and the engines move the universe around it.**\"\r\n\u003e\r\n\u003e — Futurama\r\n\r\n![MVP Transform Visualizer](res/images/screenshot-main.png)\r\n\r\nA [raylib](https://github.com/raysan5/raylib) demo to visualize the Model, View, and Projection (MVP) matrices.\r\n\r\nThis project is a C rewrite of [@diskhkme](https://github.com/diskhkme)'s [MVP Transform Visualizer](https://github.com/diskhkme/mvp_transform_visualize) with additional features, for the \"Computer Graphics\" (1214-3005) course at Chungnam National University.\r\n\r\n**[Feel free to try the WebAssembly version here!](https://jdeokkim.github.io/projects/mvp-demo/)**\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eShow/Hide Demo Video\u003c/summary\u003e\r\n\r\nhttps://github.com/user-attachments/assets/f853c07b-11ad-44d1-b452-2b579885ff93\r\n\r\n\u003c/details\u003e\r\n\r\n## Controls\r\n\r\n- `ALT` + `0`: Draw All Spaces\r\n- `ALT` + `1`: Draw Local Space\r\n- `ALT` + `2`: Draw World Space\r\n- `ALT` + `3`: Draw View Space\r\n- `ALT` + `4`: Draw Clip Space\r\n- `ESC`: Lock/Unlock Observer Camera\r\n- `V`: Show/Hide Player Model Vertices\r\n\r\n## Prerequisites\r\n\r\n- GCC version 11.4.0+\r\n- Git version 2.34.0+\r\n- GNU Make version 4.3+\r\n- raylib 5.5+\r\n\r\n## Building\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eCompiling for Windows\u003c/summary\u003e\r\n\r\n### [w64devkit](https://github.com/skeeto/w64devkit)\r\n\r\nDownload the latest release of w64devkit from [here](https://github.com/skeeto/w64devkit/releases), extract the `.zip` file to your working directory, and run `w64devkit.exe`.\r\n\r\n```console\r\n$ wget -O raylib.zip https://github.com/raysan5/raylib/archive/refs/tags/5.5.zip\r\n$ unzip raylib.zip \u0026\u0026 mv raylib-5.5 raylib\r\n$ make -C raylib/src\r\n```\r\n\r\n```console\r\n$ wget https://github.com/jdeokkim/mvp-demo/archive/refs/heads/main.zip\r\n$ unzip main.zip \u0026\u0026 mv mvp-demo-main mvp-demo\r\n$ make -C mvp-demo -f Makefile.mingw\r\n```\r\n\r\n\u003c/details\u003e\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eCompiling for GNU/Linux\u003c/summary\u003e\r\n\r\n### Debian / Ubuntu\r\n\r\n```console\r\n$ sudo apt update \u0026\u0026 sudo apt install libasound2-dev libgl1-mesa-dev \\\r\n  libglu1-mesa-dev libx11-dev libxrandr-dev libxi-dev libxcursor-dev \\\r\n  libxinerama-dev libxkbcommon-dev\r\n$ git clone https://github.com/raysan5/raylib ~/raylib \u0026\u0026 cd ~/raylib/src\r\n$ make PLATFORM=PLATFORM_DESKTOP GLFW_LINUX_ENABLE_WAYLAND=OFF \u0026\u0026 sudo make install\r\n```\r\n\r\n```console\r\n$ git clone https://github.com/jdeokkim/mvp-demo\r\n$ cd mvp-demo \u0026\u0026 make\r\n```\r\n\r\n\u003c/details\u003e\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eCompiling for the Web (LLVM-to-WebAssembly)\u003c/summary\u003e\r\n\r\n### Debian / Ubuntu\r\n\r\nCompiling for the Web requires installation of the [Emscripten SDK](https://emscripten.org/docs/getting_started/downloads.html).\r\n\r\n```console\r\n$ git clone https://github.com/emscripten-core/emsdk \u0026\u0026 cd emsdk\r\n$ ./emsdk install latest\r\n$ ./emsdk activate latest\r\n$ source ./emsdk_env.sh\r\n```\r\n\r\nThen, you must recompile raylib for the Web:\r\n\r\n```console\r\n$ git clone https://github.com/raysan5/raylib \u0026\u0026 cd raylib/src\r\n$ make -j`nproc` PLATFORM=PLATFORM_WEB GRAPHICS=GRAPHICS_API_OPENGL_ES3 -B\r\n```\r\n\r\nFinally, in order to build this project, do:\r\n\r\n```\r\n$ git clone https://github.com/jdeokkim/mvp-demo\r\n$ cd mvp-demo \u0026\u0026 make -f Makefile.emcc\r\n```\r\n\r\n\u003c/details\u003e\r\n\r\n\u003cdetails\u003e\r\n\u003csummary\u003eCross-compiling from GNU/Linux to Windows (WSL2)\u003c/summary\u003e\r\n\r\n### Debian / Ubuntu\r\n\r\n```console\r\n$ sudo apt install mingw-w64\r\n$ git clone https://github.com/raysan5/raylib \u0026\u0026 cd raylib/src\r\n$ make CC=x86_64-w64-mingw32-gcc AR=x86_64-w64-mingw32-ar OS=Windows_NT\r\n```\r\n\r\n```console\r\n$ git clone https://github.com/jdeokkim/mvp-demo\r\n$ cd mvp-demo \u0026\u0026 make -f Makefile.mingw\r\n```\r\n\r\n\u003c/details\u003e\r\n\r\n## License\r\n\r\nMIT License\r\n\r\n```\r\nCopyright (c) 2024 Jaedeok Kim \u003cjdeokkim@protonmail.com\u003e\r\nCopyright (c) 2024 Minhu Lee \u003cfghkk12d@gmail.com\u003e\r\n\r\nCopyright (c) 2024 Hyungki Kim \u003cdiskhkme@gmail.com\u003e\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdeokkim%2Fmvp-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdeokkim%2Fmvp-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdeokkim%2Fmvp-demo/lists"}