G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.) https://discord.gg/P4VE9UY9gJ
Find a file
Donovan Baarda f5bbe52ac9
Optimize FillTpmsFK using optimized MarchingSquares from #10747. (#10876)
# Change FillTpmsFK.cpp to use MarchingSquares.hpp.

This is still a work in progress, but it does seem to work fine, and I
thought I'd put this up there for people to have a play with. I also
have a few questions because I'm not 100% familiar with the rest of the
codebase and I'm going to use the review of this to figure a few things
out.

This builds on #10747 which simplified and significantly optimized
MarchingSquares.hpp by replacing most of FillTpmsFK.cpp's implementation
to just use that marching squares implementation instead of
re-implementing it's own.

I don't yet have any solid speed comparisons but it feels a bit
subjectively faster, though I think that most of the delay in previewing
the slicing results is not in the fill-generation so it's a bit hard to
tell. I don't know if there are any tests/benchmarks/etc that I could
use for testing this, but I'm probably going to add some to this PR at
some point.

Even if this doesn't give a significant speed-up, it does significantly
simplify the code and make it easier to re-use for other equation based
fill-patterns. This could re-implement gyroid or TpmsD with about 5
lines of C code to inherit from `ScalarField` and redefine the `float
get_scalar(coordf_t x, coordf_t y, coordf_t z)` function with the
appropriate equation.

I don't think it would be faster than the current gyroid or TpmsD fills
though, since they directly generate a single line using the equation
and then just copy and shift it. However, it might not be much slower
and it would simplify the code to do them all the same way.

But the main reason I'm doing this is this can be used to implement far
more complicated fills that can't really be implemented any other way.
In particular I'm working towards a gyroid fill that dynamically varies
it's density based on how close it is to the walls.

I have a bunch of questions about some of the other bits that I'll post
as comments against the review-diff.

# Screenshots/Recordings/Graphs

I'll add some when I get there... but so far the results look identical
to the previous implementation even when I zoom in close.

<!--
> Please attach relevant screenshots to showcase the UI changes.
> Please attach images that can help explain the changes.
-->

## Tests

<!--
> Please describe the tests that you have conducted to verify the
changes made in this PR.
-->
2025-10-25 11:17:43 +08:00
.devcontainer Fixes, refactors and enhances Linux build-scripts (#8269) 2025-06-15 00:41:20 +08:00
.github Validation Action comment Remove + Improvement (#10617) 2025-10-19 22:39:29 +08:00
.idea Merge remote-tracking branch 'BS/v1.7.2' 2023-08-26 16:13:57 +08:00
cmake Refactor folder (#10475) 2025-08-22 20:02:26 +08:00
deps Fix timelapse crash 2025-10-05 16:06:55 +08:00
deps_src Merge branch 'main' into dev/h2d-2 2025-10-24 09:59:00 +08:00
doc Remove to Ignore small overhangs: Full update (#11073) 2025-10-23 23:43:57 +08:00
localization/i18n Merge branch 'main' into dev/h2d-2 2025-10-24 09:59:00 +08:00
resources bump profile version 2025-10-24 17:23:26 +08:00
sandboxes Support larger printer sizes by using 64-bit. 2024-05-10 23:47:08 +08:00
scripts Treat extruder_clearance_max_radius as extruder_clearance_radius, and raise error if both options are present 2025-10-11 16:34:58 +08:00
SoftFever_doc Update Qidi logo 2024-12-12 22:21:17 +08:00
src Optimize FillTpmsFK using optimized MarchingSquares from #10747. (#10876) 2025-10-25 11:17:43 +08:00
tests Optimize and simplify MarchingSquares.hpp. (#10747) 2025-10-19 19:27:55 +08:00
tools restore tools to git from lfs 2024-03-17 23:14:43 +08:00
.clang-format Set PointerAlignment to Left (#2948) 2023-12-01 15:32:48 +00:00
.cursorignore reenable appimage build on ubuntu 24.04 (#9458) 2025-04-24 08:13:15 +08:00
.dockerignore Refactor folder (#10475) 2025-08-22 20:02:26 +08:00
.doxygen update doxygen setting 2023-06-30 13:59:41 +08:00
.gitattributes Adds resonance avoidance ported from qidi slicer (#9403) 2025-06-16 13:14:00 +08:00
.gitignore ENH: support parts skipping function 2025-09-26 10:55:19 +08:00
AGENTS.md Revamp OrcaSlicer updater (#10884) 2025-09-28 10:33:33 +08:00
build_flatpak.sh Refactor folder (#10475) 2025-08-22 20:02:26 +08:00
build_linux.sh Revamp OrcaSlicer updater (#10884) 2025-09-28 10:33:33 +08:00
build_release.bat Revamp OrcaSlicer updater (#10884) 2025-09-28 10:33:33 +08:00
build_release_macos.sh Revamp OrcaSlicer updater (#10884) 2025-09-28 10:33:33 +08:00
build_release_vs2022.bat Revamp OrcaSlicer updater (#10884) 2025-09-28 10:33:33 +08:00
CLAUDE.md Feature/re enable tests (#10503) 2025-08-24 20:58:18 +08:00
CMakeLists.txt Attempt to get the correct PR commit hash (#10900) 2025-10-11 21:37:46 +08:00
LICENSE.txt some misc changes (#1848) 2023-08-20 20:02:54 +08:00
README.md Wiki 13: Layer time variability + Minor Improvements (#10677) 2025-10-19 23:04:16 +08:00
SECURITY.md Improvementes in readme and security docs (#6730) 2024-09-11 22:23:15 +08:00
version.inc Update SoftFever version to 2.3.2-dev 2025-09-28 22:12:14 +08:00

OrcaSlicer logo

SoftFever%2FOrcaSlicer | Trendshift

GitHub Repo stars Build all

OrcaSlicer: an open source Next-Gen Slicing Software for Precision 3D Prints.
Optimize your prints with ultra-fast slicing, intelligent support generation, and seamless printer compatibility—engineered for perfection.

Official links and community

Official Website:

OrcaSlicer.com

Github Repository:

GitHub Logo

Follow us:

X Logo

Join our Discord community:

discord logo

⚠️ CAUTION:
Several clickbait and malicious websites, such as orca-slicer[.]com and orcaslicer[.]net, are pretending to be the official OrcaSlicer site. These sites may redirect you to dangerous downloads or contain misleading information.
Our only official website is www.orcaslicer.com.

If you come across any of these in search results, please report them as unsafe or phishing to help keep the community secure with:
- Google Safe Browsing
- Microsoft Security Intelligence
- IPThreat

Main features

  • Advanced Calibration Tools
    Comprehensive suite: temperature towers, flow rate, retraction & more for optimal performance.
  • Precise Wall and Seam Control
    Adjust outer wall spacing and apply scarf seams to enhance print accuracy.
  • Sandwich Mode and Polyholes Support
    Use varied infill patterns and accurate hole shapes for improved clarity.
  • Overhang and Support Optimization
    Modify geometry for printable overhangs with precise support placement.
  • Granular Controls and Customization
    Fine-tune print speed, layer height, pressure, and temperature with precision.
  • Network Printer Support
    Seamless integration with Klipper, PrusaLink, and OctoPrint for remote control.
  • Mouse Ear Brims & Adaptive Bed Mesh
    Automatic brims and adaptive mesh calibration ensure consistent adhesion.
  • User-Friendly Interface
    Intuitive drag-and-drop design with pre-made profiles for popular printers.
  • Open-Source & Community Driven
    Regular updates fueled by continuous community contributions.
  • Wide Printer Compatibility
    Supports a broad range of printers: Bambu Lab, Prusa, Creality, Voron, and more.
  • Additional features can be found in the change notes.

Wiki

The wiki below aims to provide a detailed explanation of the slicer settings, including how to maximize their use and how to calibrate and set up your printer.

Please note that the wiki is a work in progress. We appreciate your patience as we continue to develop and improve it!

Download

Stable Release

📥 Download the Latest Stable Release
Visit our GitHub Releases page for the latest stable version of OrcaSlicer, recommended for most users.

Nightly Builds

🌙 Download the Latest Nightly Build
Explore the latest developments in OrcaSlicer with our nightly builds. Feedback on these versions is highly appreciated.

How to install

Windows

Download the Windows Installer exe for your preferred version from the releases page.

Windows Package Manager

winget install --id=SoftFever.OrcaSlicer -e

Mac

  1. Download the DMG for your computer: arm64 version for Apple Silicon and x86_64 for Intel CPU.

  2. Drag OrcaSlicer.app to Application folder.

  3. If you want to run a build from a PR, you also need to follow the instructions below:

    Quarantine
    • Option 1 (You only need to do this once. After that the app can be opened normally.):

      • Step 1: Hold cmd and right click the app, from the context menu choose Open.
      • Step 2: A warning window will pop up, click Open
    • Option 2: Execute this command in terminal:

      xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app
      
    • Option 3:

      • Step 1: open the app, a warning window will pop up
        mac_cant_open
      • Step 2: in System Settings -> Privacy & Security, click Open Anyway:
        mac_security_setting

Linux (Ubuntu)

  1. If you run into trouble executing it, try this command in the terminal: chmod +x /path_to_appimage/OrcaSlicer_Linux.AppImage

How to Compile

All updated build instructions for Windows, macOS, and Linux are now available on the official OrcaSlicer Wiki - How to build page.

Please refer to the wiki to ensure you're following the latest and most accurate steps for your platform.

Klipper Note

If you're running Klipper, it's recommended to add the following configuration to your printer.cfg file.

# Enable object exclusion
[exclude_object]

# Enable arcs support
[gcode_arcs]
resolution: 0.1

Supports

OrcaSlicer is an open-source project and I'm deeply grateful to all my sponsors and backers.
Their generous support enables me to purchase filaments and other essential 3D printing materials for the project.
Thank you! :)

Sponsors:

QIDI BIGTREE TECH

Backers:

Ko-fi supporters : Backers list

Support me

Some background

OrcaSlicer was originally forked from Bambu Studio, it was previously known as BambuStudio-SoftFever.

Bambu Studio is forked from PrusaSlicer by Prusa Research, which is from Slic3r by Alessandro Ranellucci and the RepRap community. OrcaSlicer incorporates a lot of features from SuperSlicer by @supermerill OrcaSlicer's logo is designed by community member Justin Levine (@freejstnalxndr).

License

  • OrcaSlicer is licensed under the GNU Affero General Public License, version 3. OrcaSlicer is based on Bambu Studio by BambuLab.
  • Bambu Studio is licensed under the GNU Affero General Public License, version 3. Bambu Studio is based on PrusaSlicer by PrusaResearch.
  • PrusaSlicer is licensed under the GNU Affero General Public License, version 3. PrusaSlicer is owned by Prusa Research. PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci.
  • Slic3r is licensed under the GNU Affero General Public License, version 3. Slic3r was created by Alessandro Ranellucci with the help of many other contributors.
  • The GNU Affero General Public License, version 3 ensures that if you use any part of this software in any way (even behind a web server), your software must be released under the same license.
  • OrcaSlicer includes a pressure advance calibration pattern test adapted from Andrew Ellis' generator, which is licensed under GNU General Public License, version 3. Ellis' generator is itself adapted from a generator developed by Sineos for Marlin, which is licensed under GNU General Public License, version 3.
  • The Bambu networking plugin is based on non-free libraries from BambuLab. It is optional to the OrcaSlicer and provides extended functionalities for Bambulab printer users.