A GPU accelerated modeler and slicer


2015-03-20: New version! Tons of new features: brushes, implicit functions, installer, better dual shields and B9Creator export. We will update more often (IceSL will let you know when an update is available).

IceSL has relatively high GPU requirements but runs on Intel HD graphics and NVidia hardware with OpenGL 4.3 support. Currently, we 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.

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. No need to slice! Simply click the 'Export .b9j file' button in the left bar. 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 :-) 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? No, not directly. IceSL is meant to generate G-Code. If you really need a mesh then you can always export a 'csg' file that can be processed by OpenSCAD.
  • Will you support other GPUs? We hope that will be the case soon -- it essentially depends on the availability of specific hardware features, and whether we find time to develop a different code path.
  • 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 printer, but we are extra careful.
  • IceSL is freezing when slicing... This is expected. During slicing the main window freezes and the output only occurs in the console window. If you are slicing a complex object this may take some time. Check out the progress bar in the console; it gives an approximate time until completion.
  • Text editor? IceSL will not include a text editor. It is designed to monitor file changes to the Lua script file and update the view whenever the script changes. This lets you use your favorite editor. For instance we use Notepad++ which features syntax highlight for Lua.

Contact Info

Phone: +33 3 54 95 86 53

E-mail: Sylvain Lefebvre at inria dot fr