{"id":17788885,"url":"https://github.com/moebiussurfing/ofxsurfingpbr","last_synced_at":"2025-10-04T01:39:53.603Z","repository":{"id":204229863,"uuid":"711381257","full_name":"moebiussurfing/ofxSurfingPBR","owner":"moebiussurfing","description":"Simple helper with examples for easily testing the new PBR features from OF 0.12+.","archived":false,"fork":false,"pushed_at":"2025-06-06T00:29:13.000Z","size":158364,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-06-06T01:27:36.229Z","etag":null,"topics":["openframeworks","openframeworks-addon"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moebiussurfing.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-10-29T04:36:57.000Z","updated_at":"2025-06-06T00:29:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"44dfa023-f265-4f1a-bfa7-157e0da0b4de","html_url":"https://github.com/moebiussurfing/ofxSurfingPBR","commit_stats":null,"previous_names":["moebiussurfing/ofxsurfingpbr"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/moebiussurfing/ofxSurfingPBR","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingPBR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingPBR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingPBR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingPBR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moebiussurfing","download_url":"https://codeload.github.com/moebiussurfing/ofxSurfingPBR/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moebiussurfing%2FofxSurfingPBR/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262123183,"owners_count":23262543,"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":["openframeworks","openframeworks-addon"],"created_at":"2024-10-27T10:24:29.591Z","updated_at":"2025-10-04T01:39:48.567Z","avatar_url":"https://github.com/moebiussurfing.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WIP \n\n## OVERVIEW\n\n**openFrameworks** addon to easily test, learn, and use the new **PBR features** from the new **OF 0.12+** releases.  \n\n(You should use the [GitHub master branch](https://github.com/openframeworks/openFrameworks)!)  \n\nAll this code is copied from and hardly based on this [OF forum topic](https://forum.openframeworks.cc/t/ofshadow-and-ofshader-issue-on-of-0-12/42600/19 ).  \nOriginal authors: [@NickHardeman](https://github.com/NickHardeman) and [@paolo-scoppola](https://github.com/paolo-scoppola).  \n\n## VIDEO\n\nhttps://github.com/moebiussurfing/ofxSurfingPBR/assets/2106149/43ac19b8-da41-4dd5-ad4d-b77f885d3e24\n\n\u003cdetails\u003e\n  \u003csummary\u003eSCREENSHOTS\u003c/summary\u003e\n  \u003cp\u003e\n\n### 1_Example_Basic\n![](1_Example_Basic/Capture.PNG)\n\n### 2_Example_Models\n![](2_Example_Models/Capture.PNG)\n\n### 3_Example_Lights\n![](3_Example_Lights/Capture.PNG)\n\n### 4_Example_Materials\n![](4_Example_Materials/Capture.PNG)\n\n### 5_Example_Shadows\n![](5_Example_Shadows/Capture.PNG)\n \n### 6_Example-3D_Parts\n![](6_Example_3D_Parts/Capture.PNG)\n![](6_Example_3D_Parts/CaptureData2.PNG)\n![](6_Example_3D_Parts/CaptureData3.PNG)\n![](6_Example_3D_Parts/CaptureData4.PNG)\n\n  \u003c/p\u003e\n\u003c/details\u003e\n\n## FEATURES\n\n- Main class `ofxSurfingPBR.h` is a **Scene Manager** with default common elements:\n  - Two ready-to-use editable parametric materials:\n    - **Material A**. For the **Plane** (floor).\n    - **Material B**. For the **other Objects**.\n  - Default **Lights combo**: \n    - Flexible **Point**, **Directional** and **Spot**.\n  - **Cubemaps** (**HDR**) files loader.\n  - **Background color** and **Sphere/Box container** with material.\n\n- Class `SurfingMaterial.h`: **Standalone Materials** can be used independently of the main class.\n\n- Class `SurfingLights.h`: Four **bundled lights**: `Point`, `Direct`, `Spot` and `Area` with shadows. \n\n- Class `SurfingSceneManager.h`: Bundles the lights from `SurfingLights.h` and allows **queuing materials** dynamically. Standalone and not loaded by default on `ofxSurfingPBR`.\n\n- Persistent settings:\n  - Optimized **auto save** on any change.\n  - **Plane** simple material, colors, transforms, snapshots, etc...\n  - All materials with full **PBR** specs. \n  - Internal `camera`.\n\n- Material **Randomizers**.\n  - **History** browsing workflow.\n    - **Presets**/**Snapshots** (Store/Recall) explorer system.\n- Included **3D models** browser/loader class.\n\n- Added **Shader** for *testing/code*.\n  - **Displacement** applied to the plane and his material/mesh.\n\n### TODO\n  - Add more **Shaders** related stuff. / HELP IS WELCOME! \n    - _Mesh/vertex_ displacements (not just heightmaps). / TODO \n    - Shader **Debugger**. / TODO \n\n\u003cdetails\u003e\n  \u003csummary\u003eUSAGE\u003c/summary\u003e\n  \u003cp\u003e\n\n## EXAMPLE\n\n### main.cpp\n```.cpp\n#include \"ofApp.h\"\n#include \"ofMain.h\"\n\nint main() {\n    ofGLWindowSettings settings;\n    settings.setGLVersion(3, 2);\n\n    auto window = ofCreateWindow(settings);\n\n    ofRunApp(window, make_shared\u003cofApp\u003e());\n    ofRunMainLoop();\n}\n```\n\n### ofApp.h\n```.cpp\n#pragma once\n#include \"ofMain.h\"\n\n#include \"ofxSurfingPBR.h\"\n\nclass ofApp : public ofBaseApp {\npublic:\n    void setup();\n    void draw();\n\n    ofxSurfingPBR pbr;\n    void renderScene();\n};\n```\n\n### ofApp.cpp\n```.cpp\nvoid ofApp::setup() {\n    pbr.setup();\n\n    // Pass the render scene function\n    callback_t f = std::bind(\u0026ofApp::renderScene, this);\n    pbr.setFunctionRenderScene(f);\n}\n\nvoid ofApp::draw() {\n    pbr.draw();\n    pbr.drawGui();\n}\n\nvoid ofApp::renderScene()\n{\n    // Plane floor\n    pbr.drawPlane();\n\n    // Other objects\n    pbr.beginMaterial();\n    {\n        /* DRAW HERE! */\n    }\n    pbr.endMaterial();\n}\n```\n\n  \u003c/p\u003e\n\u003c/details\u003e\n\n## DEPENDENCIES\n\n- [OF 0.12+](https://github.com/openframeworks/openFrameworks).\n- [ofxSurfingHelpersLite](https://github.com/moebiussurfing/ofxSurfingHelpersLite).\n    - **Helper classes** for settings serializers, auto saver, `ofxGui` customizer, layout helpers, `ofDrawBitmapStringBox`...etc.  \n- [ofxSurfingCameraSimple](https://github.com/moebiussurfing/ofxSurfingCameraSimple).\n    - An internal improved `ofEasyCam` is bundled.\n- **ofxAssimpModelLoader** / _OF core_\n    - Only for the example `2_Example_Models`. \n\n## REQUERIMENTS \n- Download and copy the content of `data.zip` to the examples or to your projects into `/bin/data`:  \n  * Data for any or new projects: [bin/data.zip](https://mega.nz/file/pa0xGarZ#GqUDFxvSn8SZQmDfPFDDhyEHBRYLzMzVkEpq7y4-tPU)  \n  * Data for `2_Example_Models`: [bin/data.zip](https://mega.nz/file/VfEBDbrR#QA9O0R5yaNkEh8Zf00ffq2OTgmAGVOR6LXB875IyScc)  \n  * Data for `6_Example_3D_Parts`: [bin/data.zip](https://mega.nz/file/hHVzWBCL#XFFSxCm_nLtqQ-nqskIhzn4KxeUUVUljOb-UtGOiekA)  \n  * Only shaders: [bin/dataShaders.zip](https://mega.nz/file/0H8gCaII#dOVPZNUMnk891w61zVlmu5zgb9xSLSN5FIY7jDASAoQ)\n  * Folder with all the files: [@ MEGA](https://mega.nz/folder/tLkR0TqL#KdJ4l0O6v2w6qaT_dLz2IA).\n- Notice that all the examples should work without the data files too.\n\n/bin/  \n-- /data/  \n---- /assets/fonts/ - ttf,otf | for ofxGui customize  \n---- /cubemaps/ - exr,hdr,jpg | for CubeMaps  \n---- /models/ - obj,ply,fbx | for 3d objects  \n---- /images/ - jpg,png | for Bg sphere texture  \n---- /shadersGL2/ - frag,vert | used when enabled  \n---- /shadersGL3/ - frag,vert | used when enabled  \n\n## TESTED SYSTEMS\n* **Windows 11** / **VS 2022** / **OF 0.12+** @ [GitHub master branch](https://github.com/openframeworks/openFrameworks)\n\n## LICENSE\n**MIT License**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoebiussurfing%2Fofxsurfingpbr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoebiussurfing%2Fofxsurfingpbr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoebiussurfing%2Fofxsurfingpbr/lists"}