A GPU accelerated modeler and slicer


IceSL is a modeler and slicer, all in the same software. Think of it as OpenSCAD meets Skeinforge. By directly slicing the models IceSL avoids the expensive mesh CSG computation that most other softwares have to perform. In addition, IceSL relies on recent GPU algorithms to speed up visualization as well as the slicing process. On-screen preview is accurate and slicing is fast.

Beware that we have super-high GPU requirements, and that IceSL is highly experimental software. Currently, IceSL is only available for Windows.

Quick start

  • Download and unzip.
  • Create 'helloworld.lua' in 'icesl/bin'
  • Open it with your favorite editor (we use Notepad++).
  • Write 'emit( box(10) )', save.
  • Drag and drop the file onto IceSL.exe (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. G-Code is produced in 'helloworld.gcode'.
  • Open the G-Code in your printer host software, print. For instance, on a Makerbot Replicator 1 Dual + Sailfish use ReplicatorG to save G-Code as an S3G/X3G file on the SDcard.
  • Read the warning! ... 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 = box(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 = box(15) emit( difference(b,s) )

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


  • Lua-based modeling language.
  • Shapes as Lua variables.
  • Loads STL, OBJ, 3DS.
  • Basic primitives (sphere, cylinder, cone, box).
  • CSG operations (union, difference, intersection).
  • 3D transforms (matrices) and points as Lua variables.
  • Multiple printing heads (use of different colors, materials).
  • Slice shaders!
  • GPU-based slicer, with all basic options (shells, infill, cool, etc.)
  • Fast!
  • Comes with powerful scripts: gears, pins, etc.

Slice shaders

Each time IceSL processes a slice, it runs slice shaders on its surface. The slice shaders let you change the geometry and material along the slice. There are two types of slice shaders: Material and warp. The shaders are functions written in GLSL.

  • A material shader can change the toolhead used in any point of the slice, or simply decide to carve a hole.
  • A warp shader can deform the slice (only in the XY plane).

Visualization in the main window is however limited to tool change. To visualize warps or carving, the G-Code has to be produced first (IceSL displays G-code after generation).

IceSL generates G-code for multiple heads, however this is largely based on the specifications from the Replicator Dual with Sailfish firmware. We tested the G-Code on Sailfish 7.4 with ReplicatorG 40r16. We are unsure whether the G-Code is portable, and welcome suggestions to achieve this.

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.

Supported printers

IceSL produces G-Code and can use customized headers/footers (please see the documentation). We develop IceSL on a Replicator Dual from Makerbot.

Given a script 'thing.lua' as input, IceSL will generate G-code in a file named 'thing.gcode'. To send the code to the printer use your favorite host software. We use ReplicatorG with Sailfish firmware on our Replicator Dual.

Unfortunately we do not have access to other printers yet. If you come up with headers/footers for your printer please send them our way and we will include them in the next release. If you are manufacturing printers and would like us to run tests, we welcome hardware donations ;-)

Please be extra careful if you modify the headers/footers. The G-Code could make the nozzle collide with the platform or worse. Closely monitor the prints. We typically keep a finger on the switch at the start of the prints.

image post

GPU requirements

IceSL is a prototype software using advanced GPU capabilities. It is currently limited to NVidia GPUs with full OpenGL 4.3 support. It has been tested on the following hardware:

Please make sure to install the latest drivers. In case your computer cannot run the main IceSL program, we also provide a tool to generate OpenSCAD csg files from the scripts: IceSL_lua2csg. Any computer should be able run this tool. After creating the csg, simply import it in OpenSCAD to generate an STL. This will let you use and print objects modeled in IceSL. However, by going back to OpenSCAD you loose many of the benefits of IceSL: fast, precise on-screen rendering as well as fast slicing without STL generation.


IceSL is highly experimental software. You may harm your printer by using the G-Code it generates. We strongly recommend that you visually check the produced G-code (for instance we use Repetier-Host), and that you supervise the start of the printing process to avoid any damage to the printing nozzle due to improper z-levels or default positioning of the printing mechanism. We typically keep a finger on the switch at the start of the prints.


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.


  • 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