In this differentials, I have managed to create working blending modes, but they don't work 100% because Interpolate blending mode is another blending mode to be solved like Heat, and Freeze. Only this time, the issue is the reverse of them. In other words, Interpolate work just fine and dandy on float images, but they don't work on integer images, and it's easy to see why. cos(pi*1)=1, and cos(pi*0)=0.
The steps I did to create new blending mode
- Study the blending modes using Pegtop-Delphi website
- Categorize them carefully, and understand the blending modes.
- When I look at the equation for the soft burn ,and soft dodge, I notice that they actually aren't burn and dodge because of their equation similarities. Because of their equation similarities, I have taken the liberty, and decided to call them Penumbra since they are the more appropriate name, and blend v. base shows a penumbra. Even with images, it's pretty clear that these blending modes all involves areas between light and darkness, and they even are better for painting shadows just due to their properties.
- Then I start coding
For Softlight(Pegtop-Delphi), after many fails, I find the one in the code works pretty well and it actually compiles. A lot of the code involves the necessity of being able to compile, and other forms didn't work out for me. There might be normalization issues, but testing it, I see no difference. Even the Interpolate mode was made with compilation and end result in mind. The new negative modes are more for increasing compatibility with other applications in case the needs for those blending modes arise. The new softlight offers the benefit of preserving more details than other softlight, and therefore it increases usability of Krita.