A simple pixel art editor.
Note
This README is intended as a technical overview of the software, Intended for developers. If you're an user, Please visit csprite.github.io
Minimum System Requirements:
- Linux, Windows 7 or Later (Future plans to support Mac & Mobile)
- Atleast 512MB of Usable RAM
- 64-bit Processor (Future plans to support 32-bit processors in future)
- OpenGL v3.0 or Later
You can download pre-built binaries of the software here (Requires login).
The main aim of this software is to be simple on it's own in terms of code & UX. With functionality to write plugins to add support for various things like File Formats, etc.
Requirements for Windows:
- Windows 7 or Later
- VS Build Tools 2019 or Later With Clang Support (Direct Download)
- BusyBox for Windows (Direct Download)
- Python v3.0+ (Direct Download) (Make sure to select "Add To Path" option)
Requirements for Linux:
-
POSIX Compliant Shell
-
GCC or Clang (And libomp-dev if using Clang)
On Debian/Ubuntu (And maybe other distros as well), If you're using LLVM-Clang toolchain then
libomp-devhas to be installed as it doesn't come packaged with the toolchain for some reason. -
GLFW3 v3.1 or Later.
-
MOLD is used for speeding up the linking process. It is completely optional & Even unnecessary if you're just building for use. It was able to cut my linking time by a second or two which makes things a bit less annoying.
- Tool Preview - Just have a buffer on which user's action are cleared (by storing dirty from previous user input) & drawn on every user input. When it's time to commit just blit the buffer or blend it?
- Variable Brush/Eraser Sizes
- Undo Redo
- File IO
- Layers with Blending Modes
- Alpha
- Addition
- Subtraction
- Difference
- Multiply
- Screen
- Overlay
- Darken
- Lighten
- Color Dodge/Burn
- Hard/Soft Light
- Plugin System
- Node Based Post Processing Effects
- Basic Effects like Lightness, Saturation, etc.
- Dithering Effects (Like DitherBoy)
- Convolutional Filters
- Unit Testing (https://youtu.be/21JlBOxgGwY)
- UTF-8 Support (Maybe)
- Docking (Maybe)
- Color Pickers for Normal, Specular, Roughness & Height Maps (https://youtu.be/gUkY8ZoRfuQ)
- Generate Normal Map Functionality (https://youtu.be/-rJdOc9WZS4)
- Procedural Math Based Art (Maybe)
- MacOS Port
- Mobile Port
- Misc
- Porter Duff's Alpha Functions
- https://lodev.org/cgtutor/floodfill.html#Scanline_Floodfill_Algorithm_With_Stack
- Use SIMD To Accelerate Various Drawing Tasks. Related:
Here are resources that have helped me while developing this software.
- It's probably time to stop recommending Clean Code
- Enter The Arena: Simplifying Memory Management (2023)
- Compositing and Blending Level 1
- The Beauty of Bresenham's Algorithm
- CS-3388 Computer Graphics Winter 2020
- Introduction to Computer Graphics, Fall 2021
- Wu's Algorithm for anti-aliased line drawing
- LMB To Select Primary Color In Palette.
- RMB To Select Secondary Color In Palette.
- Hover At Primary Color's Edge In Palette & LMB + Drag To Reorder It.
- (Ctrl + Plus/Minus) or (Regular Scroll) To Zoom In/Out.
- Plus/Minus To Increase/Decrease Brush Size.