Jump to content

Reptillian

Members
  • Posts

    1,236
  • Joined

  • Last visited

  • Days Won

    18

Everything posted by Reptillian

  1. I made updates to my collection of palettes. For those who haven't seen it before, there's 211 palettes here. Changes: 1) Remaining colors are completely-transparent. 2) More appropriate titles PDN Palettes.zip
  2. The answer is that you're working with pixels. Edit: Old topic is old. Why did I bother?
  3. New update, I added border option. I will admit that my solution for this isn't really the best. But it'll do with the limitations I have. This is what I created:
  4. This plugin basically generates Hitomezashi Stitch. Code is based on the spreadsheet found in this place - https://aperiodical.com/2020/12/mobile-numbers-hitomezashi-stitching/ The plugin itself is very simple, and speaks for itself. No instruction or clarification needed other than it's under Texture. Download Link : Hitomezashi.zip Preview: Source Code: EDIT as of 1/8/2022 - Added Border Option EDIT as of 1/9/2022 - Optimization by adding "continue;".
  5. Removing the -1 did fix the problem. Also, changed the position of cast. Thanks.
  6. In this code of mine, I am finding that the pattern disappear if pixel size changes, and it is dependent on the pixel size. I'm not sure why it happens: Other than that, it works fine though it could use a little polishing. // Name: // Submenu: // Author: // Title: // Version: // Desc: // Keywords: // URL: // Help: #region UICode IntSliderControl pixel_size = 1; // [1,100] Pixel Size ColorWheelControl color_a = ColorBgra.FromBgr(0, 0, 0); // [PrimaryColor] Color A ColorWheelControl color_b = ColorBgra.FromBgr(255, 255, 255); // [SecondaryColor] Color B ReseedButtonControl seed = 0; // Reseed #endregion // This single-threaded function is called after the UI changes and before the Render function is called // The purpose is to prepare anything you'll need in the Render function int length_w,length_h,enlarged_w,enlarged_h,old_pixel_size; bool initialized,rebuild; Random myRandomA,myRandomB; Random Init = new Random(); int new_seed; int[] vx; int[] vy; int[,] surface; void PreRender(Surface dst, Surface src) { if (!initialized){ length_w=(int)(Math.Ceiling((double)((src.Width-1)/pixel_size))); length_h=(int)(Math.Ceiling((double)((src.Width-1)/pixel_size))); myRandomA = new Random(Init.Next()); myRandomB = new Random(Init.Next()); vx = new int[length_w]; vy = new int[length_h]; surface = new int[length_w,length_h]; old_pixel_size=pixel_size; } if (old_pixel_size != pixel_size){ length_w=(int)(Math.Ceiling((double)((src.Width-1)/pixel_size))); length_h=(int)(Math.Ceiling((double)((src.Width-1)/pixel_size))); enlarged_w = length_w * pixel_size; enlarged_h = length_h * pixel_size; enlarged_w = ( enlarged_w - src.Width ); enlarged_h = ( enlarged_h - src.Height); myRandomA = new Random(Init.Next()); myRandomB = new Random(Init.Next()); vx = new int[length_w]; vy = new int[length_h]; surface = new int[length_w,length_h]; surface[0,0]=0; rebuild = true; old_pixel_size = pixel_size; } if (!initialized||rebuild||(new_seed != seed)){ myRandomA = new Random(Init.Next()); myRandomB = new Random(Init.Next()); for (int x = 0 ; x < length_w ; x++){ vx[x]=myRandomA.Next()%2; } for (int y = 0 ; y < length_h ; y++){ vy[y]=myRandomB.Next()%2; } for (int y = 1 ; y < length_h ; y++){ surface[0,y]=(surface[0,y-1]+vy[y-1])%2; } for(int y = 0 ; y < length_h ; y++){ for (int x = 1 ; x < length_w ; x++){ surface[x,y]=(vx[x-1]+surface[x-1,y]+y+2)%2; } } } new_seed=seed; initialized = true; rebuild = false; } // Here is the main multi-threaded render function // The dst canvas is broken up into rectangles and // your job is to write to each pixel of that rectangle void Render(Surface dst, Surface src, Rectangle rect) { int val; // Step through each row of the current rectangle for (int y = rect.Top; y < rect.Bottom; y++) { if (IsCancelRequested) return; // Step through each pixel on the current row of the rectangle for (int x = rect.Left; x < rect.Right; x++) { val = surface[((x+enlarged_w)/pixel_size)%length_w,((y+enlarged_h)/pixel_size)%length_h]; if (val==1){dst[x,y] = color_a;} else{ dst[x,y] = color_b;} } } }
  7. New Filter! Hitomezashi. It doesn't work too well on Paint.NET though. You're gonna have to import the saved file. The reason why is that there's no way to retrieve target image dimension on G'MIC GUI.
  8. Yes, it should be updated. I did that with few of my own plugin as .NET 5 as a temporary thing, and had to learn that the hard way.
  9. Here's another possible output. I think this would be great for textile stuff when I finish. Another picture for today, and that's it for today:
  10. I can't speak for @Rick Brewster, but in theory it should be possible to make a flattened copy automatically and use said copy to save as .png at the internal level. This is observed with other art software. Just Cntrl+Z after saving. Not convenient, yes, but it'll do.
  11. I second this request. I would be able to actually be able to create z-blend which basically use the z axis to determine the color of output image. And a few more obscure filters.
  12. Decided to hold off on that. Here's what I"m working on.
  13. Translation of OP: Paint.NET closes as soon as it open. ---- Uno, aqui escribe en ingles, no en español. Y dos, ese es un problema con la programa. Probablemente algo que se puede areglar. ¿Puede tu mandar un reporte? Translation: One, here we write in english, not in spanish. Two, that is a problem with the program. Likely, it can be fixed. Send your report.
  14. This is essentially a upgraded version of the existing Paint.NET Emboss/Relief. Emboss/Relief+ has options such as changing radius, changing internal convolution kernel, and finally, having the option for each channel has their own convolution result rather than utilizing the average of convolution. The original code was based on this - https://www.mathworks.com/matlabcentral/fileexchange/9645-steerable-gaussian-filters Download Plugin -> EmbossReliefPlus.zip Output of Result: Source code CodeLab: G'MIC: Note: Don't bother editing radius limit into more than 50. I would advise you to go into the G'MIC Emboss/Relief if you need it since it's faster with higher value there.
  15. Oh, I did not saw that! Thanks! Also, it seems the that convolution did not work as expected. Rotate either gives too high or low value. Oh well, I tried.
  16. Why is this so slow? The other time I did something like this, it was much faster. It's on PreRender that's the problem. Take out the code in Render, and it's still slow.
  17. @BDP G'MIC 3 is out, so you can test these filter. ----- I'm working on my own Pollock generator.
  18. See here - https://discuss.pixls.us/t/release-of-gmic-3-0/17226/516 That's where I got the release number.
  19. Thank @G'MIC . He's the one that released G'MIC 3.0.0, and he is the developer of G'MIC.
  20. Ok, some new changes to G'MIC 3.0 update when it's out. 1. Faster and more flexible Emboss-Relief. 2. Construction Material Texture gets a slight update due to changes on Emboss-Relief.
  21. @lifeday Since you asked me to enable color for Emboss/Relief filter. Now that I gotten back to improving this filter, I have been able to figure it out. The changes will be available in G'MIC 3.0 which is on work. I'll notify you when I push the changes.
  22. The last statement is how this plugin works, so I'm not sure what you mean. Also, finished code is at the plugin section.
×
×
  • Create New...