A GPU accelerated modeler and slicer


IceSL 2.1 released!
IceSL 2.1 includes several interface improvements (tooltips, multi-language, printer and material profiles) and introduces smooth per-layer settings, an adaptive slicing optimizer and progressive infills! This gives you unprecedented control over your prints.

Learn more on this video:


IceSL new release!!
We are happy to announce the release of a new major version. This is a significant upgrade with a complete overhaul of most features. Here is a quick overview:

This is still a work in progress, so please report any bugs on our forum. Some features of previous versions are also temporarily disabled.


2016-13-24: IceSL-Online
An online version of IceSL has been released, you can access it here (or in the menu-bar above). It does not require installations of any sort and it has been tested on Mozilla Firefox and Google Chrome. Because it uses web technologies, the offline version is evidently more powerfull, however IceSL-Online can handle small and medium scale designs. Try it now!

2016-11-24: Tutorials!
We just started a new tutorial section - check it out here. We will add new tutorials regularly, and welcome community contributions!

2016-11-24: New online tool for slicing!
Slicing STL models can now be done online using our tool SliceCrafter. It uses the core engine of IceSL for slicing, the user can choose between uploading his STL model or providing a link to it. The resulting sliced model is returned as a gcode file for download.

2015-11-25: New update: interface understands files on command line and drag and drop (generates code to load files), import menu (File=>Import, also adds code to script), monitors all files (including current script) to allow for an external editor to be used, better error reporting, per-module enable/disable, bug fixes (ui_scalar crash), Ember export (in File=>Export), optional raft, slight performance improvements in slicer, and many small fixes. Thanks to our users (in particular Loic and Maze) for reporting and suggesting many of these fixes!

2015-10-22: New update improves the new interface: material and warp shaders now work properly, syntax errors in GLSL code of implicits no longer crash the UI, plugins are supported (e.g. m = load('somefile.scad') will load an OpenSCAD file into shape 'm' if the plugin is installed). Added script functions 'erode' and 'dilate' (example in models/offset directory)

2015-09-10: New GUI with script editor and real time view updates! The GUI is now launched by default. It includes a script editor and updates the view every key stroke! Use CTRL+Mouse to continuously change any number in the script, with real time view updates. You can define your own UI tweaks for easy final user customization through sliders. Slicing and other time consuming operations now happen in the background.

The old IceSL is still available (IceSL-vanilla) and accessible from the start menu.

2015-08-07: Many new features! integration of our clean color algorithm (better travel that avoids ooze deposition and hides zippers), our latest ooze shields, 3D regular and hierarchical infilling, print azimuth optimization (minimizes interference between nozzles), small hole filter in case of imprecise geometries. Last but not least, we are now providing an open source API to develop your own input plugins for IceSL. The first open source plugin lets you model with OpenSCAD directly in IceSL!

IceSL has relatively high GPU requirements but runs on Intel HD graphics, AMD and NVidia hardware with OpenGL 4.3 support. Please make sure you are using the latest available drivers. We currently only distribute IceSL for Windows.

Join us on the IceSL Google group for more discussion!

Key features

IceSL is a modeler and slicer, all in the same software. Think of it as OpenSCAD meets Cura. By directly slicing the models IceSL avoids the expensive mesh CSG computation that most other softwares have to perform. On-screen preview is accurate and slicing is fast.

Better dual color prints

Our clean color algorithm takes several steps towards improving multi-filament print quality. It first orients the print so as to minimize interference between nozzles, and then uses a special travel move optimizer to reduce ooze deposition.
image post
Left: Printing without any optimization, Middle: with ooze shield only (see below), Right: with azimuth optimization and optimized travel moves. This test is using the #3DBenchy benchmark. Use this script to print, see instructions at the beginning for best results.

Better ooze shields

Our tight enclosure algorithm let us create nice ooze shields that remain close to the print at all times while being easy to remove.
image post
The ooze shield tightly encloses the object while being easy to remove. Twin cats by Mankati3DPrinter

Configurable brushes

Model with brushes and configure brush print parameters independently. This includes the number of shells, infill density, print speed, plastic flow, etc.
image post
A brush is used to reinforce the box around the hole. Left: script. Middle: 3D model. Right: one slice revealing the stronger infill around the hole.

Implicit surfaces

Shapes from shaders, your models no longer have to look simple. Fully exploits printer resolution by avoiding tessellation.
image post
This implicit surface is computed from a distance field generated from a GLSL code (left). It defines a sphere perturbed by a noise. Two such spheres are used to produce a dual color result.

Dual color ooze shields

Better dual color prints with oozing shields that stay close to the surface and yet, are easy to remove.
image post
Left: print embedded into the protective shield, Middle: shield, Right: print. Dragon by Valentine


Offsets can erode or dilate even the most complex objects!
image post
Left: erosion, Middle: original, Right: dilation. Dragon by Valentine


IceSL features a basic yet effective support technique. If preferred, you can of course import external meshes to act as support.
image post
Left to right: original, support (note the denser support below the object), print, result. Wolf by Everik99

Slice shaders

Add details to your models for free! Infinite procedural details generation, no two objects will ever be the same.
Dual color print of thing 16378. Preview in IceSL (left) and printed model (right). The black and white stripes are produced by a material shader. The stl is the unmodified thing 16378. See the Lua script and the material shader.

Quick start

Quick slicing

  • Download and install.
  • Launch IceSL from the desktop shortcut.
  • Open a STL file by clicking on the second icon at the bottom, or by pressing key '2'.
  • Choose printer and set up slicing parameters in the left tool bar.
  • Click on 'slice' or press the space bar. A dialog opens to ask where to save the G-code file.
  • Use keys '[' and ']' to navigate through layers.
  • Open the G-Code in your printer host software, print.

Quick scripting

  • Download and install.
  • Create 'helloworld.lua' in the folder of your choice.
  • Open it with your favorite editor (we use Notepad++).
  • Write 'emit( cube(10) )', save.
  • Drag and drop the file onto the IceSL icon (or open from IceSL with the 'open' icon, or launch from command line with 'IceSL helloworld.lua').
  • IceSL opens and you can see a cube. IceSL tracks changes in 'helloworld.lua'. If you modify and save, it will immediately update the view.
  • Click the 'slice' button or press the space bar. A dialog opens to ask where to save the G-code file.
  • Use keys '[' and ']' to navigate through layers.
  • Open the G-Code file in your printer host software, print.


IceSL uses Lua as modeling language. For instance: thumbnail s = sphere(10) emit(s) creates a sphere of radius 10 mm (millimeters). Note the emit function to spawn the primitive into the scene. In particular: thumbnail s = sphere(10) b = cube(15) emit(b) creates the box in the final scene but not the sphere.

IceSL supports difference, union and intersection: thumbnail s = sphere(10) b = cube(15) emit( difference(b,s) )

There are many, many other features, so be sure to read the documentation for all possible instructions.

Supported printers


IceSL produces G-Code through customizable printer profiles. We provide several printer profiles directly selectable from the interface. We use IceSL on a regular basis on a Replicator1, Replicator2, Ultimaker1, Ultimaker2, ORD Solution and we provide a generic RepRap profile.

To send the code to the printer use your favorite host software. We use ReplicatorG with Sailfish firmware on our Replicator Dual. When targeting an Ultimaker (1/2), the G-Code can directly be used on the printer.

Please be extra careful if you modify the profiles. The G-Code could make the nozzle collide with the platform or worse. Closely monitor the prints.


IceSL can output files for the B9Creator print software ('.b9j' job files). The default parameters are 50um per pixel, and 50um per layer (cannot yet be changed, planned in the future). Simply select the 'Export=>B9Creator' menu. Material shaders are currently ignored, but this is planned for a later release.


IceSL can output files for the Ember printer ('.tar.gz' files). The default parameters are 50um per pixel, and 25um per layer (cannot yet be changed, planned in the future). Simply select the 'Export=>Ember' menu. Material shaders are currently ignored, but this is planned for a later release.


If you are manufacturing printers and would like us to create a profile for your printer, please contact us!

We heard rumors that IceSL can also be used to laser cut, and even on CNC mills! :-) More on this soon!

image post

GPU requirements

Please make sure to install the latest drivers for your GPUs. This solves 90% of the cases where IceSL does not run. IceSL requires a GPU with full OpenGL 4.3 support. It has been tested on the following hardware:

  • [tested] GeForce GTX 480 / 580 / 680 / 970 / Titan
  • [tested] GeForce GT 555M
  • [tested] Intel HD 4400, 4600
  • [tested] AMD Radeon 290X (with limitations)


IceSL is free for non-commercial use (contact us for all other cases). The full licence text is here.

Please acknowledge us in any publication (paper, web page, blog, etc.) showing results done with IceSL: This is important for us to get support and continue our work.


  • Do you provide examples? Yes! IceSL comes with many examples, located in the 'models' folder. On a default install this would be in C:\Program Files (x86)\Inria\IceSL\models
  • Can I output a STL? Yes you can! Mesh slicer outputs a STL which is made from the slices. A better mesh export is in progress. Keep in mind though that IceSL is best used to generate G-Code directly. If you really need a mesh then you can always export a 'csg' file that can be processed by OpenSCAD. IceSL can produce a mesh from the generated slices (see File > Export).
  • Will you support other GPUs? This is not a small task but we do our best to maintain the support for main GPUs vendors. If you run into trouble please make sure to upgrade your drivers, and if that does not solve the issue please let us now (we need to know the exact GPU model you are using).
  • Could the produced G-Code break my printer? Bad things could happen, yes. So be careful, check the G-Code, do not leave the print unattended. We never broke our printers, but we are extra careful.
  • IceSL is freezing when slicing... This is expected in IceSL-vanilla (output only occurs in the console window). However the new GUI (Icesl-forge) slices in the background so you can continue working on your models!
  • Text editor? IceSL-forge now includes a script editor. IceSL-vanilla continues to monitor file changes to the Lua script file and updates the view whenever the script changes.

Contact Info

Phone: +33 3 54 95 86 53

E-mail: Sylvain Lefebvre at inria dot fr