YOUR ACCOUNT

Messages 1 - 45 of 184
First | Prev. | 1 2 3 4 5 | Next | Last 
Login or Register to post new topics or replies
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
I just set up a new wiki article (and provided the first entries). Comments and contributions are welcome! smile:D

The DOs and DON'Ts of Filter Construction
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Vladimir Golovin
Administrator
Posts: 3446
Filters: 55
+1024 on the Perlin-into-Blur thing.

My only suggested improvement would be to type it in HUGE BLINKING RED LETTERS. Also, some irritating sound would be nice, something like the NAVY alarm smile:D
  Details E-Mail
Sjeiti
sock puppet

Posts: 722
Filters: 71
Let's hope HTML 5 will have <blink /> again smile:-p
  Details E-Mail
StevieJ
Designer/Artist

Posts: 11264
Filters: 163
Dilla, that is excellent!!! Nice work!!! smile:)
Steve

"Buzzards gotta eat...same as worms..." - Clint :)
  Details E-Mail
Conniekat8
Filtereurotic
Posts: 351
Filters: 3
oooh, very handy information, especially for us noobs!
THANK YOU!
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
Quote
Vladimir Golovin wrote:
My only suggested improvement would be to type it in HUGE BLINKING RED LETTERS.


If anyone could assist in wiki markup editing to this end, I'd be grateful. smile;)
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
Quote
StevieJ wrote:
Dilla, that is excellent!!! Nice work!!!

Quote
Conniekat8 wrote:
oooh, very handy information, especially for us noobs! THANK YOU!


I'm glad you appreciate it, and I hope to add more items to the article as they cross my mind! smile;)

As I stated above, feel free to contribute, all ye who feel like contributing!
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
StevieJ
Designer/Artist

Posts: 11264
Filters: 163
Quote
Crapadilla wrote:
feel free to contribute, all ye who feel like contributing!

Are you sure you want me involved in this??? You might have to do alot of editting..... smile:| smile;) smile:D LOL....

I'm holding out for my first Editor's Pick before I go to the next level of contributing..... smile:devil: ......J/K smile;) smile:D LOL....
Steve

"Buzzards gotta eat...same as worms..." - Clint :)
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
Quote
StevieJ wrote:
Are you sure you want me involved in this??? You might have to do alot of editting....


If you have a meaningful item to contribute, then yes - by all means - please go ahead! smile:)
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Sphinx.
Filter Optimizer

Posts: 1750
Filters: 39
looks good - the channel trick is something I often use, helps alot not only to speed up the rendering, but also to keep the memory usage down (by limiting the number of components). For example if you are using bitmap based components to process grayscale sources, then you can process 3-4 sources seperately with one component (high pass ignores/bypasses alpha, so its only 3, RGB).

One thing.. in the stuff about Noise and Blur, it does look like a general statement - "never fed your noises to a blur" alike - but as I recently showed, it can speed up the rendering dramatically - specially when worleys are used on a height tree or get distributed out to many post processing branches that breaks with the single sample cache system (like offsets etc).

Ofcourse its a special case where the actual purpose not is smoothening, but rather buffering. But if the blur is there in first place to serve as buffer, and you later on figures that it actually looks good with a higher radius, well then you have a blur avail. at no expense since it already sits there for another purpose.. I wouldn't be so angry at those blurs smile:D (Just so you know.. I'm not opposing the motives here.. I fully agree on the overall point in it .. just adding in a little perspective here)
  Details E-Mail
StevieJ
Designer/Artist

Posts: 11264
Filters: 163
Well, I wouldn't on this subject matter because I'm just a novice compared to your knowledge of it.....but I will help out in other areas.....if I feel that I almost know what I'm talking about..... smile;) smile:D

Right now, I'm finishing up a series of B&W photo filters with different types of soft lens effects......and then, ***I can't believe that I'm going to say this smile:cry: *** I'm actually going to start submitting some texture/theme filters (....and yes, simple results with no lighting smile:D ).....in a desperate effort to get that elusive first Editor's Pick..... smile;) smile:D LOL.....

It's extremely nice of you to do this work for FF.....in addition to all the other things you have done here.....which I've certainly benefitted from......so thanks!!! smile:) smile:) smile:)
Steve

"Buzzards gotta eat...same as worms..." - Clint :)
  Details E-Mail
Mousewrites
Not life size.

Posts: 192
Filters: 20
Ooooo. Thank you muchly. This will be lots of help.
  Details E-Mail
Mousewrites
Not life size.

Posts: 192
Filters: 20
::Reads the wiki::

::Reads it again::

::Feels like an idiot about 5 times::

  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
Quote
Sphinx. wrote:
One thing.. in the stuff about Noise and Blur, it does look like a general statement - "never fed your noises to a blur" alike - but as I recently showed, it can speed up the rendering dramatically - specially when worleys are used on a height tree or get distributed out to many post processing branches that breaks with the single sample cache system (like offsets etc).


Sphinx,

would you be willing to supply a short paragraph about this 'caching' behaviour to complement the perspective on blur components that I gave?

Quote
Sphinx. wrote:
I wouldn't be so angry at those blurs Big grin (Just so you know.. I'm not opposing the motives here.. I fully agree on the overall point in it .. just adding in a little perspective here)


Actually I like blurs very much, and I use them often.

But! With blur components (and the other the bitmap-based ones) you have to know exactly WHERE and WHEN to use them, or they do more harm than good. Consequently, it is also very beneficial to know when and how you can do WITHOUT them. smile;)
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Sjeiti
sock puppet

Posts: 722
Filters: 71
I was thinking of contributing something about the height input on surface result but I'm not sure if most people will agree with me on this:

When I assemble a gray scale image for height I make sure the darkest pixels approach black and the lightest pixels approach white, and afterward correct the height using surface height from the lighting tab.
Now of course you don't have to do this, you can make a height map that is almost even gray and still have a great looking output. But I can't help feeling these gray height maps are wasting information. When you have a 0-255 range why not use it? It is more accurate, especially when you intend to use the bump map output for 3D.
  Details E-Mail
Kraellin
Kraellin

Posts: 12749
Filters: 99
one might also mention that blurs can be used with perlins in certain circumstances, like feeding blurred results INTO perlin noise or backgrounds, AND feeding blurred results into the perlin controls themselves. when you take into account how, in your noise lab, you utilize a number of the perlin control slots with other things, those controls often cant blur as you state in the do's and donts. so, a separate blur is sometimes necessary there, also... i think.

sorry, everyone pokes their two cents in AFTER someone makes some excellent points and tutorial helps. and mention shld be made of the ORIGINAL work you've done here, dilla. excellent stuff! so, forgive my mods/two cents, please.
If wishes were horses... there'd be a whole lot of horse crap to clean up!

Craig
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
Quote
Sjeiti wrote:
But I can't help feeling these gray height maps are wasting information. When you have a 0-255 range why not use it? It is more accurate, especially when you intend to use the bump map output for 3D.


Yes, exactly! I perfectly agree. This would be a good one to add.
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Sphinx.
Filter Optimizer

Posts: 1750
Filters: 39
Quote
Crapadilla wrote:
would you be willing to supply a short paragraph about this 'caching' behaviour to complement the perspective on blur components that I gave?


Well, I would like to hear an "official" statement from Vlad about the buffering method, because it essentially opposes the procedural sampling concept (in that it forces a rasterization of the blur input, and thereby prevents further real subsampling) - I can understand why that might not be considered good practice, and if that is the conception, it should not be promoted. Then again it could just be a "novel" unrelated method for which all the blur/bitmap-based component lynching seen here and there don't apply smile:D

However I think the performance gain shown in the snippet argues for it self, and what I really should do is to add a section to the optimization section of the wiki, which we then could add a small note about in the Noise and Blur text (e.g. "This ofcourse don't apply for cases where blurs are used for buffering mechanisms" or something). By the way.. today I played with the method for buffering large curve "systems".. and it works very well there too, and the side effects are perhaps even less visible here (some of the curve components are quite heavy performancewise, specially when controlled by map inputs)

Quote
Sjeiti wrote:
But I can't help feeling these gray height maps are wasting information. When you have a 0-255 range why not use it?


I'm not sure I agree here. FF does range checking and clamping just for about every component output (e.g. if output > 1 then output = 1), so there is a good reason to stay in "safe" mid area ranges to prevent things from getting overblown (resulting in flattened heightmap areas). Since the internal precision level is way higher than 8 bits per channel, it is not a problem at this point. The problem may arise when the user choose to export to an 8 bit per channel format, and that is, I think, the area where the guiding effort should be put. If users want to ensure full exploitation of a given target bit range, they should render the maps to a HDR format, and do the appropiate adjustments afterwards in relation to the target bit depth. It would also make a good feature if FF had an option to maximize heightmaps for a given bitdepth (most relevant 8 bit).
  Details E-Mail
Sjeiti
sock puppet

Posts: 722
Filters: 71
Well I always use the 'threshold trick' to prevent clamping. I'm not saying high and low should be within a three pixel range of white and black. I'm just saying that almost evenly gray height maps is a waste of ones and zeros. I'll just add the height map point to the page, refer to the danger of clamping, explain the 'threshold trick', and also add that you don't have to do this to create a good filter.

As for HDR, I know nothing about that, so feel free to add that.

(OT: hey wow I just learned Phong is actually a person, I always thought it had something to do with plastic)
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
Well, personally, I prefer my height maps sprawling fully between the 0..1 range; call it an old 8-bit habit, if you will, but I think it feels somewhat clean and tidy this way. It is true though that - with the advent of HDR formats and floating point precision - this becomes somewhat less of an issue.
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Sphinx.
Filter Optimizer

Posts: 1750
Filters: 39
I just took a closer look on how the bump map and normal are rendered - I actually thought that the Surface Height slider also affected the rendered bump map (that flattening could occur even if the height input is valid with high Surface Height settings). It is not the case, only the normal map is affected by that slider.
With that knowledge I agree.. the heightmap input should be as close to full range as possible - how does that "threshold trick" work? Is it simply a fixed "safe" distance from the range limits, black and white?

I really think that the histostretch ought to be handled by FF and not our guestimate of a "universal" stretch (which can only be safe if the heightmap contrast is not controlled by any user controls directly or indirectly). When FF is set to render a bump map, it should do this to an intermediate hdr map, search for min/max values and adjust the levels accordingly to those when saving the bumpmap to 8 bit formats.
Perhaps a good feature request?


Quote
The renderer has an optimization called "sample cache" that can save a significant amount of rendering time in situations when a single component has multiple outbound connections. Note that this speedup will not occur when using duplicates instead of connections.


I wonder how this works when some of the outbound connections end up in offsets, refractions or noise distortions at some point, and others don't. Consider the following case: we have a perlin noise with two outbound connections one that goes directly to the reflectivity input and one that goes to an offset which then goes to the surface input:

[perlin]----------------->[surface result (reflect.)]
. . . . . |
. . . . . |---->[offset]--->[surface result (surface)]

the offset alters the coordinate passed down to the perlin when rendered (i.e. it will fetch samples from an offset location).
Will this "thrash" the sample cache, because the last fetched sample constantly shifts because of the coordinate changing?
  Details E-Mail
Sjeiti
sock puppet

Posts: 722
Filters: 71
The threshold trick...
In the image I use levels to alter the stones... I've attached two threshold, one 100, one 0, black and white. When you adjust the the levels both thresholds should remain perfectly black and white. So in this image I've set the white point too far.

  Details E-Mail
Sphinx.
Filter Optimizer

Posts: 1750
Filters: 39
ahh. I see.. its a guide for adjusting to maximum contrast. Nice!

I thought you had some sort of automatic solution (which is not possible without knowing the global min and max levels, thats why FF should handle it in a post render step).
  Details E-Mail
Sjeiti
sock puppet

Posts: 722
Filters: 71
Damn Wiki... how do you apply breaks? <br/>
  Details E-Mail
Sjeiti
sock puppet

Posts: 722
Filters: 71
Hey wow... I love that 'Channels trick'.
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
Quote
Sphinx. wrote:
I wonder how this works when some of the outbound connections end up in offsets, refractions or noise distortions at some point, and others don't.


As I understand it, the sample cache for a component with multiple outbound connections is 'located' at its output, and each component with multiple outputs has its very own sample cache. The component gets rendered once and the result is then cached for other components to quickly 'look up' as needed.
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Sphinx.
Filter Optimizer

Posts: 1750
Filters: 39
Quote
Crapadilla wrote:
As I understand it, the sample cache for a component with multiple outbound connections is 'located' at its output, and each component with multiple outputs has its very own sample cache. The component gets rendered once and the result is then cached for other components to quickly 'look up' as needed.


Yeah, but doesn't that imply that the cache is invalid (and thus a new rendering is needed) if we have different offsets for the outbound connections?

Lets consider a simple hypothetic rendering case for that simple setup I mentioned (changed a bit here):

Quote

[perlin]----------------->[surface result (surface)]
. . . . . |
. . . . . |---->[offset]--->[surface result (reflect.)]


We are rendering a 2x2 pixel texture, and the result component starts rendering at position (0,0), meaning that it will request a sample from this position:

1. result[surface] passes (0,0) to perlin, which returns this sample and caches it for future (0,0) requests

2. result[reflect.] passes (0,0) to offset, which adds its offset, lets say (+1,+1), to the coordinate it recieved, resulting in (1, 1)

2.1 offset passes (1, 1) to the perlin to get a sample from this new offset coordinate

2.2 perlin checks if the request is in its sample cache (if current coordiate = previous coordinate then return cached sample), but since last coordinate was (0, 0) and new coordinate (due to the offset) is (1, 1), the cache is invalid and a new sample rendering is needed

See what I mean? If this is how the sample cache stuff works, hooking up many branches to the same leaf component will only be faster when the coordinates remain unaltered, so in there is a reason not to do so in many situations.

The question is which components changes the coordinates? I think that is Offset, Noise Distortion, Refraction, Components in Jumble Fill Mode.. is there others?
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
Quote
Sphinx. wrote:
Yeah, but doesn't that imply that the cache is invalid (and thus a new rendering is needed) if we have different offsets for the outbound connections?


I don't think so. If you connect a 'sample cached' perlin noise into three different offsets, the same sample cache is read by all three offsets, and SUBSEQUENTLY each offset calculates its own coordinate transformations using the cache as its source.
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Sphinx.
Filter Optimizer

Posts: 1750
Filters: 39
Quote
Crapadilla wrote:
I don't think so. If you connect a 'sample cached' perlin noise into three different offsets, the same sample cache is read by all three offsets, and SUBSEQUENTLY each offset calculates its own coordinate transformations using the cache as its source.


Hmm, but that implies that there is more than one cached sample - thats not how I understood the concept - I'll do some testing an reading smile;)
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
Quote
Sphinx. wrote:
Hmm, but that implies that there is more than one cached sample


Yes, the way I understand it, each component that has multiple outbound connections maintains its own sample cache.

Continuing the example of the perlin and three offsets in my post above, if you were to connect one of those offsets to three other components in the filter tree, this offset component would in turn be enabled for sample caching and build its very own cache. I presume that any given component's sample cache remains valid until the components' source input or its parameter values change.

This means that depending on where the sample cached component is located in the filter tree, tweaking filter controls may force a whole cascade of caches to be rebuilt.
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Sphinx.
Filter Optimizer

Posts: 1750
Filters: 39
Quote
Vladimir Golovin wrote:
The sample cache is located at the output, not at the inputs of the component. Every component stores the coordinates and the value of the last calculated sample, and if the next sample has the same coordinates the component returns the cached value instead of evaluating the sample.
(source)

I read this is *one* single sample is cached in the output.

Quote
Crapadilla wrote:
Yes, the way I understand it, each component that has multiple outbound connections maintains its own sample cache.


I don't think the fact that there are multiple outbound connections over just one affects wether sample caching is active. Seems like its a generic mechanism: last coordinate and sample is cached at the output, and if next sample request has the same coordinate, it will return the cached sample, and implicitly if the coordinate doesn't match, a new sample will be calculated and saved as the new cached sample..
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
Quote
Sphinx. wrote:
Seems like its a generic mechanism:


That is a question for Vlad or a programmer to answer. Sadly, there is not much info on FF's sample architecture available, so I'm just deducing how all this might work from the help file, Vlad's postings, etc. ... smile;)
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Sphinx.
Filter Optimizer

Posts: 1750
Filters: 39
Quote
Crapadilla wrote:
That is a question for Vlad or a programmer to answer. Sadly, there is not much info on FF's sample architecture available, so I'm just deducing how all this might work from the help file, Vlad's postings, etc. ...


LOL, yeah, same here smile:D

Ok check out this test filter.. its not a very large filter graph, but it still shows a significant difference. The filter has one option "Duplicated Perlins", which if checked uses two seperate perlin components on each "coordinate branch" - when the checkbox is changed I made it force a variation and color shift too so its easier to see the difference.. on my single core nutcracker, the duplicated chain is faster.. how does it perform on your CPU octopus? smile:D

(edit - updated file, this one shows more significant difference)

Sample Cache Test 2.ffxml
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
I've added some general guidelines for contributors...

*** nudge nudge Sjeiti nudge *** smile;) smile:D

And it seems the article is growing! smile:)
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
Quote
Sphinx. wrote:
how does it perform on your CPU octopus?


I'm currently not in the studio, so I only have an old athlon 1,0 GHz snail at my disposal. No performance testing until monday. smile;)
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Sjeiti
sock puppet

Posts: 722
Filters: 71
Ok... consider my contribution guided

Maybe a good idea to put these general 'guidelines for contributors' on the main page. Add to it a link to the Wiki help.
A lot of the people on the fora might feel a bit reluctant to contribute to the Wiki (the FF Wiki was my first too) so some small pointers on how a Wiki works might convince them it's not all that hard.
  Details E-Mail
Sphinx.
Filter Optimizer

Posts: 1750
Filters: 39
Quote
Crapadilla wrote:
I'm currently not in the studio, so I only have an old athlon 1,0 GHz snail at my disposal. No performance testing until monday.


Ok.. You should check it out anyways, as it seems to verify that we're dealing with single sample cache - the example shows that using two seperate perlins with rather expensive settings is faster than using just one perlin with those settings!

It will be interesting to see if this holds true for multicore systems too - anyone out there with a dual/quad core is more than welcome to test if which of the modes render faster, "red" or "green" (duplicated perlins).
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
Quote
Sjeiti wrote:
Ok... consider my contribution guided


Great! And how about adding an image? smile;) smile:D

Quote
Sjeiti wrote:
Maybe a good idea to put these general 'guidelines for contributors' on the main page. Add to it a link to the Wiki help.


Well, people have different opinions on how to design and structure things, so currently I feel it is sufficient if the originator of an article provides some guidelines.
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Sjeiti
sock puppet

Posts: 722
Filters: 71
mumble mumble adding image.. the things I do for humanity


One thing I never quite understood about FF's Perlin noise:
The Perlin noise I know has octaves and persistence. Octaves being the number of calculated noise maps, each of which has a doubled frequency (1,2,4,8...). And persistence (or falloff) is the amount in which these maps are blended with each other (persistence of .5 means 1*map1+.5*map2+.25*map3+.125*map4...).
If FF's roughness and detail relates to octaves and persistence, then how can detail increase render time?
They must have found some other exciting way to render Perlin noise, otherwise I really don't get it.
  Details E-Mail
Sphinx.
Filter Optimizer

Posts: 1750
Filters: 39
as I see it roughness defines how the different octaves are mixed, and details control how many octaves are in play, but moreover it controls the contribution of the last added octave (given some sort of fractional range). What I'd like to know is how many octaves are in play when Details is = 100...
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
Quote
Sphinx. wrote:
What I'd like to know is how many octaves are in play when Details is = 100...


It's eleven according to the help file... smile;)
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
The article has been updated significantly...

Time to get some close-eye! smile:)
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Sjeiti
sock puppet

Posts: 722
Filters: 71
Ah 'help file' never thought of that.

So roughness is persistence and details is octaves. Oh wow, they even explain why roughness has can influence speed (which normally wouldn't happen).
And how in details floating points are used while octaves are integers.

Good help file.

Maybe a good thing to refer to it from the wiki more often. For instance: each time the Perlin noise component is mentioned link to it.
  Details E-Mail
Crapadilla
lvl 52 Filter Weaver and Official "Filter Forge Seer"

Posts: 4365
Filters: 65
Quote
Sjeiti wrote:
Maybe a good thing to refer to it from the wiki more often. For instance: each time the Perlin noise component is mentioned link to it.


Yes, good idea!
--- Crapadilla says: "Damn you, stupid redundant feature requests!" ;)
  Details E-Mail
Sphinx.
Filter Optimizer

Posts: 1750
Filters: 39
Added some info on how to get Sharpen and High Passes from a blur (and more..).. its my first real wiki edit, is it allright?

One Blur does it all
  Details E-Mail

Messages 1 - 45 of 184
First | Prev. | 1 2 3 4 5 | Next | Last 

Join Our Community!

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
+31 new in 30 days!

15,348 Topics
+73 new in year!

Create an Account

Online Users Last minute:

27 unregistered users.