JTex2
History
Procedural texturing has been a serious hobby of mine for a while now. A few years back, I wrote a program called jTex. All things considered, it worked reasonably well, but it had a lot of limitations, and I was never very happy with the design. Implementing the texture core as a Python module and using PyGtk for the interface allowed me to get it running quickly, but it also made it very fragile and essentially impossible to package for distribution.In addition, many of the texture algorithms were poorly implemented, and the whole design suffered from some severe limitations. So, I started from scratch, building a new application that avoids all the old limitations.
This time around, I am writing it entirely in C, using gtk+ for the user interface engine. JTex has always been a modular system, but the original did not visualize it. JTex 2 uses a patch system rendered with Cairo, allowing the pipeline to be inspected at a glance.
I decided to replace the old bitmap layer architecture with one based on coordinate-driven queries. While this will cause JTex 2 to be far slower than the original, it also opens a lot of new possibilities for texturing, including animated textures, 3D textures, recursive texture modules, and opens the door to building a JTex 2 plugin for 3D renderers, including Blender.
Status
The program is currently in a very early development stage, and while the user interface is largely functional, it is not yet ready for actual use. I will post more as I work on it.28 Feb 2009 - I added many things this time around. Type coercion has been improved, and optional value clamping has been added. I also wrote the Fold filter. This version also features a new user interface backend, which drastically improves the interface speed. There are still a few visible glitches that need to be resolved, though.
Most importantly, this version boasts file load and save support, and also a rudimentary ability to render PNG files.
25 Feb 2009 - I rearchitected the widget system to allow more flexibility in widget layout and design. I also added support for Vector data types, and improved the look and feel of Variadic types. This is also the first version to support type coercion, although it can only convert from a Value to a Color type at the moment.
16 Feb 2009 - I implemented the bulk of the Grid filter, which now supports antialiasing on the primary channel, and added some support for the future design of the Edge channel. I also added the Brightness/Contrast filter, which uses a new Variadic data type, allowing it to process both value (monochrome) and color channels, depending on the input type.
I was playing with Blender's node-based texture system recently, which is one of my inspirations for JTex 2, and I liked the look and feel more than the original of JTex 2. It was fairly easy to implement a similar interface design, so I did. I think the result speaks for itself. I still have some cleanup remaining on the various interface elements.
9 Feb 2009 - At present, the texture pipeline is working, and the coordinate generation system is available at a minimal level. Previews function, and the plugin directory has been prototyped. I also added a Grid filter, showing off dual outputs and the ability to connect value channels.


