Jump to content

TechnoRobbo

Members
  • Posts

    1,740
  • Joined

  • Last visited

  • Days Won

    132

Everything posted by TechnoRobbo

  1. A slightly different take on the sketch plugin. You will find it in the Menu: Effects - > Artistic Version 1.1 uploaded 10:15 PM Wednesday, June 12, 2013 (UTC) - Noise Filter Implemented . The Code: Hidden Content: // Submenu: Artistic // Name: Line Tracer // Title: Line Tracer - v1.0 // Author: TechnoRobbo // URL: http://www.technorobbo #region UICode int Amount1 = 3; // [1,7] Line Width int Amount2 = 4;// [1,10] Threshold int Amount3 = 20;// [0,50] Color #endregion void Render(Surface dst, Surface src, Rectangle rect) { ColorBgra CP; ColorBgra CO; ColorBgra CO2; ColorBgra H2O; int tmp =0; int tmp2 =0; for (int y = rect.Top; y < rect.Bottom; y++) { for (int x = rect.Left; x < rect.Right; x++) { CP = src[x,y]; CO = src.GetBilinearSampleClamped(x-Amount1,y-Amount1); CO2 = src.GetBilinearSampleClamped(x-Amount1,y); H2O = src.GetBilinearSampleClamped(x,y-Amount1); HsvColor hsv = HsvColor.FromColor(CP.ToColor()); HsvColor hsv2 = HsvColor.FromColor(CO.ToColor()); HsvColor hsv3 = HsvColor.FromColor(CO2.ToColor()); HsvColor hsv4 = HsvColor.FromColor(H2O.ToColor()); int H = hsv.Hue ; int S = Amount3 * hsv.Saturation/100 ; int V = Math.Abs(hsv.Value-hsv2.Value); tmp = Math.Abs(hsv.Value-hsv3.Value); tmp2 = Math.Abs(hsv.Value-hsv4.Value); if (V < Amount2 && tmp < Amount2 && tmp2 < Amount2){ V=100; } else { V=0; } hsv = new HsvColor(H,S,V); ColorBgra NP = ColorBgra.FromColor(hsv.ToColor()); NP.A = CP.A; dst[x,y] = NP; } } } Line Tracer.zip
  2. Ego - zero rotation bug fixed and uploaded. I gotta handed to the creativity of the members. Really nice work.
  3. A new twist on the Twist. Rotate your image in slices. (The Original twist makes the image unrecognizable.) Video instructions - http://youtu.be/Q6fPxBzQ4w8 This image was done with a round selection. (Mona's one Twisted sister.) Distort -> Layer Cake Bug Fix -Version 1.1 Fixes Zero Rotation Issue 10:38 AM Wednesday, June 12, 2013 (UTC) The Code: Hidden Content: // Submenu: Distort // Name: Layer Cake // Title: Layer Cake - v1.1 // Author: TechnoRobbo // URL: http://www.technorobbo #region UICode double Amount1 = 0;//[-10,10]Rotation double Amount2 = 5;//[1,30]Slices #endregion void Render(Surface dst, Surface src, Rectangle rect) { Rectangle selection = EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); int CenterX = ((selection.Right - selection.Left) / 2)+selection.Left; int CenterY = ((selection.Bottom - selection.Top) / 2)+selection.Top; double radX = (selection.Right - selection.Left) / 2; double radY = (selection.Bottom - selection.Top) / 2; double offrads = 0; double rads = 0; double slices = 0; int newx = 0; int newy = 0; double maxrad = Math.Sqrt(radX * radX + radY * radY); ColorBgra CP; rads= Math.PI * (Amount1 +.001); for (int y = rect.Top; y < rect.Bottom; y++) { for (int x = rect.Left; x < rect.Right; x++) { slices = Math.Sqrt((x-CenterX) * (x-CenterX) + (y-CenterY)* (y-CenterY)) * rads / maxrad; offrads = Math.Truncate(slices / (rads / Amount2)) * (rads / Amount2); newx=CenterX + (int)(Math.Cos(offrads) * (x-CenterX) + Math.Sin(offrads) * (y-CenterY)); newy=CenterY + (int)(Math.Cos(offrads) * (y-CenterY) - Math.Sin(offrads) * (x-CenterX)); CP = src.GetBilinearSampleWrapped(newx,newy); dst[x,y] = CP; } } } Layer Cake.zip
  4. Pseudo Greyscale from Pseudo-Random Noise. The plugin takes your color image and de-saturates it by shifting the pixel colors randomly. I included a Span and Offset control to adjust the hue and intensity of the de-saturation, Sorry no video instructions - this ones too easy to use. Under the Effects->Color->Noise Bleacher Bug Fix Version 1,1 Span Zero crash fixed. 1:27 AM Tuesday, June 11, 2013 (UTC) Interesting when zoomed: The Code: Hidden Content: // Submenu: Color // Name: Noise Bleacher // Title: Noise Bleacher - v1.1 // Author: TechnoRobbo // URL: http://www.technorobbo #region UICode int Amount1 = 1; // [1,360] Span int Amount2 = 0; // [0,180] Offset #endregion void Render(Surface dst, Surface src, Rectangle rect) { Random rndm = new Random((int)Guid.NewGuid().GetHashCode()); ColorBgra CP; int tmp =0; for (int y = rect.Top; y < rect.Bottom; y++) { for (int x = rect.Left; x < rect.Right; x++) { CP = src[x,y]; tmp= rndm.Next() % Amount1; HsvColor hsv = HsvColor.FromColor(CP.ToColor()); int H = (hsv.Hue + tmp + Amount2) % 360; int S = hsv.Saturation; int V = hsv.Value; hsv = new HsvColor(H,S,V); ColorBgra NP = ColorBgra.FromColor(hsv.ToColor()); NP.A = CP.A; dst[x,y] = NP; } } } NoiseBleach.zip
  5. How to make a faux reflection pond with the plug-in: http://youtu.be/1zIqTkgiIbw
  6. It's only slow when the size of the image doesn't match the size of the map. When it does match the transformation is instant. I wasn't sure whether to call it a bump map or a displacement map. Since both refer to 3D shaders. Perhaps Displacement would be better. Update: I've changed the name and included the recommendation to use same size image and map , I also modified the Youtube tutorial to reflect the changes. Thanks for your help Ego.
  7. The grayscale of an image copied to the Clipboard modifies your image's pixel locations in 3D space. Endless varieties of can be achieved. Effect->Distort->TRs Displacement Map 3D Version 2.0 added a bunch of fun creative features. Highligth and Shadow Light Source Positioning Color Adjustment Alpha Transparency. Here's the Quick Demo on Youtube: http://youtu.be/VfLRw4wsE2Q Here's the Demo on how to create the 3 Skulls on Youtube: http://youtu.be/aXQeIOBKabk Download: DispMap.zip Here's the code: Old Version:
  8. Technorobbo's Fish Eye 2.2 v2.2 adds color cast to highlight and specular control v2.1 fixes a bug in the highlight V2.0 adds shadow, rotation and specular highlight It's not a Bulge Filter. It takes your image, creates a Pixel Cloud then maps it via the Pythagorean theorem. Then renders it using a standard 3D Mapping algorithm. Here is a Youtube tutorial http://youtu.be/DOOwh8ul3gc V2 Demo http://youtu.be/oqaHRlxdARs Here's the code: Hidden Content: // Submenu: Distort // Name: TR's Fish Eye // Title: Fish Eye - v2.2 // Author: TechnoRobbo // URL: http://www.technorobbo.com #region UICode double Amount1 = 0.25; // [0.01,1] Control Pair<double, double> Amount2 = Pair.Create( 0.0 , 0.0 ); // Rotate Pair<double, double> Amount3 = Pair.Create( 0.0 , 0.0 ); // Light Source double Amount4 = 0; // [0,2] Spot Light double Amount5 = 2; // [0,5] Light Intensity double Amount6 = 0; // [0,1.5] Highlight double Amount7 = 1; // [0.01,10] Specularity ColorBgra Amount8 = ColorBgra.FromBgr(0,0,0); // Color Cast #endregion private ColorBgra getblend(int x, ColorBgra a, ColorBgra { UserBlendOp bop = new UserBlendOps.NormalBlendOp(); switch (x) { case 0: bop = new UserBlendOps.NormalBlendOp(); // Normal break; case 1: bop = new UserBlendOps.MultiplyBlendOp(); // Multiply break; case 2: bop = new UserBlendOps.AdditiveBlendOp(); // Additive break; case 3: bop = new UserBlendOps.ColorBurnBlendOp(); // Color Burn break; case 4: bop = new UserBlendOps.ColorDodgeBlendOp(); // Color Dodge break; case 5: bop = new UserBlendOps.ReflectBlendOp(); // Reflect break; case 6: bop = new UserBlendOps.GlowBlendOp(); // Glow break; case 7: bop = new UserBlendOps.OverlayBlendOp(); // Overlay break; case 8: bop = new UserBlendOps.DifferenceBlendOp(); // Difference break; case 9: bop = new UserBlendOps.NegationBlendOp(); // Negation break; case 10: bop = new UserBlendOps.LightenBlendOp(); // Lighten break; case 11: bop = new UserBlendOps.DarkenBlendOp(); // Darken break; case 12: bop = new UserBlendOps.ScreenBlendOp(); // Screen break; case 13: bop = new UserBlendOps.XorBlendOp(); // Xor break; default: bop = new UserBlendOps.NormalBlendOp(); break; } return bop.Apply(a, ; } void Render(Surface dst, Surface src, Rectangle rect) { Rectangle selection = EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); double CenterX = ((selection.Right - selection.Left) / 2)+selection.Left; double CenterY= ((selection.Bottom - selection.Top) / 2)+selection.Top; double offx =0; double offy =0; double rady = (selection.Bottom - selection.Top) / 2; double radx = (selection.Right - selection.Left) / 2; double rotateX=Amount2.First * CenterX; double rotateY=Amount2.Second * CenterY; double sourceX=Amount3.First * CenterX + CenterX; double sourceY=Amount3.Second * CenterY + CenterY; double gamma = Amount5 * 255; double wide=Amount4; double hilite = Math.Pow(Amount6,Amount7); double tmpy =0; double tmpx =0; double z=0; double tmp=0; double zp= Math.Pow((double) Amount1,2) * radx * 8; ColorBgra cast = Amount8;//getblend(12,ColorBgra.White,Amount8); ColorBgra CP; for (int y = rect.Top; y < rect.Bottom; y++) { if (IsCancelRequested) return; tmpy=y-CenterY; tmpx=Math.Sqrt(rady*rady-tmpy*tmpy); for (int x = rect.Left; x < rect.Right; x++) { if (IsCancelRequested) return; double spread = Math.Sqrt(Math.Pow(x - CenterX,2) + Math.Pow(y - CenterY,2)); double Light = Math.Sqrt(Math.Pow(x - sourceX,2) + Math.Pow(y - sourceY,2)) * wide ; Light=(Light>CenterY)?1:Light/CenterY; double hLight = Math.Sqrt(Math.Pow(x - sourceX,2) + Math.Pow(y - sourceY,2)); hLight =(hLight >CenterY)?1:hLight /CenterY; tmp=(double)x-CenterX; z = zp + Math.Sqrt(tmpx*tmpx-tmp*tmp); offx = tmp * zp / z + CenterX + rotateX; tmp=(double)y-CenterY; offy= tmp * zp / z + CenterY + rotateY; CP= src.GetBilinearSampleWrapped((float)offx,(float)offy); double l,lr,lg,lb; lr =(1 - Math.Pow(hLight , hilite)) * cast.R; lr=(lr>255)?255:(lr<0)?0:lr; lg =(1 - Math.Pow(hLight , hilite)) * cast.G; lg=(lg>255)?255:(lg<0)?0:lg; lb =(1 - Math.Pow(hLight , hilite)) * cast.B; lr=(lb>255)?255:(lb<0)?0:lb; ColorBgra CH = ColorBgra.FromBgr((byte)lb,(byte)lg,(byte)lr); CP=getblend(12,CP,CH);//was 12 l= (1 - Math.Sqrt(Light)) * gamma; l=(l>255)?255:(l<0)?0:l; ColorBgra CL = ColorBgra.FromBgr((byte)l,(byte)l,(byte)l); CP=getblend(1,CP,CL); if (spread>(CenterY-1))CP.A=32; if (spread>(CenterY-2))CP.A=128; if (spread>CenterY)CP.A=0; dst[x,y]=CP; } } } Fisheye.zip
  9. Gaussian Blur + Compared to Edge Fader I think I classify Edge Fader as a vignetting tool. (Note to self: enough with the horses)
  10. I'm gonna have to check that one out. Does it work on horses?
  11. That's a possibillity. I thought that since I'm replacing all colors and messing with the alpha, it really wasn't a color filter of sorts. I don't know. Let me put it out to a vote. What do people think the "natural fit" category is?
  12. Yes, this Plug-in actually fades the Alpha inwards from the edges up to 255 Pixels . (Version 1.3 fixes an artifact left at top if selection. Available now.) BoltBaits Feather uses a GaussianBlur on the edges, Here's how he explained it in his tutorial.
  13. Excellent Advice - I recompiled and re uploaded the plugin.
  14. Please Explain how. Reposted code per Pyrochild's advice. #region UICode int Amount1 = 255; // [0,255] Cyan int Amount2 = 105; // [0,255] Magents int Amount3 = 0; // [0,255] Yellow int Amount4 = 255; // [0,255] Alpha #endregion unsafe void Render(Surface dst, Surface src, Rectangle rect) { int scratch = 0; int tmpval = 0; // Delete any of these lines you don't need for (int y = rect.Top; y < rect.Bottom; y++) { ColorBgra* srcPtr = src.GetPointAddressUnchecked(rect.Left, y); ColorBgra* dstPtr = dst.GetPointAddressUnchecked(rect.Left, y); for (int x = rect.Left; x < rect.Right; x++) { ColorBgra CurrentPixel = *srcPtr; scratch= (int)((long)CurrentPixel.R + (long)CurrentPixel.G + (long)CurrentPixel. / 3; tmpval=Math.Abs(Amount1-scratch); CurrentPixel.R=(Byte)tmpval; tmpval=Math.Abs(Amount2-scratch); CurrentPixel.G=(Byte)tmpval; tmpval=Math.Abs(Amount3-scratch); CurrentPixel.B=(Byte)tmpval; tmpval=Math.Max(Amount4,scratch); CurrentPixel.A=(Byte)tmpval; *dstPtr = CurrentPixel; srcPtr++; dstPtr++; } } }
  15. CMY Ghost is a way to mess with the Color and Alpha create wild effects. Version 1.1- is now in the Color Menu. Instrunction Link: http://youtu.be/Vd2WPemHc3g Program reposted on 3:23 PM Sunday, June 9, 2013 (UTC) CycleHSV allows you to do a per pixel cycle the colors space with Saturation and Brightness as well as Hue. The values roll over with out clamping (a hue of 361 = 1, a saturation of 101 =1 etc). This leads to interesting Posterization effects. Instrunction Link:http://youtu.be/ILS216rYHog CMY Ghost CycleHSV Thank You to Pyrochild for his advice. CMY Ghost.zip CycleHSV.zip
  16. Removed Post due to code update making this work around unnecessary.
  17. Ego Here's a YouTube video I made to explain better Edit : see original Post
  18. Yellowman, I took your advice and moved it to the selection menu. Good Suggestion - I wasn't sure I could put it there but obviously I can.I replaced the download in the original post.
  19. TechnoRobbo's Edge Fader Extreme v 5.3.5 (Now called TR's EFX in the menu) I set out to write the fastest, most accurate edge fader out there. It is not a selection tool - it feathers the alpha inwards from the edges. (do not use with a selection) Check out the code! Learn how to increase the speed of your plugins. 5.3.5 Address Small Image Bug 5.1.0 Fade Curves - Plugin Browser Compatible Hidden Content: 5.07 Fixes aspect ratio on preview 5.0.6 diminishes border 5.0.5 Works on very large images 5.0.4 reduced memory usage by 4X 5.0.3 - unbelieveably fast 5.0.1 - 4 Times Faster 5.0.0 Same Algorithm - New Interface with Preview Thumbnail. 4.52 Updated for Paint.net 4.0 4.51 Finer Edges 4.4 Speed, Real Speed 4.3 Edges refined preview turned back 4.2 Enhancement - Adjusts for pre-existing alpha. 4.1 Bug Fix - Large Pictures Selections with no Alpha cause crash. - fixed. 4.0 Re-write - The Need for Speed forced me to write new code to work around the ROI. 3.0 Bug Fix - New Menu -Faster - Adapts to existing Alpha Channel - Resolution Control for Higher Rezimages 2.1 Bug Fix - Streamlined Code More 2.0 Bug Fix - Faster Code 1.4 Bug Fix - Small artifact left at Bottom of selection eliminated. 1.3 Bug Fix - Small artifact left at Top of selection eliminated. Menu: Effects -> Object ->TR's EFX Fade Curves YouTube Tutorial C2ShiningC The VS Source Code https://www.dropbox.com/s/23kwfqretm0fx31/TRsEdgFaderXtremeSrc.zip?dl=0 The Plugin EdgeFader.zip
×
×
  • Create New...