by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Jul 09 19:23
    artem-ogre closed #78
  • Jul 09 19:23
    artem-ogre commented #78
  • Jul 09 18:37
    kobalicek commented #78
  • Jul 09 18:35
    kobalicek closed #76
  • Jul 09 18:35
    kobalicek commented #76
  • Jul 09 18:33

    kobalicek on master

    Temporarily disabled -Wconversi… (compare)

  • Jul 09 18:32
    kobalicek closed #80
  • Jul 09 18:32

    kobalicek on master

    [Bug] Renamed wrong BLStyle::ge… (compare)

  • Jul 09 12:28
    abu-irrational opened #80
  • Jul 08 22:22
    kobalicek commented #79
  • Jul 08 09:10
    artem-ogre commented #78
  • Jul 08 09:09
    artem-ogre commented #78
  • Jul 08 09:08
    artem-ogre commented #78
  • Jul 07 21:40
    yzrmn commented #79
  • Jul 07 21:33
    yzrmn commented #78
  • Jul 07 02:44
    chouer19 opened #79
  • Jul 06 15:21
    artem-ogre edited #78
  • Jul 06 15:21
    artem-ogre opened #78
  • Jun 24 21:02

    kobalicek on simd

    (compare)

  • May 31 21:43

    kobalicek on master

    Fixed to work with latest Blend… (compare)

William Adams
@Wiladams
and if you give it more room, it shows even better
image.png
William Adams
@Wiladams
and since it's calculated, I can do things like play with gamma along the way
0.25
image.png
2.5
image.png
William Adams
@Wiladams
gamma ranging from 0.025 at the top, to 2.5 at the bottom
image.png
probably more compute intensive if you're trying to do that with linear gradients
William Adams
@Wiladams
I guess the real question is, although blend2d is primarily focused on vector graphics, how much consideration needs to be made to deal with pixel effects in general? Is it a large departure from the vector focus, or is it a slight deviation? It seems unavoidable that more pixel processing will want to sneak its way into most applications, it starts with blt and goes from there.
And for code's sake
    for (int y = 0; y < 200; y+=1) {
        double gamma = map(y, 0, 200, 0.025, 1.25);
        for (int x = 0; x < width - 1; x++) {
            double wl = map(x, 0, width - 1, 380, 780);
            auto c = coloring::ColorRGBAFromWavelength(wl, gamma);
            stroke(BLRgba32(c.r * 255, c.g * 255, c.b * 255));
            line(x, y, x, y+1);
        }
    }
William Adams
@Wiladams
and if you're really doing pixel operations and you know it...
    for (int y = 0; y < 200; y+=1) {
        double gamma = map(y, 0, 200, 0.025, 1.25);
        for (int x = 0; x < width - 1; x++) {
            double wl = map(x, 0, width - 1, 380, 780);
            auto c = coloring::ColorRGBAFromWavelength(wl, gamma);
            auto p = BLRgba32(c.r * 255, c.g * 255, c.b * 255, 255);
            canvas->set(x, y, p);
        }
    }
Just set the pixels directly.
It might be that to get into the pipeline of multi-threaded operations, I could "reserve" a section of pixels, and perform whatever I'm going to perform, and the rendering pipeline will integrate that into the general command processing machinery. that seems like a quite reasonable thing to do. Could be used for image conversions, for example, or when I'm decoding mjpeg, or whatever.
Federico Pietrobono
@fjpietr
@Wiladams yes this would be very useful. Some time ago I proposed something similar too, a mechanism to schedule an arbitrary function to be executed on a rectangular region of a BLImage, fitting it in the multithreaded flow of blend2d. Iirc @kobalicek took note of this.
William Adams
@Wiladams
If I had enough spare time, cookies and milk, I might be able to actually code up an example. We'll see.
Federico Pietrobono
@fjpietr
:D milk, cookies and C++
William Adams
@Wiladams
what more do you need in the world...
Federico Pietrobono
@fjpietr
Endless hacking
And @kobalicek : arm Macs are real, and no avx support in Rosetta 2! Ouch!
@Wiladams I think we should send a container of milk and cookies to @kobalicek to fuel him for the arm porting work
William Adams
@Wiladams
@kobalicek how do we donate? The web page says $1,000 minimum, but I think that's out of date? PayPal, Venmo, wire transfer? What's the deal man? time to vote with our currency.
Petr Kobalicek
@kobalicek
@fjpietr I didn't forget about that :) I believe that with masking we would move a bit closer to having a nicer pipeline, possibly with effects as well, as we can for example process the output of rasterizer and blur it, but that's not what I'm aiming for now
@Wiladams I haven't finalized any donation system so far - yeah the web states such amount to basically avoid small individual donations by wire and to focus more on companies, and I don't know how to do the "smaller" donations properly - I have checked github sponsors and I may try that out - but that's monthly donations basically, so not sure if this is what people would prefer.
Petr Kobalicek
@kobalicek
In addition, what I have thought about was creating a transparent account in EUR currency, which would allow people to donate through SEPA payments (those are pretty cheap in EU, much better than donation platforms that take 15%). I can do that with my current bank, but my experience is that people just don't want to donate, so I'm not sure it's worth the shot.
And ARM - well, that's unfortunate yeah, I have an ARM asmjit branch already, but I haven't moved that far actually
Robert M. Münch
@Robert-M-Muench
@kobalicek Create a Revolut account. Gives you everything and allows you to handle many different currencies.
Petr Kobalicek
@kobalicek
I have
But I'm not really interested in many currencies - I think the only reasonable is EUR and USD - and USD transfers are pretty expensive
William Adams
@Wiladams
can I make SEPA based payments using PayPal?
Petr Kobalicek
@kobalicek
I don't know, but I know that I have stopped using PayPal years ago as it was very bad with fees - I think they charged like 5% for transfer and then another 10% for local currency conversion, they don't let me withdraw EURs, so I usually used PayPal to buy something from AliExpress instead :)
I would have to make a small research to see what would be the best way to make donations possible, the current approach is not working actually
What about this github sponsors, does it make sense? I have it almost setup, but I have no idea
I think there is even more ways of supporting the project, what about GSOC for example? Do anyone has any experience with that? Would Blend2D be a viable project for that?
Robert M. Münch
@Robert-M-Muench
GSOC: No direct experience, only following it by the D community which tries to participate. As far as I understand the process, this is mostly for students which need a mentor. You submit a proposal with a goal you want to reach.
William Adams
@Wiladams
Try the github sponsor thing. I'd like to know how well that works.
William Adams
@Wiladams
to @Ardo16528776_twitter , reflections on light, and shadow, and darkness...
image.bmp
Ardo
@Ardo16528776_twitter
Lights are really realistic, but sorry, I don't see the Blend2d connection, apart the blend2d,s logo texture on the rear wall
William Adams
@Wiladams
No connection, other than your study in shadowing, and how to optimize for 2d fast rendering.
Petr Kobalicek
@kobalicek
Update: Still working on support for masks (fill / blit). Starting with ST implementation first, still don't have it ready. In addition, I bought the newest RPI 4 for experimenting and I can run Blend2D on ARM64, but still without JIT. However, the particles demo needs only 7ms to render 1200 particles on a screen with 1024x600 resolution, which is pretty nice considering there is no SIMD in the reference pipeline code.
ParticlesDemoRPI.jpg
Looks like that - a bit low quality image, it's already evening here :)
The important thing is, I will be starting with ARM64 support before 32-bit ARM
lane203m
@lane203m
is it possible to create an image, resize the canvas, and then move the entire blresult to center with the new canvas?
or start with a larger canvas, then center the result?
Fabian Yzerman
@yzrmn
Nice!
Petr Kobalicek
@kobalicek
@lane203m You can, create a new canvas, and then blit the content of some BLImage to that canvas