Sphinx.
![]() |
Mortar Width 0..99 OK,
Mortar Width 100: Rendering is all wrong I bet you can find a division by zero somewhere in a dark corner ![]() Pavement Plus Bug.ffxml |
|||||||
Posted: November 21, 2015 3:44 am | ||||||||
Vladimir Golovin
Administrator |
Oh, great. That's definitely a bug. The original code for Bricks / Tiles / Pavements was written almost a decade ago, and is really, really messy. We probably missed something when we refactored it to add slaves. Thanks for reporting.
|
|||||||
Posted: November 24, 2015 11:19 am | ||||||||
Alexey Matsinin
Posts: 13 |
it is not a "bug"!
It is "Optimization"! ![]() ![]() ![]() |
|||||||
Posted: November 25, 2015 3:48 am | ||||||||
Sphinx.
![]() |
Ah, of course - it optimizes all interpolation logic (and slavery) away with mortar = 100.. yeah I guess the new stuff changes the optimization strategies here and there.
|
|||||||
Posted: November 25, 2015 6:25 am | ||||||||
Vladimir Golovin
Administrator |
Yep, that was a decade-old optimization that bit us in the arse when we introduced slave components. Another optimization like this is the sample cache: we're currently rewriting it completely.
|
|||||||
Posted: November 25, 2015 7:40 am | ||||||||
Sphinx.
![]() |
Cool. I really hope you will consider the index/channel idea I presented here then. It may be useful with the slave situation too, as you can increase the index as needed. |
|||||||
Posted: November 25, 2015 9:19 am | ||||||||
Sphinx.
![]() |
Vlad, is the caching mechanism active even if there is just one outbound connection?
If so, there is a pretty significant performance improvement: remove caching mechanism in components that will only deliver a sample once per final sample. |
|||||||
Posted: November 26, 2015 2:00 am | ||||||||
Vladimir Golovin
Administrator |
Yes, it is. This saves you a metric ton of rendering time when multiple samples from that connection are requested at the same coordinates (e.g. Checker's colors in Solid Fill mode, a lot of inputs in Bomber / Bomber Plus that are sampled at particle's center coordinates etc.) |
|||||||
Posted: November 27, 2015 12:00 pm | ||||||||
Vladimir Golovin
Administrator |
if I understood that correctly, you're suggesting caching samples per outbound connection, not per component. Am I correct? |
|||||||
Posted: November 27, 2015 12:02 pm | ||||||||
Vladimir Golovin
Administrator |
(Assuming that my understanding of your idea is correct): Just talked with the guy who works on the sample cache. He says that yes, having different cache bins for each outbound connection is possible. On the other hand, this will disable the most frequent case of cache-hits: multiple connections of the same output to non-distorting components (they sample the output at the same coords, so the more outbound connections to non-distorters the better the cache hit ratio).
|
|||||||
Posted: November 27, 2015 12:36 pm | ||||||||
Sphinx.
![]() |
No, it is a little more sophisticated than that. Even though there is just one connection, any component up the flow may branch out to other components. As long as x,y stays the same it is all good, but if one is a distorter which modifies x or y it will miss the cache, force rendering of a new value and ruin the cache for any subsequent original x,y calls.
Sorry, that was really not what I meant to ask. I was thinking about the sampling calls: if a component is only called once, do you still check and/or set up cache? (I was thinking about a trivial filter with an Add connected to result and nothing else, and got all focused on that one connection.. forget about the number of outbound connections... its all about the coordinate flow and branchings/iterations) What I proposed back then was this:
Basically any distorter up the flow will change the cache channel index/ID and thereby establish a new isolated cache for anything subsequent to that distorter.. and thereby not ruin the original x,y cache.. follow? |
|||||||
Posted: November 27, 2015 4:34 pm | ||||||||
Vladimir Golovin
Administrator |
We're currently subjecting our entire sample cache architecture to a profound overhaul. We've already tried and discarded several implementations. The one we're going to try next will use multiple 'bins' for separate sampling paths. That is, when a component is sampled by two other components that distort sample coordinates in two different ways, each of these two sampling paths will get a separate cache bin. It's too early to tell whether this will work or not.
|
|||||||
Posted: December 17, 2015 11:44 am |
Filter Forge has a thriving, vibrant, knowledgeable user community. Feel free to join us and have fun!
33,712 Registered Users
+19 new in 30 days!
153,533 Posts
+31 new in 30 days!
15,348 Topics
+73 new in year!
99 unregistered users.