{"id":13533233,"url":"https://github.com/KTStephano/StratusGFX","last_synced_at":"2025-04-01T21:32:02.673Z","repository":{"id":149173264,"uuid":"171079499","full_name":"KTStephano/StratusGFX","owner":"KTStephano","description":"Realtime 3D rendering engine","archived":false,"fork":false,"pushed_at":"2025-02-12T03:51:52.000Z","size":329054,"stargazers_count":730,"open_issues_count":0,"forks_count":40,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-01T14:01:03.527Z","etag":null,"topics":["3d","3d-graphics","computer-graphics","computer-graphics-opengl","game-dev","game-development","gamedev","global-illumination","graphics","graphics-3d","graphics-engine","graphics-programming","graphics-rendering","linux","opengl","pbr","rendering","rendering-3d-graphics","rendering-engine","windows"],"latest_commit_sha":null,"homepage":"https://ktstephano.github.io/portfolio","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KTStephano.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}},"created_at":"2019-02-17T03:56:26.000Z","updated_at":"2025-04-01T13:39:53.000Z","dependencies_parsed_at":"2023-10-25T19:35:02.367Z","dependency_job_id":"7dd3dace-612d-4192-b0f7-7f51540e16c7","html_url":"https://github.com/KTStephano/StratusGFX","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KTStephano%2FStratusGFX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KTStephano%2FStratusGFX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KTStephano%2FStratusGFX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KTStephano%2FStratusGFX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KTStephano","download_url":"https://codeload.github.com/KTStephano/StratusGFX/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246713301,"owners_count":20821872,"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","3d-graphics","computer-graphics","computer-graphics-opengl","game-dev","game-development","gamedev","global-illumination","graphics","graphics-3d","graphics-engine","graphics-programming","graphics-rendering","linux","opengl","pbr","rendering","rendering-3d-graphics","rendering-engine","windows"],"created_at":"2024-08-01T07:01:17.906Z","updated_at":"2025-04-01T21:32:02.657Z","avatar_url":"https://github.com/KTStephano.png","language":"C++","readme":"# ![logo](https://user-images.githubusercontent.com/8399235/254135954-84b9cb9a-b01e-43e0-8a3c-16217af4432e.jpg)\n\nRelease State: **Pre-Release/Beta**\n\nEngine Version: **0.10**\n\nRealtime 3D rendering engine. Expect bugs and instability as it is still under development. The engine is free and open source (licensed under MPL-2.0). Please feel free to contact me about any questions or issues you have!\n\nAll of the following scenes were rendered in realtime on a GTX 1060 to demonstrate Stratus features. Links to the 3D assets can be found further down this readme.\n\n![sponza1](https://ktstephano.github.io/portfolio/wp-content/uploads/2024/12/SponzaUp2.png)\n\n![sponza2](https://ktstephano.github.io/portfolio/wp-content/uploads/2024/12/SponzaCurtains.png)\n\n![sponza3](https://ktstephano.github.io/assets/v0.10/SponzaGI.png)\n\n(3D Model: Intel Sponza)\n\n![bistro1](https://ktstephano.github.io/portfolio/wp-content/uploads/2024/12/Bistro_VSM_GI.png)\n\n![bistro2](https://ktstephano.github.io/assets/v0.10/Bistro1.png)\n\n![bistro3](https://ktstephano.github.io/portfolio/wp-content/uploads/2024/12/BistroNight.png)\n\n![bistro4](https://ktstephano.github.io/portfolio/wp-content/uploads/2024/12/BistroNight2.png)\n\n(3D Model: Bistro)\n\n![sanmiguel1](https://ktstephano.github.io/portfolio/wp-content/uploads/2024/12/SanMiguel_VSM_GI.png)\n\n![sanmiguel2](https://github.com/KTStephano/ktstephano.github.io/blob/main/assets/v0.10/SanMiguel_GI2.0.png)\n\n![sanmiguel3](https://ktstephano.github.io/portfolio/wp-content/uploads/2024/12/SanMiguel_VSM_GI2.png)\n\n(3D Model: San Miguel)\n\n![bathroom1](https://ktstephano.github.io/portfolio/wp-content/uploads/2024/12/Bathroom5.png)\n\n![bathroom2](https://ktstephano.github.io/portfolio/wp-content/uploads/2024/12/Bathroom9.png)\n\n(3D Model: The Bathroom)\n\n![JunkShop](https://ktstephano.github.io/portfolio/wp-content/uploads/2024/12/JunkShop.png)\n\n(3D Model: Junk Shop)\n\n![cornell_front](https://ktstephano.github.io/assets/v0.10/Cornell_Front.png)\n\n(3D Model: Cornell Box)\n\n-\u003e [Video Feature Reel](https://www.youtube.com/watch?v=dj0wVxwd1ng)\n\n-\u003e [Graphics Image Feature Reel](https://ktstephano.github.io/rendering/stratusgfx/feature_reel)\n\n-\u003e [High Level Architecture Overview](https://ktstephano.github.io/rendering/stratusgfx/architecture)\n\n-\u003e [How A Frame Is Rendered](https://ktstephano.github.io/rendering/stratusgfx/frame_analysis_v0_10)\n\n# Roadmap for Engine Version 0.11 (in development)\n\n* [Virtual shadow maps](https://ktstephano.github.io/rendering/stratusgfx/svsm)\n* New Vulkan + DirectX 12 graphics backend (dropping OpenGL support)\n* Two-pass occlusion culling\n* Texture streaming\n* Improved GI quality and performance\n* New engine module system for easier extensibility\n* Refactored renderer to make adding custom passes easier\n\n# Purpose\n\nThis project was created as a hobby research project for learning low level engine development and implementing modern graphics techniques.\n\n# Use Cases\n\nAt its core Stratus is a rendering engine first with minimal features found in general purpose engines. Its focus is on modern 3D graphics capabilities. Because of this it has two main use cases:\n\n1) People taking it and using it as a learning resource.\n\n2) Integration into other general purpose engines (new or existing) and modeling tools.\n\nBecause of the MPL license, any community changes made to the rendering code will continue to help others in new and existing projects that use it.\n\n# Current Supported Features\n\n### Graphics\n\n* Physically based metallic-roughness pipeline\n* Realtime global illumination\n* Spatiotemporal image denoising\n* Raymarched volumetric lighting and shadowing\n* Cascaded shadow mapping\n* Deferred lighting\n* Mesh LOD generation and selection\n* GPU Frustum Culling\n* Screen Space Ambient Occlusion (SSAO)\n* Reinhard or ACES Tonemapping\n* Fog\n* Bloom\n* Fast Approximate Anti-Aliasing (FXAA)\n* Temporal Anti-Aliasing (TAA)\n\n### Engine\n\n* Pool allocators\n* GPU memory allocators/managers\n* Multi threaded utilities\n* Concurrent hash map\n* Entity-Component System (ECS)\n* Logging\n\n### Modern graphics API features used\n\n* Compute shaders\n* Direct state access\n* Programmable vertex pulling\n* Multi draw elements indirect\n* Shader storage buffer\n\n# Software/Driver Requirements\n\n| Type | Requirement |\n| --- | --- |\n| OS | Windows 10/11 or Linux |\n| Compiler | Support for C++17 |\n| Graphics | Support for OpenGL 4.6 |\n\n# Minimum Hardware Requirements\n\n| Type | Minimum |\n| --- | --- |\n| CPU | Ryzen 3 1200 (quad core) |\n| RAM | 8 GB |\n| GPU | Nvidia GTX 1050 Ti |\n\n# Downloading Sample 3D Model Data\n\n1) A zip file containing Sponza, Interrogation Room, San Miguel, Bistro, Bathroom, etc. can be found here: [https://drive.google.com/file/d/13lBzOtu3wJEDmK0stxBeiT59cTQzV84F/view?usp=sharing](https://drive.google.com/file/d/13lBzOtu3wJEDmK0stxBeiT59cTQzV84F/view?usp=sharing)\n\n2) Extract the Resources.zip folder into the root of StratusGFX. It will then be at the same level as Bin/, Examples/, Source/, Tests/. Make sure that the folder structure looks like StratusGFX/Resources/*.glb and not StratusGFX/Resources/Resources/.\n\n(see further down this README for a full list of credits for where the sample 3D model data came from)\n\n# Building For Windows \u0026 Linux\n\nThis code base will currently not work on MacOS. Linux and Windows should both be fine so long as the graphics driver supports OpenGL 4.6 and the compiler supports C++17.\n\nFirst set up the repo\n\n    git clone --recursive https://github.com/KTStephano/StratusGFX.git\n    cd StratusGFX\n\n## Prerequisites\n\nMake sure your graphics drivers are up-to-date.\n\nOn Linux you will likely need to install the following packages:\n\n    libgl1-mesa-dev\n    libxext-dev\n\n(or the equivalent for your distro)\n\n## Option 1: Standard Build\n\nThis is the preferred build if all you want to do is build the examples and run them.\n\n    python3 ./build_examples.py --assimp\n\n-\u003e LINUX NOTE: If you get an error during the assimp build of the above step, use your local package manager to install assimp instead. Then re-run the above step as:\n\n    python3 ./build_examples.py\n\nNow you should be able to go into the StratusGFX/Bin/ folder and run the examples!\n\n## Option 2: Development Build\n\nUse this if you plan to make source code changes to anything in Examples/ Source/ or Tests/. You will only need to build the dependencies once and then after that you can just re-run the cmake build step any time you make changes.\n\nBuild 3rd party dependencies -\u003e should only need to do this once per clone\n\n    python3 ./dependency_build.py --assimp\n\n-\u003e LINUX NOTE: If you get an error while building assimp, use your local package manager to install assimp instead. Then re-run the above step as:\n\n    python3 ./dependency_build.py\n\nNow build the StratusGFX source\n\n### Windows\n\n    cmake -Bbuild -S. -DBUILD_TESTS=ON\n    cmake --build build/ -j 8 --config RelWithDebInfo\n\n### Linux\n\n    cmake -Bbuild -S. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTS=ON\n    cmake --build build/ -j 8\n\nAll executables will be put into StratusGFX/Bin folder. Make sure you run them while inside StratusGFX/Bin/. Good ones to run to see if it worked are \n\n    Ex00_StartupShutdown.exe (runs through initialize, run one frame, shutdown sequence)\n    Ex01_StratusGFX.exe (you should see a forest of red cubes since textures aren't bundled with source)\n    StratusEngineUnitTests.exe\n    StratusEngineIntegrationTests.exe\n\n# Running The Examples\n\nIf you are having trouble with the downloading of the 3D assets or running the examples, a good place to check is here:\n\n[https://github.com/KTStephano/StratusGFX/wiki/Examples](https://github.com/KTStephano/StratusGFX/wiki/Examples)\n\nIf this does not help then feel free to send me an email (jtstephano@gmail.com) or open an issue.\n\n# Credits For 3D Assets Used In Examples\n\nCredits for the 3D assets used in the examples/demos are as follows:\n\n[Crytek Sponza](https://github.com/KhronosGroup/glTF-Sample-Models/tree/main/2.0/Sponza)\n\n[Intel Sponza](https://www.intel.com/content/www/us/en/developer/topic-technology/graphics-research/samples.html)\n\n[San Miguel](https://casual-effects.com/data/)\n\n[Bistro](https://developer.nvidia.com/orca/amazon-lumberyard-bistro)\n\n[Junk Shop](https://cloud.blender.org/p/gallery/5dd6d7044441651fa3decb56)\n\n[The Bathroom](https://sketchfab.com/3d-models/the-bathroom-free-d5e5035dda434b8d9beaa7271f1c85fc)\n\n[Interrogation Room](https://sketchfab.com/3d-models/interogation-room-6e9151ec29494469a74081ddc054d569)\n\n[Abandoned Warehouse](https://sketchfab.com/3d-models/abandoned-warehouse-1e40d433ed6f48fb880a0d2172aff7ca)\n\n# First Places to Look\n\nYou can check [High Level Architecture Overview](https://ktstephano.github.io/rendering/stratusgfx/architecture), or you can start by looking through the code under Examples/ExampleEnv00 and Examples/ExampleEnv01. They both depend on code that is inside of Examples/Common which is another good place to look around.\n\nNone of the test scenes are bundled with this source so the rest of the environments will be completely blank when running.\n\n# Controls For Example Environments\n\nWASD to move\n\nLeft mouse to fly up, right mouse to fly down\n\nU unlocks look up/look down for camera\n\nF toggles camera light\n\nE toggles directional light\n\nG toggles global illumination\n\nR recompiles all shaders\n","funding_links":[],"categories":["GameEngine Design","C++","Digital Content Creation Software (DCCs)","Libraries"],"sub_categories":["3D realtime engines","C++"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKTStephano%2FStratusGFX","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKTStephano%2FStratusGFX","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKTStephano%2FStratusGFX/lists"}