Messages 91 - 135 of 184
First | Prev. | 1 2 3 4 5 | Next | Last |
Crapadilla
![]() |
Indeed. And once we've gotten to the bottom of all this sample cache stuff, it should really be made into a dedicated, heavily illustrated wiki article officially licensed by Vlad, or even better: end up in the help file, where it belongs! I would certainly read it often, because now I am more confused than ever about sample caching, and I thought I had it so well nailed down! ![]() --- Crapadilla says: "Damn you, stupid redundant feature requests!" ;) |
|||||||
Posted: December 20, 2007 5:22 pm | ||||||||
Sphinx.
![]() |
So if the incoming coordinate to a refraction is (1, 1), what are the three coordinates it will pass to its heightmap source?
Yeah, Along with a good explanation of the coordinate and sample flows.. i.e. coordinates are passed from result (top node) to end components(leaf nodes), and samples are returned from leaf to top node. It seems like this is not something you'd intuitively think when looking at - and working with the components and connections.. The sample cache functionality is easily explained when this flow is understood: "When a component receives a coordinate, it checks if it is equal to the last rendered sample coordinate. If that is the case, it returns a cached sample" ![]() Btw. with regards to the build in sample cache stuff, think of the blur buffering snippet again: when a blur receives a coordinate, it must fetch alot of samples from its source (actually a bunch of sample tiles), but the optimizations of the blur ensure that any future sample requests within these already rendered tiles are not rendered again from the blur source - so what you have here is not just a single sample cache, but a sample tile cache - this is why the snippet is so fast in buffered mode. |
|||||||
Posted: December 21, 2007 2:47 am | ||||||||
Vladimir Golovin
Administrator |
Hehe ![]()
We add small offsets (a tiny fraction of a pixel) in each direction, so the three coordinates wold look roughly like this: 1, 1 1.00000001, 1 1, 1.00000001
I'd say it like this: When a component receives a sample request, it checks if the coordinates of the requested sample match the coordinates of the last rendered sample, which is currently stored in the cache. If they match, the component returns the cached sample, otherwise, it renders a new sample and updates the cache. |
|||||||
Posted: December 21, 2007 6:56 am | ||||||||
Vladimir Golovin
Administrator |
No, definitely not -- we don't rasterize anything unless there's a strong need. We always try to keep things procedural. Rasterizing involves bitmaps. Bitmaps take memory. This becomes very cumbersome when rendering big images, say, 65000x65000 pixels. The only cases where we rasterize stuff are bitmap-based components (see Help). |
|||||||
Posted: December 21, 2007 7:03 am | ||||||||
Vladimir Golovin
Administrator |
Yes, the list is correct.
Actually, two more -- add the Checker with Solid Fill turned on. Plus, you totally forgot the Curve Ops (Frequency, Phase, Repeat and Reverse) ![]() |
|||||||
Posted: December 21, 2007 7:21 am | ||||||||
Sjeiti
![]() |
I just noticed something.
As noted in the wiki: when using noise and alike it is best to keep your details <= distortion. But when you add a component like Perlin noise or Noise distortion the default values do not match that idea. Default Perlin noise: roughness 20, details 100 Default Noise distiortion: roughness 10, details 100 Default worleys: roughness 20, details 40 It might be a good to fix that, so people don't get wrong ideas. |
|||||||
Posted: December 21, 2007 7:42 am | ||||||||
Sphinx.
![]() |
Sounds reasonable - I was just not sure as the elevation only uses the top row of the gradient input when remapping, and thus only would need to store a row and not a complete map.
Ahh.. so curves also have caches - but the coordinate "distortion" only applies to the source curves, not the map inputs of the curve ops or curve source, right? I mean I can't see any way to create spatial distortions by applying a curve to an image or controlling curve parameters via image... |
|||||||
Posted: December 21, 2007 10:21 am | ||||||||
Vladimir Golovin
Administrator |
Any such storage would convert the procedural signal into an inherently discrete representation with a lower resolution, which in many cases can kill the image quality. Try to run a Checker through a Noise Distortion, then stick a buffer between the Checker and distorter (as you do here) and compare the results. |
|||||||
Posted: December 21, 2007 12:00 pm | ||||||||
Sphinx.
![]() |
Yep, I know, and if it were the case that you actually did use some sort of buffer, I'd expect that it was a great deal larger than the actual width (say x AA sublevel or something). But its not the case, case closed ![]() Now you mention the buffer snippet - I still haven't received a clear answer on wether you think such a buffering method is ok to promote on the wiki page or not. Telling from what you say above, it sounds like you don't approve the concept.. The example clearly show a difference in rendering speed, but the method is not a generic wonder trick, it has to be applied with careful evaluations of quality etc. If I am to add a section about the method, it will include clear descriptions on when to use it, and when not to. Using the method can make the difference on wether a filter is accepted or rejected (it was the case with my Cell Leather), and in all areas we have to make compromises about quality vs speed, so I don't personally see the big difference, and I think its worth mentioning on the wiki (but as stated several times, I don't want to do that, if you don't officially think it should be promoted). |
|||||||
Posted: December 21, 2007 2:17 pm | ||||||||
Crapadilla
![]() |
I suppose it is similar to the case of the "Channels" technique: not applicable at all times but generally a neat trick to know. You could also turn it into a separate article. --- Crapadilla says: "Damn you, stupid redundant feature requests!" ;) |
|||||||
Posted: December 22, 2007 11:04 am | ||||||||
Kraellin
![]() |
there was one component arrangement i saw in this do's and don'ts that i thought i'd mention, since i've done it myself a few times. it's a blur followed by a sharpen, or vice versa. this is actually a valid combination, sometimes. it's somewhat sloppy doing it that way, but what it's for is to give the user an option to use either sharpen or blur on an image (or a texture, for that matter).
but, like i said, it is somewhat sloppy. so, here's a way to do it such that the two arent being used at the same time: just plug both the blur and sharpen into a switch and use a checkbox. this way you only get one or the other and not both like you can get when you randomize with it the other way. If wishes were horses... there'd be a whole lot of horse crap to clean up!
Craig |
|||||||
Posted: December 22, 2007 12:24 pm | ||||||||
Sphinx.
![]() |
Yeah, however the channel combining trick don't suffer from the same essential "problems" (it do not limit sampling to integer coordinate precision, like the blur do because of the rasterization - well interpolation is actually performed, but thats really not changing the fact). Also I think the channel trick is more than an optimization: it is a very nice way to unite similar processing steps under same roof, it can reduce components used and thus make the filter graph easier to overview and tweak.
Or utilize the principles described in One Blur does it all... and make something like the attached filter, which uses only one high pass ![]() Sharpen _-_ Blur.ffxml |
|||||||
Posted: December 23, 2007 5:22 am | ||||||||
Kraellin
![]() |
yeah, i havent gotten to that part yet ![]() If wishes were horses... there'd be a whole lot of horse crap to clean up!
Craig |
|||||||
Posted: December 23, 2007 10:02 am | ||||||||
Kraellin
![]() |
but that's a cool filter. who came up with the snippet there of using the two linears, a blend and a tone curve? that's the same sort of thing CF&M just used in his perspective frame he just posted in the user gallery forum. looks to be VERY useful!
If wishes were horses... there'd be a whole lot of horse crap to clean up!
Craig |
|||||||
Posted: December 23, 2007 10:39 am | ||||||||
Sphinx.
![]() |
It was just something I put together to show you an alternative solution - sheer coincidence if its a similar setup to what is in other filters ![]() |
|||||||
Posted: December 23, 2007 12:09 pm | ||||||||
Kraellin
![]() |
well, i thank you. that could turn out to be one very useful snippet!
![]() If wishes were horses... there'd be a whole lot of horse crap to clean up!
Craig |
|||||||
Posted: December 23, 2007 9:41 pm | ||||||||
Vladimir Golovin
Administrator |
Well, when I tested it, the results turned out to be far less disastrous than I expected: ![]() |
|||||||
Posted: December 24, 2007 5:59 am | ||||||||
Vladimir Golovin
Administrator |
Note that the jagged edges in the buffered version can be remedied by turning on anti-aliasing for sources of bitmap-based components (Tools > Options > Rendering). However, this can considerably slow the rendering down, thus negating the benefits of buffering.
Here's the filter: Buffering Artifacts.ffxml |
|||||||
Posted: December 24, 2007 6:01 am | ||||||||
CFandM
![]() |
Might have been Uber or Byro where I first seen the linear and a blend..I had been using it for personal filters for stretching curves..Attaching a remap amplitude you can stretch and reverse a curve..Attached is the filter... Stretch Curve.ffxml Stupid things happen to computers for stupid reasons at stupid times! |
|||||||
Posted: December 24, 2007 8:01 am | ||||||||
Kraellin
![]() |
thanks, CF
![]() If wishes were horses... there'd be a whole lot of horse crap to clean up!
Craig |
|||||||
Posted: December 25, 2007 12:44 am | ||||||||
Sphinx.
![]() |
I'd say your example here is a good example on when not to use the buffering method; From the extended description of the buffering filter snippet (its in the comments):
Add to that: High freqeuncy material (fine details) also cover hard edge shifts like what you show - if the edges had a more feathered edge you wouldn't notice much, if any difference, and in many cases you can avoid using the subsampling method for antialiasing by simply adjusting the curve or contrast so the edges are naturally feathered. But for your example there is as I see it no way to get around those rasterization artifacts, and it is a good example on when not to use the method. Even if you bypass the noise distortion, you will see a noticeable difference in the edge smoothness (here the AA for bitmap based components option would help, but like you say, its slower). |
|||||||
Posted: December 26, 2007 6:55 am | ||||||||
Crapadilla
![]() |
I've added two new entries to the article, and expanded on another entry...
![]() High-Pass Vs. Threshold (NEW) [inspired by Carl ![]() Reverse-Engineering Noise Distortion (NEW) Getting The Most Out Of Your Components (expanded) --- Crapadilla says: "Damn you, stupid redundant feature requests!" ;) |
|||||||
Posted: February 17, 2008 11:47 am | ||||||||
Sphinx.
![]() |
Looks good - I played around with the noise distortion myself - found out how to actually extract the two internal perlins used in it (see attached filter). The filter also shows how it is possible to use one single noise distortion to distort several independant sources, which makes it possible to work further on the distorted results without any restrictions, merging or significant performance hit (though it would be faster to simply use two indepedant perlins for a start). Noise Distortion Observations.ffxml |
|||||||
Posted: February 19, 2008 3:15 am | ||||||||
Crapadilla
![]() |
Nice one, Sphinx! Looks like you did it.
You should probably make a snippet out of that... ![]() --- Crapadilla says: "Damn you, stupid redundant feature requests!" ;) |
|||||||
Posted: February 19, 2008 4:23 am | ||||||||
Kraellin
![]() |
fascinating. had never even considered that a noise distortion was made up of two perlins.
If wishes were horses... there'd be a whole lot of horse crap to clean up!
Craig |
|||||||
Posted: February 19, 2008 9:01 am | ||||||||
voldemort |
You do realize that trying to follow you guys is making my brain hurt again
lets all whine for a wine port |
|||||||
Posted: February 19, 2008 10:06 am | ||||||||
Kraellin
![]() |
i gave up long ago, volde. i just chime in with an 'uh huh' and 'oh, i see' every once in a while to make me look good
![]() If wishes were horses... there'd be a whole lot of horse crap to clean up!
Craig |
|||||||
Posted: February 19, 2008 1:53 pm | ||||||||
Carl
![]() |
Shamefully I've not noticed this thread - its excellent
![]() High-Pass Vs. Threshold (NEW) [inspired by Carl] is so great LOL ![]() ![]() ![]() |
|||||||
Posted: February 20, 2008 2:39 am | ||||||||
Crapadilla
![]() |
Yes, this needs some reliable way of getting more exposure. The relevant wiki articles are still somewhat hard to come by, and most technically interesting threads like this one do get buried after a time.
![]() ![]() --- Crapadilla says: "Damn you, stupid redundant feature requests!" ;) |
|||||||
Posted: February 20, 2008 4:20 am | ||||||||
Carl
![]() |
Vlad, this thread has great value for people like me, could it be stickied please, as I had missed it and maybe I'm not alone ![]() |
|||||||
Posted: February 21, 2008 1:02 am | ||||||||
Crapadilla
![]() |
Or we could have a new sticky thread in this forum section which conveniently links to wiki-articles relevant to filter-creation. --- Crapadilla says: "Damn you, stupid redundant feature requests!" ;) |
|||||||
Posted: February 21, 2008 5:25 am | ||||||||
Crapadilla
![]() |
Vlad?
![]() --- Crapadilla says: "Damn you, stupid redundant feature requests!" ;) |
|||||||
Posted: April 8, 2008 6:56 am | ||||||||
Vladimir Golovin
Administrator |
Done.
|
|||||||
Posted: April 8, 2008 8:07 am | ||||||||
Carl
![]() |
||||||||
Posted: April 8, 2008 10:37 am | ||||||||
Crapadilla
![]() |
Excellent!
![]() --- Crapadilla says: "Damn you, stupid redundant feature requests!" ;) |
|||||||
Posted: April 9, 2008 6:59 am | ||||||||
Crapadilla
![]() |
Added a new section on Seamless Tiling. As usual, suggestions and critique are welcome!
![]() ![]() --- Crapadilla says: "Damn you, stupid redundant feature requests!" ;) |
|||||||
Posted: April 13, 2008 4:45 pm | ||||||||
StevieJ
![]() |
Nice work!!!
![]() My only "critique" is that you might have been a tad harsh on those "don't touch the size control" $#@%& stickers..... ![]() ![]() There are many scenarios that require affected components to be disconnected from the global size control......and there is no other way around it.....
![]() Steve
"Buzzards gotta eat...same as worms..." - Clint :) |
|||||||
Posted: April 13, 2008 7:39 pm | ||||||||
KGtheway2B
![]() |
Crapadilla: You've done this community a really great service with these wiki updates. I personally never wanted to even dive into filtermaking but after reading that really helpful section felt inspired to experiment.
Props +1 ![]() |
|||||||
Posted: April 13, 2008 11:11 pm | ||||||||
jffe |
----Plus 2. On the rare occasion that I get technical enough to look up some FF stuff ha-ha, Crapa's almost always covered that territory at least to some degree with a few wise words, and/or at least a solid fact or two. ![]() ![]() jffe Filter Forger |
|||||||
Posted: April 14, 2008 12:24 am | ||||||||
Carl
![]() |
+3
![]() |
|||||||
Posted: April 14, 2008 4:25 am | ||||||||
Crapadilla
![]() |
Excellent. I was hoping the wiki would serve to inspire, and I'm glad to read that the articles are being appreciated (even though I may be stepping on a few stickers ermmm... neckties)!
![]() ![]() Originally I was a bit hesitant to set up an article clarifying the more 'obvious' pitfalls of filter-making (which we've all had to suffer through), simply because it might have appeared trivial to the more experienced authors. However, in the process of writing up entries I realized that many of the topics are not as trivial or obvious as I thought (and I even learned a thing or two). In my experience new authors quickly jump to creating filters without familiarizing themselves with some of the more obscure technicalities of FF, resulting in - let's face it - a flood of filters that fail to live up to their full potential. Hence it is my conviction that providing new authors with a somewhat smoother path through the harsh realities of 'RTFM n00b' ![]() ![]() --- Crapadilla says: "Damn you, stupid redundant feature requests!" ;) |
|||||||
Posted: April 14, 2008 7:05 am | ||||||||
StevieJ
![]() |
LOL..... ![]() ![]()
![]() ![]() ![]() ***swooooosh.....Razor of Occam lops off StevieJ's head*** ![]() Steve
"Buzzards gotta eat...same as worms..." - Clint :) |
|||||||
Posted: April 14, 2008 10:46 am | ||||||||
Crapadilla
![]() |
Nope, as I'm planning to use my sock puppet accounts to that effect! ![]() ![]()
That would be a very appropriate new signature for you! Although, I'd probably go with ssswishhh-kthunk! ![]() ![]() --- Crapadilla says: "Damn you, stupid redundant feature requests!" ;) |
|||||||
Posted: April 14, 2008 12:43 pm | ||||||||
StevieJ
![]() |
I'm sure Vlad and the FF team would agree.....
![]() ![]() Steve
"Buzzards gotta eat...same as worms..." - Clint :) |
|||||||
Posted: April 14, 2008 12:51 pm | ||||||||
Carl
![]() |
Probly a more hollow sound with an echo ![]() ![]() |
|||||||
Posted: April 15, 2008 2:36 am |
Filter Forge has a thriving, vibrant, knowledgeable user community. Feel free to join us and have fun!
33,711 Registered Users
+18 new in 30 days!
153,533 Posts
+38 new in 30 days!
15,348 Topics
+73 new in year!
16 unregistered users.