Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Palette Wizard

Create custom color palettes with ease · By SmallBigSquare

Feature requests / suggestions Sticky

A topic by SmallBigSquare created May 17, 2019 Views: 799 Replies: 22
Viewing posts 1 to 10
Developer (1 edit)

If you have any feature request or you have improvement suggestions please place them here.

I will try to implement all features requested by you (within reason).

Please note that some of them might be not possible to implement.

Hello!

Congratulations on release!

Are You planning release on MacOS? 

Developer

Thanks! I am focusing on the new features and bug fixes right now. When it will be feature complete I will port it to MacOS.

Ok, nice!

Thanks for quick answer.

Looks like a great tool!
A couple feature ideas for batch processing:
1) Auto trim/crop image to smallest non-transparent pixel dimensions for export.
2) Smart detect non-transparent background color, and auto-remove background from image (then crop for export.)
(Maybe if 3 out of 4 corner pixels are the same color, that color is probably a background color and can be removed.)

Developer

Thanks. Good ideas I implement them in the upcoming update. 

I think that I leave standard save option and I will add one with auto trimming and transparency.

Undo last action?

Developer

Thanks for the tip. 

Undo is a difficult function since it requires tracking all possible things user can do. If I find a way to do it efficiently I will add it.

Thanks its mainly just when i accidently click wrong thing because i have a shaky hand so just undoing the last thing I did would be great. I'm not sure if possible in your program but could you just track the 'Pixels' that was just created compare them to how it was before you created a new 'Pixel' and then just undo that? Sorry if I explained it badly happy to try explain it better.  Just thought this method means not having to track all the possible things user can do and only track whats change on the (don't know what you call it) so lets say canvas

Developer

I will try to do some sort of undo/redo in the next update. Thanks for suggestion.

Great to see MacOS support! I’m now waiting for upcoming Steam release :)

Feature suggestion/request: support for .ase (adobe swatch exchange) format. In my motion design work, I depend largely on Adobe After Effects. To be able to use Palette Wizard with something more than asset creation, I would need it to work with *.ase format. I’m sure support of this format has value for other use cases and users too. Thanks in advance for considering my request.

Cheers

Developer

Thanks, 

If I find good specs for this format I will add it. 

From what I can tell there are no official specs for this file from Adobe. 

There are only reverse engineered descriptions on some forums.

Thanks for considering it & looking into that!

These place might be useful for getting ASE description:

http://www.selapa.net/swatches/colors/fileformats.php#adobe_ase  (please scroll down to see binary descriptions of format)

https://github.com/RoyCurtis/ASE2GIMP

https://github.com/jonathantneal/readase

Cheers

Developer

Thanks for the links!

I will look into them.

CIE LAB, while the most popular perceptual color model, is super outdated and flawed. JzAzBz is the best color model that I know of, which extremely straight hue lines and uniform MacAdam ellipses. The coordinate system is very similar to CIE LAB so no one should be lost when using that instead of LAB, or alongside LAB if you would want LAB to remain despite its flaws.

https://www.researchgate.net/publication/317811721_Perceptually_uniform_color_space_for_image_signals_including_high_dynamic_range_and_wide_gamut

Something to note about the article that tripped me up at first was that you are to make your own inverse matrices and I believe somewhere in the conversion from L'M'S' to XYZ it wanted you to use elements of the 3 coordinates that you are currently working on to solve the last 2 or 1 coordinates. Just to save a headache in case we have the same problems.

A really obvious glaring issue with CIE LAB that anyone with Photoshop can see is how it handles Blue. Set the vertical strip in Photoshop's color window to LAB's L and set the hue to Blue and you'll see that when it's dark it's Blue as you would expect but as it gets brighter it becomes Cyan. That's not perceptually the same hue, Blue and Cyan are different.

Some less obvious issues, or rather benefits JzAzBz has over CIE LAB, is its measurement of perceptual brightness which, when compared side by side, is much better. The research article I linked also has a few graphs illustrating differences in mapping between LAB and JzAzBz, which looks more evenly spaced. I believe this image shows the MacAdam Ellipses in CIE LAB, though it might be something else entirely and I hope that you have better luck finding this than I had for comparing with JzAzBz's MacAdam Ellipses graph.

This should also help with automatically picking unique colors from images.

--- --- ---

While I haven't noticed any actual issue with RGB blending, I just want to verify that it's blending with Linearized Gamma. I'm not at my own computer right now so I can't blend between Green and Red and see what it does to know for sure, it's just a concern that came to mind while typing out the earlier bit.

--- --- ---

There's 3 Hue-based color selection approaches, HSV HSL and HSY / HCY, but there's no LCH which is the hue / chroma transformation of LAB. Ideally if JzAzBz is implemented there would be a JzCzH.

--- --- ---

Median filter on imported images to remove noise / blemishes. Like I've got beautiful paintings I bring in and they have cracks and other issues, on top of digital noise at times. I'm prepared to run median filters in an external program and have multiple copies of the same image on my HDD for the program to use but I'd rather it all be done live so I don't have to prepare multiple variations of images.

--- --- ---

A hilbert curve would be useful as an additional method of choosing colors from an image. https://corte.si/posts/code/hilbert/swatches/index.html https://github.com/cortesi/scurve It arranges colors in a very approachable manner, much better than trying to locate important colors when the surrounding colors are influencing its appearance and making it look like a different color, plus it's easier to click on colors since they get grouped together. Perhaps it would be even better when arranging based on JzCzH or JzAzBz instead of RGB? It would also be nice to run a Median filter first so that noise or scratches or other blemishes don't appear.

--- --- ---

Global non-destructive color filters such as RGB curves (like non-destructive adjustment layers in Photoshop) could be useful for giving a palette a certain tone without having to start off with colors that fit that tone, like purple shadows and yellow highlights which seem popular, and this can be done with curves while simpler and more approachable colors like straight up black and white can be used. Also with an option to "bake down" the color filters to the grid and perhaps a mask / intensity / opacity that can be painted in or out with a tool like the Saturation / Desaturation pen tools.

Paired with this, the ability to detect a color filter / RGB curve / tone in an input image (after a median filter to avoid noise / scratches / etc), toggle a correction for this on and off, select colors from the image, and add the detected color filter / RGB curve as a global non-destructive filter. This way the user can better see what a color is supposed to be behind all the lighting effects, decide if they want to include it, then apply the color filter or modify it in some way. It's always easier to modify colors when an image is properly white balanced, reds are better distinguished from oranges and other similar colors are better distinguished and are easier to specifically modify. Otherwise lots of colors that are perceptually different could all technically be different shades of yellow. White balancing works best with linearized gamma RGB curves done in a very large RGB color space, like ACES,  in my experience.

My ideas for detecting color filters / tone curves / etc would either be to have the user specify colors that should be 0 saturation (not just middle gray) with the color picker, and have the program construct an RGB curve what makes those colors have the lowest saturation possible. This should cover shadows, mids, and highlights. Perhaps a blatant black / white level selection as well. The other idea is based on histogram equalization.

--- --- ---

Maybe 3D LUT / ICC Profile support for things like CRT simulations? Maybe? I don't really care too much about this specifically but someone might find it cool to use pure sRGB red, green, and blue and then load a 3D LUT that makes it look like a Sony Trinitron's color primaries. I would find it cool as well but I don't really feel like it would be as useful as anything prior to this.

Developer

Wow, very comprehensive explanation!  

There are  many good ideas in your post.   This will be something I  can work on in upcoming  weeks after release.

Thank you !

Additional issues after using the program longer and logging them when found;

When using an Adjustment that uses Hue, it doesn't look back around in a circular manner. It should be enough to apply modulo to it like (hue+adj)%255 depending on how it's set up.

--- --- ---

RGB blending isn't in linearized gamma so Red to Green doesn't include the proper yellows and instead gives browns. However: Lots of people are used to RGB blending that isn't gamma corrected so it might be better to have the existing RGB Blending and underneath it Linearized RGB blending where it linearizes the gamma curve / tone curve of the assumed sRGB monitor and blends based on emitted light levels. It's much more painterly.

--- --- ---

The "WHEEL" color selector's Triangle or Square doesn't update in color when a new color is picked on the grid and it only updates when switching between Triangle and Square or HSV and HSL.

--- --- ---

It looks as though reds become magenta after using Luminosity and Chroma adjustments enough times, even though Hue is left alone.

--- --- ---

Setting the hue of a color on the grid with the HSL sliders, selecting another color to adjust the hue, and then going back to the past color shows that it's a different hue than what I left it with. It takes multiple edits to get a specific hue.

--- --- ---

LAB interpolation between light yellow and middle magenta results or resulted in cyan, which doesn't seem right.

--- --- ---

I could not get the LAB or RGB sliders in the left-most tab (if I remember the position correctly) to actually edit a selected color.

--- --- ---

Selecting colors from an image makes too many colors too fast. It seems to be based on the time of mouse 1 being held down because if I click on the image and don't move my mouse it'll make 6 or so duplicate colors. It should be based on moving over new pixels such that every new pixel that's moused over results in a new pixel or every new pixel with a limit like 10 per second or faster.

--- --- ---

This isn't very important if JzAzBz gets in since it's VERY close to the Munsell colors but there's a large set of colors called the Munsell Renotation Data (if I remember correctly) that were determined to have the same hue / chroma / luminosity and depending on where you get this data it should come with sRGB conversions, if not you should be able to convert to D65 sRGB from the XYZ / xyY coords it often comes with. These can be interpolated but the one time I saw a Munsell color picker with interpolated values it was extremely heavy processing. http://pteromys.melonisland.net/munsell/

--- --- ---

Something like Coolorus or Paletton or other online color theme / color scheme designers what let you divide a color wheel geometrically, otherwise a separate program has to be used to develop color schemes with guidance. This would be best with a Hue/Chroma transform of JzAzBz due to its very perceptually even arrangement of hues, whereas LAB has really stretched out blues and RGB's HSL/HSV has a lot of purple IIRC. The ability to link colors on the grid to draggable positions on the color scheme designer tool would be helpful so that linked blends and such can all update live when adjustments are made to the color scheme.

Developer

Thank you again! 

Feedback from people who know the topic and use the program is the best. 

I will try to address  issues you have mentioned in the next update.

It looks like shaders are used for color conversion so here's a shader I wrote a while back for sRGB -> Jzazbz -> sRGB https://pastebin.com/DMBNjc6g Might save some time to take the guts of this rather than rewrite from the article.

Developer

Thank you ! This will be very helpful. 

I am preparing small update with some bug fixes reported by you and others. I will probably release it today. 

The undo feature is really useful, but sometimes I think I changed something I didn't mean to change when I click HSVs or HCY' and the color flashes on the grid, so I hit Ctrl+Z and the color I thought I accidentally changed goes away. A "Redo" button would be nice as well so that we can undo an undo and perhaps A/B a decision.

--- --- ---

Gamut Masking is an interesting feature but it doesn't work the way I would expect a gamut mask to work when in a rectangular hue transform. It would work in an isometric view of an RGB cube with the white/black range aligned to the camera, I've seen this setup used to map out the gamuts of paintings based on the corners of the plotted colors to find the pigments used to blend into all the plotted colors, and I've done this myself with Team Fortress 2's color palettes to extrapolate potential "primary" pigments. It would also work with an xyY chart with the camera aligned to Y since additively blended colors form straight lines in these, and this would make gamut masking viable with LAB and JzAzBz if you were to convert the points in LAB / JzAzBz to xyY and interpolated between the points on the gamut mask within xyY and converted the coordinates back to LAB / JzAzBz so that the gamut mask curves to show the actual gamut of light blending together instead of just a "perceptual gamut" from gamut masking directly onto LAB / JzAzBz. Though there's bound to be cases for both transformed and non-transformed gamut masks on LAB / JzAzBz.

Said RGB Cube:


An additional color generation method could possibly work in the way I mentioned earlier with finding potential pigments of a group of colors; find the mean or median vector along colors of a certain similarity to each other, follow the vectors out to where they overlap, and use the overlap coordinates as colors to blend together to make new colors in the palette.

Came across two interesting color spaces recently. https://bottosson.github.io/posts/colorpicker/ They're intended to be a trade-off between a perceptually equal color space (OkLAB https://bottosson.github.io/posts/oklab/ ) and a simple interface like HSV/HSL. There's a nice writeup about the design decisions and intentions behind them on the page.

Developer

Thanks! I  will  look into it.