2 Replies Latest reply: May 3, 2010 1:24 PM by SimonTindemans RSS

    No color management in Photoshop plugin!?

    SimonTindemans Community Member

      Today, I finally started playing with PixelBender in order to make some Photoshop filters for color and tonal corrections. Unfortunately, I seem to have hit a snag. Unlike any of the other filters, the preview window of the PixelBender plugin is not color managed. This means you're essentially flying in the dark when making adjustments. Not a big problem for a mosaic or warping filter, but it's pretty fatal for color adjustment filters.

       

      This probably has something to do with the fact that PixelBender uses its own display path (GPU/CPU). Then again, Photoshop itself also uses some 3D acceleration without breaking color management, so why can't the PB plugin do the same? Does anyone know if there is a way to enable color management? If not, is there any chance that this will be improved in the plug-in? Just in case this could depend on configuration: I'm testing this on a Windows XP SP3 laptop with integrated intel graphics (so I get CPU mode), running Photoshop CS4.

       

      As it stands, PixelBender has a lot of potential as a cross-platform plug-in platform for Photoshop, but it still has a few major drawbacks:

      • The plugin preview window is not color managed.
      • The plugin processes all pixels, regardless of zoom level and visible image area. This makes it slower than necessary.
      • There is no way to determine the color space of the input image [or a way to use a standard space such as ProPhotoRGB/RIMM]. Without this facility, a 'color-aware' plugin must be written to match a particular color space.
      • No access to UI controls beyond sliders.

      If only the new actionscript wrapper for Photoshop gave access to the image data, then most of the above could be addressed. For now I'll wait and see what, if anything, is around the corner...

       

      Regards,

      Simon

        • 1. Re: No color management in Photoshop plugin!?
          Kevin Goldsmith Adobe Employee

          Actually, PS uses the same technology that is in the plug-in to do their color management, so it is totally possible for us to do that in a future release.

          Some of your suggestions are straight-ahead UI features and some (getting the color space of the original image from within Pixel Bender) are language features (ie: bigger). These are all great suggestions though.

           

          Thanks!

           

              Kevin

          • 2. Re: No color management in Photoshop plugin!?
            SimonTindemans Community Member

            Thank you for your response. It's good to know that a color-managed plugin could be in the cards. This would really be useful to me. Among other things, I'd like to port this plugin to PixelBender: http://21stcenturyshoebox.com/tools/tonability.html . It's currently written in C/C++, but programming for the combined Photoshop and win32 SDKs is such a pain that I'd prefer to move on sooner rather than later. Not to mention that a single PixelBender kernel could run on win/mac and 32/64-bit.

             

            I realize that getting access to the color space of the image would require a language change. Furthermore, it would probably require a library (supplied or self-made) to make sense of all possible color spaces, or to transform images to and from standard color spaces. A simpler possibility would be to add a checkbox in the plugin (or a simple kernel option) that imposes a particular reference color space on all inputs and outputs. The plugin container would then take care of transforming the image to the proper space and back again. My personal favorite for such a space would be the linearized ProPhoto space used by Lightroom and ACR, because it's linear and sufficiently large. And if I may dream a little: this choice would also make it easier to insert PixelBender filters into the Lightroom workflow at some point in the future...

             

            About the UI: a particular limitation I am running into is that I cannot control/restrict the sliders based on the values of other sliders. In my case, some inputs should always be higher than other inputs (and using relative numbers is not an option for the UI). The evaluateDependents() function is great for making sure that the kernel gets the right numbers, but there is no way to feed this information back to the user. For example, you cannot disable a slider, restrict its range or change its position from within the kernel. This is no surprise, given the one-way programming paradigm that the GPU is so good at, but a hindrance for writing 'stand-alone' plug-ins. Rather than changing the language to accomodate these features, would it be possible to have a flex/AIR container in the control section of the plugin? The Flex/AIR program could handle the UI, including feedback and other advanced functions, and could feed the PixelBender kernel with the correct parameters. Just another far-fetched suggestion, but it would make my life a lot easier.

             

            Simon