Jump to content
You must now use your email address to sign in [click for more info] ×

Zero1

Members
  • Posts

    41
  • Joined

  • Last visited

Reputation Activity

  1. Like
    Zero1 got a reaction from Lisbon in Procedural Texture is not clipped to parent layer (for curve objects or pixel layers not filling the canvas)   
    @Lisbon I believe the transparent areas are treated as black (value 0), which then makes sense why everything is divided by 2 (with alpha 0.5)
  2. Like
    Zero1 reacted to NotMyFault in Emulating Blend mode AND, OR, XOR with Affinity Photo and Apply Image Filter   
    Blend mode AND, OR, XOR with Affinity Photo
     
    Out of the box, you won’t find the blend modes AND, OR, XOR in Affinity Photo V1 or V2. Luckily there is the option to use the “Apply Image” filter which allows to create self-defined blend formulas. As the formulas are quite complex and long, the best way is copy the formulas into your favourite text editor, and copy/paste them into the filter one-by-one.
    The steps are relatively simple, but you need to follow an exact sequence of several steps to get it right.
    Preparation steps
    Have 2 pixel layers present in file, ideally of identical size (pixel x and y). I name the layers “destination” and “source” within this tutorial. The destination layer will be modified and show the result, the source layer stays unchanged. If you want to use vector layers, make a copy and rasterise them. Have text editor with formulas open parallel to Photo. There is one formula for every colour channel. The formulas are made specifically for RGB colour model. They can be adapted for any other colour model (GREY, CMYK, LAB) by search and replacing the variable names of colour channels. I leave this task as an exercise for the reader. Steps to blend 2 layers with your chosen formula (AND, OR, XOR)
    Select destination layer Choose Filter-> Apply Image Drag the source layer (from layer stack) into source area of the filter UI. The canvas will show the selected source area, as the default formula uses 100% of the colours from the source layer. You will change the formulas in the next step Activate box “Equations” Copy / paste the 3 formulas for the individual colour channels DR / DG / DB Click apply The destination layer shows the result Limitations
    Unfortunately, this filter is “destructive”, meaning it will be applied to a pixel layer and stores the result as pixel layer. As of Photo 2 V 2.0.3, there is no way to have this as non-destructive live filter. You can re-apply the filter, using the same formulas and source image, to other destination layers. If you want to use it on different source image data, you need to apply the filter again from scratch. Even worth, there is not easy way like preset to save the formulas inside Affinity. If you use the macro recorder, you will be bound to the source layer used when recording the macro. You can store the formulas as text layers within Affinity Photo, and optionally save / export them as Assets. The only advantage is having everything consolidated “inside” Photo, the workflows gets more complicated in case you try to use the text frames as source for copy/paste. Formula for AND

    R:
    (((((((irem(idiv(SR*255,128),2)*irem(idiv(DR*255,128),2)×2+irem(idiv(SR*255,64),2)*irem(idiv(DR*255,64),2))×2+irem(idiv(SR*255,32),2)*irem(idiv(DR*255,32),2))×2+irem(idiv(SR*255,16),2)*irem(idiv(DR*255,16),2))×2+irem(idiv(SR*255,8),2)*irem(idiv(DR*255,8),2))×2+irem(idiv(SR*255,4),2)*irem(idiv(DR*255,4),2))×2+irem(idiv(SR*255,2),2)*irem(idiv(DR*255,2),2))×2+irem(idiv(SR*255,1),2)*irem(idiv(DR*255,1),2))÷255
     
    G:
    (((((((irem(idiv(SG*255,128),2)*irem(idiv(DG*255,128),2)×2+irem(idiv(SG*255,64),2)*irem(idiv(DG*255,64),2))×2+irem(idiv(SG*255,32),2)*irem(idiv(DG*255,32),2))×2+irem(idiv(SG*255,16),2)*irem(idiv(DG*255,16),2))×2+irem(idiv(SG*255,8),2)*irem(idiv(DG*255,8),2))×2+irem(idiv(SG*255,4),2)*irem(idiv(DG*255,4),2))×2+irem(idiv(SG*255,2),2)*irem(idiv(DG*255,2),2))×2+irem(idiv(SG*255,1),2)*irem(idiv(DG*255,1),2))÷255
     
    B:
    (((((((irem(idiv(SG*255,128),2)*irem(idiv(DG*255,128),2)×2+irem(idiv(SG*255,64),2)*irem(idiv(DG*255,64),2))×2+irem(idiv(SG*255,32),2)*irem(idiv(DG*255,32),2))×2+irem(idiv(SG*255,16),2)*irem(idiv(DG*255,16),2))×2+irem(idiv(SG*255,8),2)*irem(idiv(DG*255,8),2))×2+irem(idiv(SG*255,4),2)*irem(idiv(DG*255,4),2))×2+irem(idiv(SG*255,2),2)*irem(idiv(DG*255,2),2))×2+irem(idiv(SG*255,1),2)*irem(idiv(DG*255,1),2))÷255
    Formula for XOR
    (((((((1-abs(irem(idiv(SR*255,128),2)+irem(idiv(DR*255,128),2)-1)×2+1-abs(irem(idiv(SR*255,64),2)+irem(idiv(DR*255,64),2)-1))×2+1-abs(irem(idiv(SR*255,32),2)+irem(idiv(DR*255,32),2)-1))×2+1-abs(irem(idiv(SR*255,16),2)+irem(idiv(DR*255,16),2)-1))×2+1-abs(irem(idiv(SR*255,8),2)+irem(idiv(DR*255,8),2)-1))×2+1-abs(irem(idiv(SR*255,4),2)+irem(idiv(DR*255,4),2)-1))×2+1-abs(irem(idiv(SR*255,2),2)+irem(idiv(DR*255,2),2)-1))×2+1-abs(irem(idiv(SR*255,1),2)+irem(idiv(DR*255,1),2)-1))÷255
    (((((((1-abs(irem(idiv(SG*255,128),2)+irem(idiv(DG*255,128),2)-1)×2+1-abs(irem(idiv(SG*255,64),2)+irem(idiv(DG*255,64),2)-1))×2+1-abs(irem(idiv(SG*255,32),2)+irem(idiv(DG*255,32),2)-1))×2+1-abs(irem(idiv(SG*255,16),2)+irem(idiv(DG*255,16),2)-1))×2+1-abs(irem(idiv(SG*255,8),2)+irem(idiv(DG*255,8),2)-1))×2+1-abs(irem(idiv(SG*255,4),2)+irem(idiv(DG*255,4),2)-1))×2+1-abs(irem(idiv(SG*255,2),2)+irem(idiv(DG*255,2),2)-1))×2+1-abs(irem(idiv(SG*255,1),2)+irem(idiv(DG*255,1),2)-1))÷255
    (((((((1-abs(irem(idiv(SB*255,128),2)+irem(idiv(DB*255,128),2)-1)×2+1-abs(irem(idiv(SB*255,64),2)+irem(idiv(DB*255,64),2)-1))×2+1-abs(irem(idiv(SB*255,32),2)+irem(idiv(DB*255,32),2)-1))×2+1-abs(irem(idiv(SB*255,16),2)+irem(idiv(DB*255,16),2)-1))×2+1-abs(irem(idiv(SB*255,8),2)+irem(idiv(DB*255,8),2)-1))×2+1-abs(irem(idiv(SB*255,4),2)+irem(idiv(DB*255,4),2)-1))×2+1-abs(irem(idiv(SB*255,2),2)+irem(idiv(DB*255,2),2)-1))×2+1-abs(irem(idiv(SB*255,1),2)+irem(idiv(DB*255,1),2)-1))÷255
    Formula for OR
    ((((((clamp(irem(idiv(SR*255,128),2)+irem(idiv(DR*255,128),2))×2+clamp(irem(idiv(SR*255,64),2)+irem(idiv(DR*255,64),2)))×2+clamp(irem(idiv(SR*255,32),2)+irem(idiv(DR*255,32),2)))×2+clamp(irem(idiv(SR*255,16),2)+irem(idiv(DR*255,16),2)))×2+clamp(irem(idiv(SR*255,8),2)+irem(idiv(DR*255,8),2)))×2+clamp(irem(idiv(SR*255,4),2)+irem(idiv(DR*255,4),2)))×2+clamp(irem(idiv(SR*255,2),2)+irem(idiv(DR*255,2),2)))×2+clamp(irem(idiv(SR*255,1),2)+irem(idiv(DR*255,1),2)))÷255
    (((((((clamp(irem(idiv(SG*255,128),2)+irem(idiv(DG*255,128),2))×2+clamp(irem(idiv(SG*255,64),2)+irem(idiv(DG*255,64),2)))×2+clamp(irem(idiv(SG*255,32),2)+irem(idiv(DG*255,32),2)))×2+clamp(irem(idiv(SG*255,16),2)+irem(idiv(DG*255,16),2)))×2+clamp(irem(idiv(SG*255,8),2)+irem(idiv(DG*255,8),2)))×2+clamp(irem(idiv(SG*255,4),2)+irem(idiv(DG*255,4),2)))×2+clamp(irem(idiv(SG*255,2),2)+irem(idiv(DG*255,2),2)))×2+clamp(irem(idiv(SG*255,1),2)+irem(idiv(DG*255,1),2)))÷255
    (((((((clamp(irem(idiv(SB*255,128),2)+irem(idiv(DB*255,128),2))×2+clamp(irem(idiv(SB*255,64),2)+irem(idiv(DB*255,64),2)))×2+clamp(irem(idiv(SB*255,32),2)+irem(idiv(DB*255,32),2)))×2+clamp(irem(idiv(SB*255,16),2)+irem(idiv(DB*255,16),2)))×2+clamp(irem(idiv(SB*255,8),2)+irem(idiv(DB*255,8),2)))×2+clamp(irem(idiv(SB*255,4),2)+irem(idiv(DB*255,4),2)))×2+clamp(irem(idiv(SB*255,2),2)+irem(idiv(DB*255,2),2)))×2+clamp(irem(idiv(SB*255,1),2)+irem(idiv(DB*255,1),2)))÷255
     
    Source layer

    Destination Layer

    Blend Mode AND

    Blend Mode OR

    Blend Mode XOR

  3. Like
    Zero1 reacted to Leigh in Does Affinity V2 have scripting support?   
    Affinity V2 does not currently have scripting support but it's something our developers are working towards, as mentioned here and demonstrated here.
  4. Like
    Zero1 got a reaction from walt.farrell in Preserve Alpha disappears in Live Blur filters   
    That is why this post is in macOS Beta forum
  5. Like
    Zero1 got a reaction from GRAFKOM in Show object type text   
    When Show object Type is turned off in the layers panel, it should show the object type after the layer name (as in V1). Now it is all or nothing and when the show object type is turned off, there is no way to see the difference between a pixel and an image layer (which can be quite frustrating, as depending on pixel or image, things work differently...)

    Showing the object type after layer is also useful when filters eg are applied and titles were changed. It now shows a different icon for each filter applied (right v2) but in V1 (left) it was much easier to see what filter was applied. Even if you would know all the icons by heart,  on a big screen you really need to focus to differentiate the icons, where as text, it's super clear.
    I do like the icons (looks much better then v1) but i think the filter name should be printed after layer title (when Show object type is turned off)

  6. Like
    Zero1 got a reaction from GRAFKOM in Show object type text   
    Thanks for pointing that out carl123 and i was aware of it, but as you can understand it is not very practical to hover over each layer you have to find out what it was, don't you think? Secondly it does not help to give a quick overview what is what, in 1 look.
  7. Like
    Zero1 got a reaction from RichardMH in Keyboard shortcuts to Macros in Library   
    I think this has been requested earlier (for v1), but it would be great time saver if you would be able to assign keyboard shortcuts to a macro in your library. Or maybe ability to create a shortcut to the search in the library and then apply the macro with the return key (if only 1 macro is left from the search)
  8. Thanks
    Zero1 got a reaction from Patrick Connor in Search in Library breaks the app   
    Searching in Library (Macros), kills the application. Tried multiple times and sometimes it works but then mostly the second search kills the app.
  9. Like
    Zero1 reacted to Patrick Connor in Affinity Photo 2 Customer Beta - 2.0.3.316 (Please use the later 2.0.3 release instead)   
    @Zero1
    Please can you report problems using the beta builds in new threads (in this forum if they are newly broken in the beta), or this announcement will quickly get confusing, thank you 
  10. Like
    Zero1 reacted to GarryP in Clone brush tool Photo 2: cloning from one image to another image is needed   
    See also Global Sources and the Sources Panel for even more options.
  11. Like
    Zero1 got a reaction from ESPR in Knockout Layers   
    Instead of introducing a new blend mode (Inverted Erase or Keep), i would suggest to introduce a "Custom" Blend mode. (I think i have mentioned this earlier in the forums) When setting to custom, one would be able to specify the formula similar to Apply Image / Procedural Texture. Idea would be to specify per channel the formula (and maybe even save local presets similar to procedural textures). For the formulas, procedural functions are not very easy with IF THEN ELSE, so i would suggest implement a scripting language  (eg. lua) or at least implement a condition, true formula and a false formula as most blend modes do have a condition.
    This way, you can easily create presets like the requested KEEP blend mode or any other blend mode that is missing. By having 1 "custom" blend mode, it will also keep the list of blend modes compact and definitely open up new possibilities. This needs to be completely non-destructive of course so you can easily adjust and play with the formula. In a sense it will be an improved and live version of the apply image filter with more possibilities and without having to select an image/layer (as the current layer will be treated as source1, and the under-laying layer results  as source2)
     
    PS.
    Personally i would even go a step further and make it possible to use pixel values from the whole image, eg. source(0,0) = current source value, source(-1,-1) = pixel 1 position to the left and 1 position to the top. Also having some helper functions would definitely help, like canvaswidth, etc. Again this is a bit over the top, i guess, but having a scripting engine can be very interesting for creatives. I am pretty sure the Affinity community would come with a lot of cool effects (and filters).
  12. Like
    Zero1 got a reaction from Aftemplate in HSL adjustment Changing Luminosity also changes Saturation?   
    I am puzzled how the HSL adjustment works with the Luminosity slider. I would presume it would only affect the luminosity, but it also affects the saturation value? Any ideas why? What am i not seeing or is this a bug?
     

  13. Like
    Zero1 got a reaction from Ron P. in Clipping adjustment layers   
    Thank you @Ron P.
    I think we all understand now that clipping adjustments on adjustments or filters doesnt work in Affinity Photo and is a feature that is missing for the time being (or could be even seen a bug as you mention, as you can put adjustments on them as clipping childs)
    I am trying to understand what exactly Photoshop is doing, so i might be able to reproduce it in Affinity in a different way. I probably loose my sanity in the process
     
     
     
  14. Like
    Zero1 got a reaction from lacerto in HSL adjustment Changing Luminosity also changes Saturation?   
    I am puzzled how the HSL adjustment works with the Luminosity slider. I would presume it would only affect the luminosity, but it also affects the saturation value? Any ideas why? What am i not seeing or is this a bug?
     

×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.