Archive for February, 2008

OpenCTL 0.9.0

20 February, 2008 1 comment

A few days ago, I presented brushes created using CTL, but I didn’t release a crucial piece of software, the actual CTL (Color Transformation Language) interpreter, this is what I fix today.

OpenCTL 0.9.0

I am pleased to announce the first release of OpenCTL (and also the last, as next releases are bound to happen as part of OpenGTL). This release isn’t intended for a general use of the library, it is simply not ready yet. While most of the CTL is implemented, there are some features that need polishing, like arrays or structures. There is also the issue of fixing memory leaks and all sort of crashes that happen mostly instead of presenting a compiler error. The main reason for this release is to increase the awareness that the project exists, and also, for people who want to start playing with the library or with the Krita’s CTLBrush plugin.

But… what is the Color Transformation Language ?

Lets start by what it is not. It is not a general graphics processing language, and it’s not a complete replacement of ICC profiles.

Originally, it was conceived by the Science and Technology Council of AMPAS (Academy of Motion Pictures Arts and Sciences, most well known for the Oscars Ceremony), it’s a complement to the current ICC work flow, it was specifically design to solve the issues around Color Management for High-Dynamic Range (HDR) images.

So basically, it’s a language design to process one pixel at a time, and apply a transformation on it, ranging from brightness adjustment to color space conversion.

Unfortunately, I currently haven’t any application to show on images, as it is what I am going to work on the following weeks.

Where to get it ?

For the more brave among you, you can get it from OpenGTL’s download page.

Experimenting with functions to create Brushes

18 February, 2008 2 comments

Since a while I have been writing an implementation of the Color Transformation Language (CTL) using llvm, called OpenCTL. Originally I started this effort because AMPAS’s CTL interpreter has a license which is incompatible with GPL (for the most sceptic, read here), but now I have found an other reason, working with llvm is kind of fun.

But back to the point, now that my implementation of CTL is becoming close to be complete, I wanted to have some real-life use of the library. And for this, I choose an use case for which CTL wasn’t intended, but sometimes ago, during a discussion on Krita’s mailing list, someone asked how easy it would be to experiment with various functions for creating brushes. Hence the idea of using CTL to creates brushes !

On this screenshot, the function use creates a gradient:

And for this one I used a cosinus to get a weird effect:

Well of course, if there was to be some sort of CTL-based brushes in a main stream Krita in a closed future, the docker would have to be hidden and the brushes would appear in the brushes selector, the whole thing is just an experimentation.

Did I mentioned that to be usable it needs to be fast ? While the function is compiled into native byte code and is executed really fast, the overhead of the OpenCTL library is so important, that the end result is really slow. But now I have a test case for optimizing the library !