A GPU accelerated modeler and slicer
New version available! Runs on all GL4.3 GPUs, supports Replicator and Ultimaker printers (and others), tons of new features!
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 high GPU requirements, and that IceSL is experimental software. Currently, IceSL is only available for Windows.
Joint us on the IceSL Google group for more discussion!
But read the manual first!
- 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:
s = sphere(10)
creates a sphere of radius 10 mm (millimeters). Note the emit function to spawn the primitive into the scene.
s = sphere(10)
b = box(15)
creates the box in the final scene but not the sphere.
IceSL supports difference, union and intersection:
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.
Implicit, procedural details
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).
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.
IceSL produces G-Code through customizable printer profiles (please see the documentation). We provide several printer profiles directly selectable from the interface. We use IceSL on a regular basis on a Replicator1, Ultimaker1, Ultimaker2. We successfully tested IceSL on a Replicator2 and a FoldaRap.
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. When targeting an Ultimaker (1/2), the G-Code can directly be used on the printer.
If you are manufacturing printers and would like us to create a profile for your printer, we welcome hardware donations ;-)
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.
Quite high, I am afraid
IceSL is a prototype software using advanced GPU capabilities. It requires a GPU with full OpenGL 4.3 support. It has been tested on the following hardware:
Please make sure to install the latest drivers
- [tested] GeForce GTX 480 / 580 / 680 / Titan
- [tested] GeForce GT 555M
- [tested] Intel HD 4400
- [tested] AMD Radeon 290X
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.
Free for non-commercial use
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.
Questions? Look here first.
- 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.