{"id":16606629,"url":"https://github.com/sindney/fury3d","last_synced_at":"2025-03-21T14:30:49.678Z","repository":{"id":145603952,"uuid":"50645656","full_name":"sindney/fury3d","owner":"sindney","description":"A simple but modern graphic engine","archived":false,"fork":false,"pushed_at":"2018-10-12T13:54:56.000Z","size":11859,"stargazers_count":86,"open_issues_count":1,"forks_count":25,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-03-18T02:03:17.525Z","etag":null,"topics":["3d-engine","cpp11","imgui","rapidjson","sfml"],"latest_commit_sha":null,"homepage":null,"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/sindney.png","metadata":{"files":{"readme":"README.ZH-CN.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}},"created_at":"2016-01-29T07:19:28.000Z","updated_at":"2024-09-27T14:30:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"4cba4788-cde1-49e6-b36e-6d7ccce4a83f","html_url":"https://github.com/sindney/fury3d","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sindney%2Ffury3d","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sindney%2Ffury3d/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sindney%2Ffury3d/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sindney%2Ffury3d/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sindney","download_url":"https://codeload.github.com/sindney/fury3d/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244815078,"owners_count":20514879,"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":["3d-engine","cpp11","imgui","rapidjson","sfml"],"created_at":"2024-10-12T01:09:25.526Z","updated_at":"2025-03-21T14:30:48.772Z","avatar_url":"https://github.com/sindney.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](https://img.shields.io/badge/dev-v0.2.1-green.svg) ![](https://img.shields.io/badge/build-passing-green.svg) ![](https://img.shields.io/badge/license-MIT-blue.svg)\n\n# Fury3D\n\n[English](README.md)\n\n## 简介\n\nFury3d是一个使用C++11与高版本opengl编写的跨平台3D引擎。\n\n目前支持Windows与Mac OSX操作系统。\n\n注意，此项目仅仅是个人学习用项目。\n\n特性: \n\n* 使用现代的Opengl\n* C++11的智能指针简化了内存管理的复杂度\n* 灵活的Signal消息系统 (使用函数指针，所以不支持lambda函数)\n* 支持FBX模型文件的读取，可直接读取场景的灯光，静态模型，以及带有蒙皮骨骼动画的模型\n* 可使用json自由配置的渲染管线\n* 内置阉割版light-pre pass渲染管线\n* 接入了强大的GUI库[ImGui](https://github.com/ocornut/imgui)\n* 支持方向光，点光，聚光灯的阴影贴图\n* 拥有自己的场景文件，支持输出json，支持压缩解压缩\n\n计划:\n\n* 添加阴影. (已实现，需改进)\n* 添加骨骼动画. (已简单实现，仍需改进)\n* 解析GLTF场景交换格式，放弃支持FbxSDK\n* 实现HDR管线与PBR材质\n\n## 兼容性\n\n测试编译器: \n\n* MSVC 2013 Community\n* Apple LLVM version 7.0.2 (clang-700.1.81)\n\n由于FBX SDK在Windows系统上 (FBXSDK为可选编译选项，可通过引擎的场景文件载入场景)，只有MSVC编译的版本，所以在Windows上必须用MSVC编译Fury3D。\n\n应该支持所有支持Opengl3.3+的显卡\n\n测试第三方库: \n\n* Rapidjson 1.1.0\n* SFML 2.4.1\n\n## 测试截图\n\n![阴影和动态光照](screenshots/1.jpg)\n\n![阴影和动态光照](screenshots/2.jpg)\n\n## 例子\n\n你可以使用json配置自己的渲染管线，[去看看。](https://github.com/sindney/fury3d/blob/master/examples/bin/Resource/Pipeline/DefferedLighting.json)\n\n一个最简单的例子： \n\n~~~~~~~~~~cpp\n// 这是我们场景树的根节点\nauto m_RootNode = SceneNode::Create(\"Root\");\n\n// 可以从fbx文件载入场景\nFbxParser::Instance()-\u003eLoadScene(\"Resource/Scene/scene.fbx\", m_RootNode, importOptions);\n\n// 也可以从fury的自定义场景文件中载入场景\nFileUtil::LoadCompressedFile(m_Scene, FileUtil::GetAbsPath(\"Resource/Scene/scene.bin\"));\n\n// 你可以遍历任意一种载入的资源列表\nScene::Manager()-\u003eForEach\u003cAnimationClip\u003e([\u0026](const AnimationClip::Ptr \u0026clip) -\u003e bool\n{\n\tstd::cout \u003c\u003c \"Clip: \" \u003c\u003c clip-\u003eGetName() \u003c\u003c \" Duration: \" \u003c\u003c clip-\u003eGetDuration() \u003c\u003c std::endl;\n\treturn true;\n});\n\n// 也可以通过名字或者名字的哈希值来得到某资源指针\nauto clip = Scene::Manager()-\u003eGet\u003cAnimationClip\u003e(\"James|Walk\");\n\n// 初始化八叉树\nauto m_OcTree = OcTree::Create(Vector4(-10000, -10000, -10000, 1), Vector4(10000, 10000, 10000, 1), 2);\nm_OcTree-\u003eAddSceneNodeRecursively(m_RootNode);\n\n// 载入渲染管线\nauto m_Pipeline = PrelightPipeline::Create(\"pipeline\");\nFileUtil::LoadFile(m_Pipeline, FileUtil::GetAbsPath(\"Path To Pipeline.json\"));\n\n// 绘制场景\nm_Pipeline-\u003eExecute(m_OcTree);\n~~~~~~~~~~\n\n## 非常感谢\n\n* [FbxSdk](http://www.autodesk.com/products/fbx/overview) - Fbx模型加载\n* [Rapidjson](https://github.com/miloyip/rapidjson) - Json的序列化反序列化\n* [Plog](https://github.com/SergiusTheBest/plog) - 日志的实现\n* [ThreadPool](https://github.com/progschj/ThreadPool) - 线程池的实现\n* [Stbimage](https://github.com/nothings/stb) - 载入图像\n* [LZ4](https://github.com/Cyan4973/lz4) - 文件压缩与解压缩\n* [Sfml](http://www.sfml-dev.org) - 解决平台相关的窗口相关需求\n* [ASSIMP](https://github.com/assimp/assimp) - Mesh的物理资源优化\n* [Ogre3d](http://www.ogre3d.org) - 八叉树的实现\n* [ImGui](https://github.com/ocornut/imgui) - 测试用GUI库\n* [RenderDoc](https://github.com/baldurk/renderdoc) - 测试Opengl渲染\n\n## 最后\n\n如果你使用SublimeText码字，可以尝试我的 [GLSLCompiler](https://github.com/sindney/GLSLCompiler) 组件来debug glsl代码 :D\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsindney%2Ffury3d","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsindney%2Ffury3d","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsindney%2Ffury3d/lists"}