diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..3191cc0 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,50 @@ +name: Docs +on: + push: + branches: [master] +permissions: + contents: read + pages: write + id-token: write +concurrency: + group: deploy + cancel-in-progress: false +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install Dependencies + run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev + - name: Setup Rust + uses: dtolnay/rust-toolchain@stable + - name: Configure cache + uses: Swatinem/rust-cache@v2 + - name: Setup pages + id: pages + uses: actions/configure-pages@v4 + - name: Clean docs folder + run: cargo clean --doc + - name: Build docs + run: cargo doc --no-deps + - name: Add redirect + run: echo '' > target/doc/index.html + - name: Remove lock file + run: rm target/doc/.lock + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: target/doc + deploy: + name: Deploy + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..e38739d --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,24 @@ +name: Rust + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Install Dependencies + run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev + - name: Build + run: cargo build --verbose + - name: Run tests + run: cargo test --verbose diff --git a/README.md b/README.md index 117333a..b8085fa 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Note: This is a full-screen post process effect and cannot be enabled/disabled f ![](./doc/screenshot_smooth.png) Configuration Used: ```rs -grex_outline_post_process::components::OutlinePostProcessSettings { +bevy_outline_post_process::components::OutlinePostProcessSettings { weight: 2.0, threshold: 0.0, } diff --git a/src/components.rs b/src/components.rs index cc6c471..49f4684 100644 --- a/src/components.rs +++ b/src/components.rs @@ -3,8 +3,13 @@ use bevy::{ render::{extract_component::ExtractComponent, render_resource::ShaderType}, }; +/// Component which, when inserted into an entity with a camera and normal prepass, enables an outline effect for that +/// camera. #[derive(Component, ShaderType, ExtractComponent, PartialEq, Clone, Default)] pub struct OutlinePostProcessSettings { + /// Weight of outlines in pixels. pub weight: f32, + /// A threshold for normal differences, values below this threshold will not become outlines. + /// Higher values will result in more outlines which may look better on smooth surfaces. pub threshold: f32, } diff --git a/src/lib.rs b/src/lib.rs index 144dfe8..dd0b9ef 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,9 @@ #![warn(missing_docs)] +//! A plugin for the Bevy game engine which provides an outline post-process effect. The effect +//! makes use of a normal prepass to generate outlines where differences in the normal buffer +//! occur. + use bevy::{ asset::embedded_asset, core_pipeline::core_3d::graph::{Core3d, Node3d}, @@ -13,12 +17,14 @@ use bevy::{ pub use nodes::OutlineRenderLabel; -pub struct OutlinePostProcessPlugin; - +/// Components used by this plugin. pub mod components; mod nodes; mod resources; +/// Plugin which provides an outline post-processing effect. +pub struct OutlinePostProcessPlugin; + impl Plugin for OutlinePostProcessPlugin { fn build(&self, app: &mut App) { embedded_asset!(app, "../assets/shaders/outline_post_process.wgsl");