New day, new ideas and new participants Hi pgimeno !
Thank you for your explanation, I go try this right now !
pgimeno wrote: ↑Thu Feb 28, 2019 12:20 am
Oops, I see you've dropped the shader.
Yes sadly I had to, it asked too much to machines. Actually if you don't have a graphic card the shader was really slow. And since my knowledge is limited, I tried to optimize it but I gain maybe 40 - 50 fps but was not enough when more lights was added.
grump wrote: ↑Wed Feb 27, 2019 8:54 pm
That's a slightly more efficient solution, because the lightmap is smaller and you don't have to render lights that are outside the normally visible area.
I actually want the background to shake, everything that I draw I want it to shake if only the lights would shake this will have a strange effect I think. But I have a question on what you said :
Should a draw call outside a canvas be avoided or LÖVE is smart and manage it fast ? So just to be clear. I draw all my actives lights even if their far away from my canvas.
grump wrote: ↑Wed Feb 27, 2019 8:54 pm
That's a slightly more efficient solution, because the lightmap is smaller and you don't have to render lights that are outside the normally visible area.
I actually want the background to shake, everything that I draw I want it to shake if only the lights would shake this will have a strange effect I think.
It would shake the background and the lights, just the lightmap would remain stationary. My solution is the same as pgimeno's, I wasn't able to convey it here. Actually reading the code instead of guessing goes a long way, lol.
Should a draw call outside a canvas be avoided or LÖVE is smart and manage it fast ? So just to be clear. I draw all my actives lights even if their far away from my canvas.
Draw only what is actually visible on the screen for best performance. LÖVE does not perform culling, so it will be done much later in the graphics pipeline, which is suboptimal. Note that looping over all lights in every frame and doing this check is not the best way to do this. Determine and update the set of visible lights only when necessary. You may want to read up on spatial hashing techniques for that.
Haha yeah it would have helped but I did not simplify that by giving you the full source x). Thanks however for you help.
grump wrote: ↑Thu Feb 28, 2019 6:07 am
Draw only what is actually visible on the screen for best performance. LÖVE does not perform culling, so it will be done much later in the graphics pipeline, which is suboptimal. Note that looping over all lights in every frame and doing this check is not the best way to do this. Determine and update the set of visible lights only when necessary. You may want to read up on spatial hashing techniques for that.
Ok I will take a look, but actually I think I will just release a new version of Luven with the current state which is fare better than before.
But I wonder how I could determine when to draw a light or not since the scale can change and they can affect the canvas even if there far away from it. I should think a bit about that. Thanks for insights.
ChicoGameDev wrote: ↑Thu Feb 28, 2019 6:36 am
But I wonder how I could determine when to draw a light or not since the scale can change and they can affect the canvas even if there far away from it.
The easiest way to determine visibility is to check if a light's axis aligned bounding box intersects the axis aligned bounding box of the camera. Since you already seem to have a Transform object, you can probably use transformPoint to take care of scaling (and rotation) of the bounding boxes for you. Searching the forum for "aabb" will probably turn up some useful results. It's not hard to implement, but the benefit can be huge.
That's interesting. I'm surprised you'll add bounding box on every lights and on camera to check this, but why not. Of course in that case it's much simpler to understand.
I think this could be the subject of another post tho