See also the cool features section.
- Primitive selection: Select your desired primitive on the top bar.
- Place control points: Click on the canvas to place control points.
- Activate edit mode: Automatic for non-polygons after 2 points placed. Press ENTER for polygons after placing points.
- Adjust shape: Drag control points to adjust shape.
- Finalize: Press ENTER to render the primitive.
- Cancellation: Press ESCAPE during any step to delete the current primitive.
- Action selection: Select to erase content or to fill shapes or areas on the top bar.
- Perform action: Erase by dragging cursor or fill by clicking.
- Draw lines, rectangles, circles or polygons, erase content and fill shapes or areas with color.
- Choose color from presets or using a color picker with transparency support.
- Customize line and outline thickness for all drawing tools.
- Anti-aliasing with a scale selection.
- Support for dashed lines with adjustable dash length and gap spacing.
- Zoom in/out with configurable speed (via scroll wheel or touchpad gestures).
- Move around canvas via mouse or touchpad.
- Disable real-time rendering preview while drawing shapes for improved performance on older hardware.
- Adjust the point grab tolerance.
- Customize UI settings to your liking.
cargo b --release
./target/release/paintnix build
./result/bin/paintnix develop- Language: Writen in Rust.
- GPU acceleration: Uses WGPU for all GPU operations.
- Windowing: Relies on winit for window creation and management.
- User interface: Implements the UI using egui.
- Rendering approach: Primitives are rendered onto a texture using signed distance functions (SDFs) within a compute shader.
- Shader language: All shaders (including the compute shader) are written in WGSL.
- This project is distributed under either the terms of the MIT License or the Apache License Version 2.0 at your option.
- This project includes images from the Krita project licnesed under the Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA 4.0).