├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── dependabot.yml ├── pull_request_template.md └── workflows │ ├── pull_reqeust.yml │ └── rust.yml ├── .gitignore ├── .gitmodules ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── README.md ├── crates ├── vent-assets │ ├── Cargo.toml │ ├── README.md │ └── src │ │ ├── image.rs │ │ ├── io │ │ ├── file.rs │ │ └── mod.rs │ │ ├── lib.rs │ │ └── model │ │ ├── loader.rs │ │ ├── mod.rs │ │ └── optimizer.rs ├── vent-ecs │ ├── Cargo.toml │ ├── README.md │ └── src │ │ ├── archetype.rs │ │ ├── component │ │ ├── input_component.rs │ │ └── mod.rs │ │ ├── entity │ │ └── mod.rs │ │ ├── lib.rs │ │ └── world │ │ └── mod.rs ├── vent-editor │ ├── Cargo.toml │ ├── README.md │ └── src │ │ ├── gui │ │ └── mod.rs │ │ ├── main.rs │ │ └── render │ │ ├── mod.rs │ │ └── runtime_renderer.rs ├── vent-logging │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── vent-math │ ├── Cargo.toml │ └── src │ │ ├── align16.rs │ │ ├── deref.rs │ │ ├── lib.rs │ │ ├── scalar │ │ ├── mat4.rs │ │ ├── mod.rs │ │ └── quat.rs │ │ └── vec │ │ ├── i32 │ │ ├── ivec2.rs │ │ └── mod.rs │ │ ├── mod.rs │ │ ├── vec2.rs │ │ ├── vec3.rs │ │ └── vec4.rs ├── vent-rendering │ ├── Cargo.toml │ └── src │ │ ├── allocator.rs │ │ ├── buffer.rs │ │ ├── debug.rs │ │ ├── image.rs │ │ ├── instance.rs │ │ ├── lib.rs │ │ ├── mesh.rs │ │ ├── pipeline.rs │ │ ├── surface.rs │ │ └── vertex.rs ├── vent-runtime │ ├── Cargo.toml │ ├── README.md │ ├── assets │ │ ├── fonts │ │ │ ├── Arial.ttf │ │ │ └── OpenSans.ttf │ │ ├── models │ │ │ ├── basic │ │ │ │ └── cube.glb │ │ │ └── test │ │ │ │ └── Sponza-GLTF │ │ │ │ ├── 10381718147657362067.jpg │ │ │ │ ├── 10388182081421875623.jpg │ │ │ │ ├── 11474523244911310074.jpg │ │ │ │ ├── 11490520546946913238.jpg │ │ │ │ ├── 11872827283454512094.jpg │ │ │ │ ├── 11968150294050148237.jpg │ │ │ │ ├── 1219024358953944284.jpg │ │ │ │ ├── 12501374198249454378.jpg │ │ │ │ ├── 13196865903111448057.jpg │ │ │ │ ├── 13824894030729245199.jpg │ │ │ │ ├── 13982482287905699490.jpg │ │ │ │ ├── 14118779221266351425.jpg │ │ │ │ ├── 14170708867020035030.jpg │ │ │ │ ├── 14267839433702832875.jpg │ │ │ │ ├── 14650633544276105767.jpg │ │ │ │ ├── 15295713303328085182.jpg │ │ │ │ ├── 15722799267630235092.jpg │ │ │ │ ├── 16275776544635328252.png │ │ │ │ ├── 16299174074766089871.jpg │ │ │ │ ├── 16885566240357350108.jpg │ │ │ │ ├── 17556969131407844942.jpg │ │ │ │ ├── 17876391417123941155.jpg │ │ │ │ ├── 2051777328469649772.jpg │ │ │ │ ├── 2185409758123873465.jpg │ │ │ │ ├── 2299742237651021498.jpg │ │ │ │ ├── 2374361008830720677.jpg │ │ │ │ ├── 2411100444841994089.jpg │ │ │ │ ├── 2775690330959970771.jpg │ │ │ │ ├── 2969916736137545357.jpg │ │ │ │ ├── 332936164838540657.jpg │ │ │ │ ├── 3371964815757888145.jpg │ │ │ │ ├── 3455394979645218238.jpg │ │ │ │ ├── 3628158980083700836.jpg │ │ │ │ ├── 3827035219084910048.jpg │ │ │ │ ├── 4477655471536070370.jpg │ │ │ │ ├── 4601176305987539675.jpg │ │ │ │ ├── 466164707995436622.jpg │ │ │ │ ├── 4675343432951571524.jpg │ │ │ │ ├── 4871783166746854860.jpg │ │ │ │ ├── 4910669866631290573.jpg │ │ │ │ ├── 4975155472559461469.jpg │ │ │ │ ├── 5061699253647017043.png │ │ │ │ ├── 5792855332885324923.jpg │ │ │ │ ├── 5823059166183034438.jpg │ │ │ │ ├── 6047387724914829168.jpg │ │ │ │ ├── 6151467286084645207.jpg │ │ │ │ ├── 6593109234861095314.jpg │ │ │ │ ├── 6667038893015345571.jpg │ │ │ │ ├── 6772804448157695701.jpg │ │ │ │ ├── 7056944414013900257.jpg │ │ │ │ ├── 715093869573992647.jpg │ │ │ │ ├── 7268504077753552595.jpg │ │ │ │ ├── 7441062115984513793.jpg │ │ │ │ ├── 755318871556304029.jpg │ │ │ │ ├── 759203620573749278.jpg │ │ │ │ ├── 7645212358685992005.jpg │ │ │ │ ├── 7815564343179553343.jpg │ │ │ │ ├── 8006627369776289000.png │ │ │ │ ├── 8051790464816141987.jpg │ │ │ │ ├── 8114461559286000061.jpg │ │ │ │ ├── 8481240838833932244.jpg │ │ │ │ ├── 8503262930880235456.jpg │ │ │ │ ├── 8747919177698443163.jpg │ │ │ │ ├── 8750083169368950601.jpg │ │ │ │ ├── 8773302468495022225.jpg │ │ │ │ ├── 8783994986360286082.jpg │ │ │ │ ├── 9288698199695299068.jpg │ │ │ │ ├── 9916269861720640319.jpg │ │ │ │ ├── Sponza.bin │ │ │ │ ├── Sponza.gltf │ │ │ │ └── white.png │ │ ├── shaders │ │ │ └── app │ │ │ │ ├── 2D │ │ │ │ ├── gui.frag │ │ │ │ └── gui.vert │ │ │ │ └── 3D │ │ │ │ ├── light.frag │ │ │ │ ├── light.vert │ │ │ │ ├── shader.frag │ │ │ │ ├── shader.vert │ │ │ │ ├── skybox.frag │ │ │ │ └── skybox.vert │ │ └── textures │ │ │ └── skybox │ │ │ ├── back.jpg │ │ │ ├── bottom.jpg │ │ │ ├── front.jpg │ │ │ ├── left.jpg │ │ │ ├── right.jpg │ │ │ └── top.jpg │ ├── build.rs │ └── src │ │ ├── lib.rs │ │ ├── main.rs │ │ ├── project │ │ └── mod.rs │ │ ├── render │ │ ├── camera │ │ │ ├── camera_controller3d.rs │ │ │ └── mod.rs │ │ ├── d2 │ │ │ └── mod.rs │ │ ├── d3 │ │ │ ├── light_renderer.rs │ │ │ ├── mod.rs │ │ │ └── skybox_renderer.rs │ │ ├── gui │ │ │ ├── debug_gui.rs │ │ │ └── mod.rs │ │ ├── mod.rs │ │ ├── model.rs │ │ └── model_renderer.rs │ │ └── util │ │ ├── crash.rs │ │ ├── input_handler.rs │ │ ├── mod.rs │ │ └── version.rs ├── vent-sdk │ ├── Cargo.toml │ └── src │ │ ├── lib.rs │ │ └── utils │ │ ├── mod.rs │ │ └── stopwatch.rs ├── vent-ui │ ├── Cargo.toml │ └── src │ │ ├── font │ │ ├── ab_glyph.rs │ │ ├── loader.rs │ │ └── mod.rs │ │ ├── lib.rs │ │ ├── renderer.rs │ │ └── widgets │ │ ├── button.rs │ │ └── mod.rs └── vent-window │ ├── Cargo.toml │ ├── README.md │ └── src │ ├── keyboard.rs │ ├── lib.rs │ ├── mouse.rs │ └── platform │ ├── mod.rs │ ├── wayland │ └── mod.rs │ └── windows │ └── mod.rs ├── docs └── logo.png └── test └── runtime-sandbox ├── Cargo.toml ├── project.vent └── src └── main.rs /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | - [ ] This Issue beining opend using the Latest version/commit available 11 | 12 | **Information (please complete the following information):** 13 | - OS: [e.g. Windows, Linux, Android...] 14 | - OS Version: [e.g. 10/11] 15 | - GPU: [e.g. AMD 7700XT] 16 | - GPU Driver: [e.g. Mesa 24.1.4] 17 | 18 | **Describe the bug** 19 | 20 | 21 | **To Reproduce** 22 | 23 | 24 | **Expected behavior** 25 | 26 | 27 | **Screenshots** 28 | 29 | 30 | **Additional context** 31 | 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 2 | 3 | version: 2 4 | updates: 5 | - package-ecosystem: "github-actions" 6 | directory: "/" 7 | schedule: 8 | interval: "daily" 9 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Pull Request Checklist 2 | 3 | - [ ] I have tested all platforms that were changed 4 | - [ ] I have updated the documentation (if applicable) 5 | - [ ] I have added tests (if applicable) 6 | 7 | ## Pre-merge checklist 8 | 9 | Before merging, please make sure that the following commands have been run: 10 | 11 | - [ ] `cargo clippy --fix` 12 | - [ ] `cargo fmt` 13 | 14 | ## Description 15 | 16 | Please provide a clear and concise description of the changes you have made, including any relevant context and background information. 17 | 18 | ## Related Issues 19 | 20 | If this pull request is related to any issues, please list them here. 21 | -------------------------------------------------------------------------------- /.github/workflows/pull_reqeust.yml: -------------------------------------------------------------------------------- 1 | name: Pull Reqeust 2 | 3 | on: 4 | pull_request: 5 | branches: [ "master" ] 6 | types: 7 | - labeled 8 | 9 | env: 10 | CARGO_TERM_COLOR: always 11 | 12 | jobs: 13 | build: 14 | if: ${{ github.event.label.name == 'rust' }} 15 | name: Rust 16 | uses: ./.github/workflows/rust.yml 17 | -------------------------------------------------------------------------------- /.github/workflows/rust.yml: -------------------------------------------------------------------------------- 1 | name: Rust 2 | 3 | on: 4 | push: 5 | branches: ["master"] 6 | pull_request: 7 | branches: ["master"] 8 | 9 | env: 10 | CARGO_TERM_COLOR: always 11 | 12 | jobs: 13 | build-linux: 14 | name: Linux Build 15 | runs-on: ubuntu-latest 16 | steps: 17 | - name: Checkout repository 18 | uses: actions/checkout@v4 19 | - name: Install packages 20 | run: sudo apt update && sudo apt install -y libxkbcommon-dev 21 | - name: Setup Glsl 22 | uses: humbletim/setup-vulkan-sdk@v1.2.1 23 | with: 24 | vulkan-query-version: 1.3.204.0 25 | vulkan-components: Glslang 26 | vulkan-use-cache: true 27 | - name: Setup Rust toolchain 28 | uses: actions-rust-lang/setup-rust-toolchain@v1.12.0 29 | - name: Run test 30 | run: cargo test 31 | build-windows: 32 | name: Windows Build 33 | runs-on: windows-latest 34 | steps: 35 | - name: Checkout repository 36 | uses: actions/checkout@v4 37 | - name: Prepare Vulkan SDK 38 | uses: humbletim/setup-vulkan-sdk@v1.2.1 39 | with: 40 | vulkan-query-version: 1.3.204.0 41 | vulkan-components: Glslang 42 | vulkan-use-cache: true 43 | - name: Setup Rust toolchain 44 | uses: actions-rust-lang/setup-rust-toolchain@v1.12.0 45 | - name: Run test 46 | run: cargo test 47 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | */target 2 | 3 | /.idea 4 | 5 | /.vscode 6 | 7 | *.spv 8 | 9 | 10 | # Added by cargo 11 | 12 | /target 13 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ventengine/Vent-Engine/89d706c80c2f1ae3c2b441cbec49c49b388471c0/.gitmodules -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | lilalexmed@proton.me. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Contributing to Vent Engine 2 | 3 | You're interested in contributing to Vent Engine?, This guide outlines the process for submitting code contributions and participating in the project. 4 | 5 | ## Getting Started 6 | 7 | - **Fork the Repository: Create a fork of the Vent Engine repository on GitHub.** 8 | - **Clone your Fork: Clone your forked repository to your local machine.** 9 | - **Create a Branch: Create a new branch for your contribution. Use a descriptive branch name that reflects your changes.** 10 | - **Install the Rust programming Language at [here](https://www.rust-lang.org/tools/install)** 11 | 12 | ## Making Changes 13 | 14 | - **[Install Dependencies](#install-dependencies): Make sure you have all the necessary dependencies installed to build and run Vent Engine** 15 | - **Code Style: Follow the existing code style conventions used in the project. This ensures consistent and maintainable code.** 16 | - **Write Clean Code: Write clear, concise, and well-documented code.** 17 | 18 | ## Submitting your Contribution 19 | 20 | - **Make sure your Code does Compile fine** 21 | - **Run `cargo fmt`** 22 | - **Fix any warnings your change produced when running `cargo check`.** 23 | - **Commit Changes: Commit your changes with informative commit messages that describe the purpose of your modifications.** 24 | - **Push your Branch: Push your branch to your forked repository on GitHub.** 25 | - **Create a Pull Request: Create a pull request from your branch to the main branch of the upstream Vent Engine repository.** 26 | 27 | ## Install Dependencies 28 | 29 | **For all Platforms you will need to install the [Vulkan SDK](https://vulkan.lunarg.com/sdk/home)** 30 | 31 | - [Windows](#windows) 32 | - [Linux](#linux) 33 | 34 | ### Windows 35 | 36 | - Windows SDK (Note: usually comes in Visual Studio Installer when installing Rust) 37 | 38 | ### Linux 39 | 40 | - Wayland (or XWayland) 41 | - xkbcommon (libxkbcommon) 42 | 43 | ## Additional Notes 44 | 45 | - Issues: Feel free to create issues on the GitHub repository for bugs, feature requests, or discussions. 46 | - Community: We encourage you to participate in the community discussions and help others using Vent Engine. 47 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | resolver = "2" 3 | members = [ 4 | "crates/*", 5 | "test/*"] 6 | 7 | [workspace.package] 8 | version = "0.1.0" 9 | edition = "2021" 10 | 11 | [profile.release] 12 | lto = true 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |