<?xml version="1.0" encoding="utf-8"?>
				<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"
				 xmlns:annotate="http://purl.org/rss/1.0/modules/annotate/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
			    <channel> 
			    <generator>Filter Forge Site</generator> 
			    <title>www.filterforge.com - Scripting</title> 
			    <description></description> 
			    <link>http://www.filterforge.com/forum/list.php?FID=18</link> 
			    <language>en</language> 
			    <webMaster>support@filterforge.com</webMaster> 
			    <copyright>(C) 2006</copyright> 
			    <pubDate>Sat, 18 May 2013 22:09:08 -0400</pubDate> 
			    <lastBuildDate>Sat, 18 May 2013 22:09:08 -0400</lastBuildDate> 
			    <item><title>Scripting: Pipe Component</title> 
		             <dc:creator>CorvusCroax</dc:creator> 
		             <category></category> 
		             <pubDate>Sat, 16 Mar 2013 07:54:10 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8010</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8010</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;CorvusCroax&lt;/b&gt;, &lt;em&gt;Sat, 11 Dec 2010 12:54:25 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hey: know what I really want for FF? A 'make a bunch of pipes' node, based on tiles. &lt;br /&gt;&lt;br /&gt;Was thinking that it could just have 4 types of tiles: &lt;br /&gt;1 straight piece 'I'&lt;br /&gt;2 elbow 'L'&lt;br /&gt;3 3-way joint 'T'&lt;br /&gt;4 4-way joint  '+'&lt;br /&gt;&lt;br /&gt;The trick would be how to make them stick together linearly, and not just random scattering. &lt;br /&gt;&lt;br /&gt;Has anyone tried to make such a thing using scripting? &lt;br /&gt;&lt;br /&gt;-CCX&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 14 Dec 2010 08:17:45 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hmm.. interesting challenge.. IIRC ubersev made something like this once (for FF1), it must be somewhere on the forum (called Pipes or Pipe IIRC)&lt;br /&gt;&lt;br /&gt;I guess the trick is to figure out neighbour compatibility. For a given cell, you look at what the neighbour cells support (should give you a set of tile types) and then pick a random...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronviers&lt;/b&gt;, &lt;em&gt;Wed, 15 Dec 2010 04:51:54 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;CorvusCroax wrote:&lt;/b&gt;&lt;br /&gt;'make a bunch of pipes'&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;On the off-chance that you use maya, I have some python scripts that make tubes. You can find it here: &lt;a href='http://ronviers.blogspot.com/' target='_blank' rel='nofollow'&gt;http://ronviers.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you do use maya:&lt;br /&gt;Paste these scripts into your script editor or use them as functions. You know the routine, grad the control and scrub the atters. Also, there is a friendly gui under the 'extra attributes' section of the control handle attributes. &lt;br /&gt;Note: start with the coil script because it loads the python modules.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 15 Dec 2010 05:27:47 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Uh that challenge required some thinking :) I have a solution now, but I have a feeling it can be done simpler..&lt;br /&gt;&lt;br /&gt;I'll post some outputs.. &lt;br /&gt;&lt;br /&gt;straight pieces:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 15 Dec 2010 05:28:07 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;rounded corners&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 15 Dec 2010 05:28:33 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Circular&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 15 Dec 2010 05:30:39 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;The script is quite fast, but there are some issues like seamless tiling and size slider adaption I need to solve before I publish it.. also I'd like to give the overall design some thought.. there is too many lines for such a simple rendering ;)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;CorvusCroax&lt;/b&gt;, &lt;em&gt;Wed, 15 Dec 2010 20:05:46 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hey hey! That's great Sphinx! &lt;br /&gt;&lt;br /&gt;I was thinking that it might be good to add some kind of range for how many straight pieces one gets in a row. (Maybe a high value and a low value) That might help with having lots of re-entrant loops, like on the circular example above. &lt;br /&gt;&lt;br /&gt;ie more longer runs:     ┌──────┤  └───────┘&lt;br /&gt;&lt;br /&gt;and less shorter loops: ┌─┤┌─┌─┤ ┌┐└┘┼─&lt;br /&gt;&lt;br /&gt;(hope that makes sense)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 16 Dec 2010 03:22:24 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Yes, I agree. I thought about making some sort of chance control (like in the bomber) for each piece type.. but I need to redesign things to make that work (i.e. store all compatible parts for a cell and select the actual one based on chance). &lt;br /&gt;Btw - the three images above are all the same pipeline scheme, the circular + piece is just not connected in the center.. &lt;br /&gt;&lt;br /&gt;One main problem about the current design is that it relies on a pre-calculated cell grid, with info about the current piece type. This creates a repeated pipeline design (not seamless atm, but that is easy to fix). I'd like to find a generic solution so you can render unique pipeline design &quot;endlessly&quot;.. not sure if it is possible, since pieces are picked in a relative manner:&lt;br /&gt;&lt;br /&gt;Consider a 4x4 grid&lt;br /&gt;First I pick a random piece and put that at 1,1&lt;br /&gt;[CODE][+][ ][ ][ ]&lt;br /&gt;[ ][ ][ ][ ]&lt;br /&gt;[ ][ ][ ][ ]&lt;br /&gt;[ ][ ][ ][ ][/CODE]&lt;br /&gt;&lt;br /&gt;then I populate the rest of the first row with compatible Right = Left facings:&lt;br /&gt;&lt;br /&gt;[CODE][+][-][┐][┌]&lt;br /&gt;[ ][ ][ ][ ]&lt;br /&gt;[ ][ ][ ][ ]&lt;br /&gt;[ ][ ][ ][ ][/CODE]&lt;br /&gt;&lt;br /&gt;after that I populate the first column (Bottom = Top):&lt;br /&gt;&lt;br /&gt;[CODE][+][-][┐][┌]&lt;br /&gt;[┤][ ][ ][ ]&lt;br /&gt;[┘][ ][ ][ ]&lt;br /&gt;[┌][ ][ ][ ][/CODE]&lt;br /&gt;&lt;br /&gt;and finally I fill out the rest with a double compatibility check (R = L and B = T)&lt;br /&gt;&lt;br /&gt;[CODE][+][-][┐][┌]&lt;br /&gt;[┤][ ][|][└]&lt;br /&gt;[┘][┌][┘][ ]&lt;br /&gt;[┌][┤][ ][┌][/CODE]&lt;br /&gt;&lt;br /&gt;note: i have a fifth piece type: &quot;no piece&quot;&lt;br /&gt;&lt;br /&gt;It is this part of the script I don't fancy too much.. I'd like to be able to look up a piece anywhere in a &quot;endless&quot; grid..&lt;br /&gt;&lt;br /&gt;EDIT: uh.. view these with monospaced font.. FF when do you add code formatting blocks in the forum? Just plain monospaced font formatting would do it...&lt;br /&gt;&lt;br /&gt;EDIT2: Thanks GMM!!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 19 Dec 2010 10:36:48 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Alright, I made it work without a precalculated layout (meaning lookup with *any* coordinates, no matter how big a &quot;grid&quot;). The logic used here &quot;revealed&quot; the need for a new piece type: dead ends.&lt;br /&gt;&lt;br /&gt;Here is how that looks:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Indigo Ray&lt;/b&gt;, &lt;em&gt;Sun, 19 Dec 2010 15:58:48 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Looks like circuit board on that last one. I'd like to see more of this pipe-work. 8)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;CFandM&lt;/b&gt;, &lt;em&gt;Fri, 24 Dec 2010 04:49:35 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Indigo Ray wrote:&lt;/b&gt;&lt;br /&gt;Looks like circuit board on that last one&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;+1 on that....Its looking very cool Sphinx..&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;CorvusCroax&lt;/b&gt;, &lt;em&gt;Fri, 24 Dec 2010 12:00:13 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;ooo... nice Sphinx!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Mon, 27 Dec 2010 06:18:55 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Had a go at this &quot;Holiday challenge,&quot; but &lt;i&gt;without&lt;/i&gt; scripting it...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Mon, 27 Dec 2010 06:21:36 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;It's mostly tiles with some binary logic as to whether there should be a connection between the tiles or not.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Mon, 27 Dec 2010 06:25:39 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;The only controls are Repeat and Vertical/Horizontal balance. The result kinda seems closer to a maze than pipes since I didn't bother to round the corners...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 27 Dec 2010 08:25:52 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Cool Stuff ThreeDee! &lt;br /&gt;&lt;br /&gt;Here is Ubersev´s old pipe filter - I really like the logical part of that one, very nice thinking!&lt;br /&gt;&lt;br /&gt;It supports some of the connector types mentioned earlier&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 27 Dec 2010 08:28:39 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;And here is my old attempt, which is very simple, but also create some unwanted dots. I just updated it with a quick dot removal hack..&lt;br /&gt;&lt;br /&gt;The cool thing about this one is that it is very easy to &quot;inject&quot; custom shapes (I just used the randomizer in the Tiles components here, it could be any shape)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Tue, 28 Dec 2010 05:58:25 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;Here is Ubersev´s old pipe filter - I really like the logical part of that one, very nice thinking! &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Wow, that's inventive.&lt;br /&gt;&lt;br /&gt;If one were to pile a couple of these on top of each other it would be just about perfect. Maybe there is a simple way to avoid those circular loops.&lt;br /&gt;&lt;br /&gt;And with bombers one could easily do custom shapes for the pipe elements.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Tue, 28 Dec 2010 07:44:42 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Getting further and further away from the title, here are some non-script pipes with block noise...&lt;/p&gt;<script>
if (phpVars == null || typeof(phpVars) != "object")
{
	var phpVars = {
		'ADMIN_THEME_ID': '.default',
		'titlePrefix': 'Filter Forge - '};
}

window.onForumImageLoad = function(oImg, w, h, family, oImg1)
{
	if (typeof oImg == "string")
	{
		oImg = document.getElementById(oImg);
	}
	if (oImg == null || typeof oImg != "object")
	{
		return false;
	}
	
	family = (family && family.length > 0 ? family : "");
    var img = {'width' : 0, 'height' : 0};
    
	if (oImg.naturalWidth)
	{
		img['width'] = oImg.naturalWidth;
		img['height'] = oImg.naturalHeight;
	}
	else
	{
		img['width'] = oImg.width;
		img['height'] = oImg.height;
	}
	var k = 1;
	w = parseInt(w);
	w = (w > 0 ? w : 100);
	h = parseInt(h);
	
	
	if (h <= 0 && img['width'] > w)
	{
    	k = w/img['width'];
	}
	else if (h > 0 && (img['width'] > w || h > img['height']))
	{
		if (img['width'] <= 0)
			k = h/img['height'];
		else
			k = Math.min(w/img['width'], h/img['height']);
	}
	
	if (0 < k && k < 1)
	{
        oImg.style.cursor = 'pointer';
        oImg.onclick = new Function("onForumImageClick(this, '" + img['width'] + "', '" + img['height'] + "', '" + family +"')");
        if (h > 0)
        {
	        var width = parseInt(img['width'] * k);
	        var height = parseInt(img['height'] * k);
	        oImg.width = width;
	        oImg.height = height;
        }
	}
}
window.onForumImageClick = function(oImg, w, h, family)
{
	if (oImg == null || typeof oImg != "object")
		return false;

	w = (w <= 0 ? 100 : w);
	h = (h <= 0 ? 100 : h);
	family = (family && family.length > 0 ? family : "");
	var div = null;
	var id = 'div_image' + (family.length > 0 ? family : oImg.id);
	if (family.length > 0)
	{
		div = document.getElementById(id);
		if (div != null && typeof div == "object")
			div.parentNode.removeChild(div);
	}
	div = document.createElement('div');
	div.id = id;
	div.className = 'forum-popup-image';
	div.style.position = 'absolute';
	div.style.width = w + 'px';
	div.style.height = h + 'px';
	div.style.zIndex = 80;
	div.onclick = function(){
		jsFloatDiv.Close(this);
		this.parentNode.removeChild(this);};
	
	var pos = {};
	var res = jsUtils.GetRealPos(oImg);
	var win = jsUtils.GetWindowScrollPos();
	var win_size = jsUtils.GetWindowInnerSize();
	var img = new Image();
	var div1 = document.createElement('div');
	
	pos['top'] = parseInt(res['top'] + oImg.offsetHeight/2 - h/2);
	if ((parseInt(pos['top']) + parseInt(h)) > (win['scrollTop'] + win_size['innerHeight']))
	{
		pos['top'] = (win['scrollTop'] + win_size['innerHeight'] - h - 10);
	}
	if (pos['top'] <= win['scrollTop'])
	{
		pos['top'] = win['scrollTop'] + 10;
	}
	
	pos['left'] = parseInt(res['left'] + oImg.offsetWidth/2 - w/2);
	pos['left'] = (pos['left'] <= 0 ? 10 : pos['left']);
	
	div1.style.left = (w - 14) + "px";
	div1.style.top = "0px";
	
	div1.className = 'empty';
	div1.style.zIndex = 82;
	div1.style.position = 'absolute';
	div1.style
	div.appendChild(div1);
	
	img.width = w;
	img.height = h;
	img.style.cursor = 'pointer';
	img.src = oImg.src;
	
	div.appendChild(img);
	document.body.appendChild(div);
	jsFloatDiv.Show(div, pos['left'], pos['top']);
}

function onForumImagesLoad()
{
	if (oForumForm && oForumForm['images_for_resize'] && oForumForm['images_for_resize'].length > 0)
	{
		for (var ii = 0; ii < oForumForm['images_for_resize'].length; ii++)
		{
			var img = document.getElementById(oForumForm['images_for_resize'][ii]);
			if (img != 'null' && img && img.tagName == "IMG")
			{
				img.onload();
			}
		}
	}
}
if (jsUtils.IsIE())
{
	jsUtils.addEvent(window, "load", onForumImagesLoad);
}
if (typeof oForumForm != "object")
	var oForumForm = {};
oForumForm['images_for_resize'] = [];
</script>
<script>oForumForm['images_for_resize'].push('popup_1096670353');</script>
<script>oForumForm['images_for_resize'].push('popup_263797548');</script>
<script>oForumForm['images_for_resize'].push('popup_1778578646');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Fri, 15 Mar 2013 12:02:09 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;b&gt;Please, Sphinx would be possible to know how you have done this mix of different sized rectangles and squares pattern?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It would be cool if this could be used:&lt;br /&gt;&lt;br /&gt;* to fill some of the rectangles or squares with different solid colors,&lt;br /&gt;* or with photo textures,&lt;br /&gt;* or like &lt;a href='http://www.filterforge.com/filters/11296.html' target='_blank' rel='nofollow'&gt;image overlay like in this Wire imprint filter by vwg&lt;/a&gt;&lt;br /&gt;* or make this as a model huge multiframes and make it in high resolution and put inside many mini photos&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img src='http://www.filterforge.com/upload/forum/upload/dac/straight.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1096670353' border='0' /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Also from this thread I like and are well done these other examples&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Sphinx showed this&lt;br /&gt;&lt;br /&gt;&lt;img src='http://www.filterforge.com/upload/forum/upload/3ee/printboard.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_263797548' border='0' /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Cool and beautiful circuit board style graphic&lt;br /&gt;&lt;br /&gt;Also like too this kind of maze graphic&lt;br /&gt;&lt;br /&gt; &lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Threeded showed &lt;br /&gt;&lt;img src='http://www.filterforge.com/upload/forum/upload/e34/PipeNoScript.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1778578646' border='0' /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also interesting other interesting pipes and maze like experiments  :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Sat, 16 Mar 2013 06:30:21 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Come to think of it, this makes for a great FilterForge homework exercise. :p Although some of them might be quite a brain teaser.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sat, 16 Mar 2013 06:52:44 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;this makes for a great FilterForge homework exercise.  Although some of them might be quite a brain teaser&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;well, I could try to make it and figure out only if this can be done without using any kind of scripts, as I can´t script, so I was asking and confirm this and this is done without script or does not any complex math with FF components (as you say that it could be quite a brain teaser  :D )&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sat, 16 Mar 2013 07:54:10 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;It is semi-scripted, but there is nothing in the script really that couldn't be made &quot;natively&quot;. However some trivial constructions are just way more easy to do in script (in particular if there is a high amount of simple logic).&lt;/p&gt;
</description>
</item>
<item><title>Query components</title> 
		             <dc:creator>Burt</dc:creator> 
		             <category></category> 
		             <pubDate>Thu, 28 Feb 2013 15:28:24 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=11045</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=11045</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Burt&lt;/b&gt;, &lt;em&gt;Wed, 27 Feb 2013 19:15:03 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I was optimizing a filter and wonder if the scripting would allow creating a component that you could run to query the components in a filter for certain values (based on some of the optimzation suggestions I am reading now). For example &quot;Find all [type of component] Noise with Roughness AND OR Detail &amp;gt; 0&quot; and maybe click to jump to these components or set multiple values or even just show a list &quot;You have 4 Noise components with Detail &amp;gt; 0&quot;&lt;br /&gt;&lt;br /&gt;In a complex filter finding each and every setting takes time so maybe this would be useful, just plugin it in when you need it and remove after done.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Burt&lt;/b&gt;, &lt;em&gt;Thu, 28 Feb 2013 12:18:50 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Actually I see that a search of the XML file will give me the info so I can probably search and edit that there if needed. Need a delete button on these forums, too many of my rambling ideas on here.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;xirja&lt;/b&gt;, &lt;em&gt;Thu, 28 Feb 2013 14:43:19 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Right.  That all the filters are stored as XML files is very helpful, you can read the contents with a text editor and program custom apps (outside of FF) to count components/controls, rewrite them, etc.  Because of this, I already have control locks and named presets.   :D   Thank you Filter Forge, thank you Mathematica!&lt;br /&gt;&lt;br /&gt;Being able to delete posts would be nice, but I'm thinking its more appropriate in the case of people who post more than 300 posts/month.   ;)&lt;br /&gt;&lt;br /&gt;Especially with the new grouping feature, its going to become even more needed for some way to find something many levels nested.  Easy to change values using the XML editing method, but if you wanted to replace a component?  :?:&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_1138015844');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;Burt&lt;/b&gt;, &lt;em&gt;Thu, 28 Feb 2013 15:28:24 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Cool. I actually found a nice free XML editor by Microsoft (not sure if some else has something better but here it is -sorry if this is off topic)&lt;br /&gt;&lt;br /&gt;&lt;img src='http://www.stormvisions.com/images/XML-Notepad.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1138015844' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;*Darn missing delete key!* ;)&lt;br /&gt;&lt;br /&gt;Actually I edited a file to try to change a component name and now FF does not recognize it so I removed the link. It didn't like something. &lt;br /&gt;&lt;br /&gt;I guess the thing with mucking with XML direct is you don't have any logic to restrict the changes to ranges accepted by FF. You'd need either a seperate 'rules' file so that people making external components can query acceptable ranges for each component or a checkbox for a 'verbose mode' to export the xml with non-rendering comment blocks for each component ie &quot;ABC Component: Height: acceptable range 0-100&quot; - but just thinking outloud as usual.&lt;/p&gt;
</description>
</item>
<item><title>Offset Helper</title> 
		             <dc:creator>Burt</dc:creator> 
		             <category></category> 
		             <pubDate>Wed, 27 Feb 2013 12:43:53 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=11034</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=11034</guid>
		             <description><script>oForumForm['images_for_resize'].push('popup_1204196664');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;Burt&lt;/b&gt;, &lt;em&gt;Sun, 24 Feb 2013 15:17:13 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I added this suggestion to the wishlist but wondered if it might be possible with scripting. Figured I'd post it in case anyone thinks it is worthy and has too much time on their hands. ;)&lt;br /&gt;&lt;br /&gt;I am working on a coral like filter like this &lt;br /&gt;&lt;img src='http://stormvisions.com/media/ff/coral1.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1204196664' border='0' /&gt; &lt;br /&gt;&lt;br /&gt;I was trying to place some polyps in the openings of some of these holes but it is hard to match the Offset component and the Smudge output. I did work out some close placements but I was thinking it would be great if there was a 'helper' component that could be connected to the Smudge output and would generate an X and Y offset from the Smudge component settings. Not sure if it could be exact but if there was some way to average it might be good and that could be fed to the offset for the polyp shape (or whatever other thing needs more precise placement.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 24 Feb 2013 16:27:50 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;You can &quot;extract&quot; the offset/distorted space from the smudge by running an XY map into it, i.e. put x (horizontal gradient) into red and y (vertical) into green. You then extract the channels again from the output. You can use it directly with Lookup to remap a texture as if it were processed by the smudge (note that this is not exact, but close).&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Burt&lt;/b&gt;, &lt;em&gt;Sun, 24 Feb 2013 17:40:27 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I have not used those math components yet. I'll try working through the help file with what you said. Thanks.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Mon, 25 Feb 2013 03:42:28 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Here's a visual picture of what Sphinx is describing. No need for math components :)&lt;br /&gt;&lt;br /&gt;The nerdy part is that we're processing the data in a single stream instead of having two smudge components or more. This way we don't add more render time plus it's easier to handle our output provided we only need to control 1 component to get the desired result. You then just need to extract the outputs from each color channel. &lt;br /&gt;&lt;br /&gt;Extra tip: you can feed up to 4 separate black and white images into a single stream using this method. The three obvious ones are by connecting the RG and B channels, our last image is the alpha channel. :) In our example we only need 2 pieces of data, the X and Y output for the distortion.&lt;br /&gt;&lt;br /&gt;Very cool image :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Burt&lt;/b&gt;, &lt;em&gt;Mon, 25 Feb 2013 16:36:31 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks for the initial post Sphinx, and for the visual clarification Skybase. I will make the changes tonight and see how it goes. Much appreciated.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Indigo Ray&lt;/b&gt;, &lt;em&gt;Mon, 25 Feb 2013 19:13:41 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thank you Sphinx/Skybase. I did not know about this technique. However, it is not faster than simply running a texture through a smudge component.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Burt&lt;/b&gt;, &lt;em&gt;Tue, 26 Feb 2013 15:44:48 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I just wanted to show that the 'polyp' circled in red were placed pretty darn well - so thanks for this. I have some other questions related to placing the white polyps but off topic for this forum so will place them in Creating Filters.&lt;br /&gt;&lt;br /&gt;If you have time and don't mind can you explain in somewhat simple language how what you sugested works? It seems very powerful.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 27 Feb 2013 11:43:21 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Indigo - the point is that we want a method to replicate the distortion of a smudge several times (since it is quite expensive) with different inputs - as if we had multiple smudges with the same settings. Skybase only showed one remapping/lookup - you can hook up as many as you want. Moreover the actual purpose with Burts challenge was to get something for horizontal/vertical offsets or similar (I think)&lt;br /&gt;&lt;br /&gt;I reckoned the distortion map (XY map) could be a step in the right direction.&lt;br /&gt;&lt;br /&gt;Burt - did you hook the X and Y channels directly to the bomber (where?) or how did you use them?&lt;br /&gt;&lt;br /&gt;Think about how coordinate space/a classic coordinate system would &quot;look&quot; if you were able to view the dimension/axis values. Horizontal values near 0 would be dark and values near the end would be bright. In FF we have 0,0 as the top,left position and 1,1 as the bottom,right. So we can easily construct that with gradients and pass them through distortions etc..and use the result for various purposes...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Burt&lt;/b&gt;, &lt;em&gt;Wed, 27 Feb 2013 12:43:53 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I have to admit how little I know. Based on what you said and Skybase's screenshot I simply broke the chain between the Smudge and the rest of the filter and fed everything in without changing anything else. After that the polyps circled in red lined up.&lt;/p&gt;
</description>
</item>
<item><title>Pattern Filling</title> 
		             <dc:creator>ThreeDee</dc:creator> 
		             <category></category> 
		             <pubDate>Mon, 25 Feb 2013 23:09:48 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10465</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10465</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Thu, 13 Sep 2012 14:03:15 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Starting with the non-overlapping circles and moving toward pattern filling, now in Scripting mode.&lt;br /&gt;&lt;br /&gt;Here is the first brute-force non-overlapping circles Script.&lt;br /&gt;&lt;br /&gt;Not very sophisticated. I just take random locations and put a circle of random size there and make sure the radius isn't larger than the distance to the closest existing sphere. Lots of extra needless circles this way without really filling up the space.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Thu, 13 Sep 2012 16:50:45 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Very nice to see your progress  :) &lt;br /&gt;&lt;br /&gt;Still have a bit of empty areas...  &lt;br /&gt;How about &lt;b&gt;move + shrink &lt;/b&gt;strategy?   I mean, you drop a circle at a random location, check for overlap (so far the same as what you did till now). Now instead of just shrinking the circle, how about nudging it's center a bit too?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;uberzev&lt;/b&gt;, &lt;em&gt;Thu, 13 Sep 2012 18:09:18 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;According to my measurements (External &amp;gt; Average) you've achieved 78.1% circle coverage.&lt;br /&gt;&lt;br /&gt; Decent first effort.  :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Thu, 13 Sep 2012 23:14:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;you've achieved 78.1% circle coverage&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;If you calculate it like that, filling a square with just one big circle will fill 78.5% of the image...  :D &lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;How about move + shrink strategy?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I have a few different steps planned.&lt;br /&gt;&lt;br /&gt;The first obvious improvement would be to ingore any coordinates for new circles that are inside other circles (and thus have a radius of 0). And to ensure a minimum size for the circles in the initial circle-creation stage, so we don't get tons of those tiny dots. &lt;br /&gt;&lt;br /&gt;But, more to the point, I have a different strategy planned, which works at least on paper, that is a fast way to do circle filling with no gaps in between. It's a bit more involved programming-wise. It is to fill the area so that any new circle created (apart from the first two) is always touching at least two existing circles.&lt;br /&gt;&lt;br /&gt;A fancier version would take into account the original image, it's lightness value or local contrast (detail amount) in determining the radius. This way it gets closer ot the original challenge.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Thu, 13 Sep 2012 23:29:05 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;The proper term is &quot;circle packing&quot;. I just Googled &quot;circle packing&quot; and landed right on &lt;a href='http://www.flickriver.com/photos/quasimondo/sets/72157600012142566/' target='_blank' rel='nofollow'&gt;Quasimondo's Flickr images.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(Whatever happened to Quasimondo anyways? Haven't heard of him since 2008.)&lt;br /&gt;&lt;br /&gt;The proper circle packing algorithms seem quite complex.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;uberzev&lt;/b&gt;, &lt;em&gt;Thu, 13 Sep 2012 23:30:23 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Quasimondo was the guy (or one of the guys) who developed Aviary Peacock. I believe he stopped hanging here when he starting developing it.&lt;br /&gt;&lt;br /&gt; You should email him and tell him we want him back.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 00:13:11 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Just giving the circles some space around them makes it look better.&lt;br /&gt;&lt;br /&gt;I finally read up on anti-aliasing zones and implemented it, so I don't have to set the antialiasing to &quot;all pixels&quot;.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 00:14:55 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Oooo these are interesting to see in FilterForge.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 03:18:05 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Some improvements. A new circle is added to the table &lt;i&gt;only&lt;/i&gt; if it is a valid circle (no overlap, above minimum size), so 600 circles fill the image in better than 2000 totally random circles did. &lt;br /&gt;&lt;br /&gt;The index number is now used for shading as well (combined with an 5-color gradient and an elevation gradient).&lt;br /&gt;&lt;br /&gt;I have one problem: For the life of me I can't seem to be able to handle getting out of the while-loop when the pattern is &quot;full&quot;. So it just throws an error when I increase the &quot;Number of circles&quot; slider above the point where the pattern is full. (by &quot;full&quot; I mean when 100 consecutive attempts to place a new circle fail.)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;uberzev&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 03:25:47 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Nice work there!  This should be made into an official component.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 03:51:53 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;WOW!!!! W O W !!! You are a genius ThreeDee, you have done a really great, nice and good work!! I like much what you have done until now.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AWESOME!&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 05:44:21 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Now this is starting to become fun. Image as color source.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 05:50:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Nice!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 06:03:25 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;This will be the next FilterForge number one hit filter.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 06:03:29 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;With my luck, this feature will be included in the next beta version of V4...  :|&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 06:07:17 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I would like to use the original image to modify the radius of the circles as well. For some reason math.random() is disabled for get_sample function :?: so looks like I need to create a pseudo random number function for this.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 06:36:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;By the way, here's a question. When sampling the color, are you deriving the mean or median? :o&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 07:14:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Skybase wrote:&lt;/b&gt; When sampling the color, are you deriving the mean or median?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Just the center point of the circle.&lt;br /&gt;&lt;br /&gt;Okay, so I got the pseudo-random number function working, so now I can use the original image for size information. Darker areas make the initial circle sizes smaller.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 07:26:28 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Very cool, Threedee! Great that you took this challenge up! :D &lt;br /&gt;I guess once you got it all working properly it could be any shape, not just circles?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 08:19:57 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Circles are easier than random shapes as you can calculate the distance from their perimeter very easily. But yes, the ultimate goal is to be able to do this with any shape. Or even a number of different shapes.&lt;br /&gt;&lt;br /&gt;I like how the Lionfish comes out.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 08:20:38 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Maximum circle size variation gives a fractal-like look.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 08:32:06 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Small size range.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 09:08:05 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Ok, pretty good. But now let's go back to basics.&lt;br /&gt;&lt;br /&gt;The packing density achieved with the current method is fairly good.&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_646278178');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 09:09:09 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;However, when you compare it to a properly packed texture, you can see it can be vastly improved.&lt;br /&gt;&lt;br /&gt;&lt;img src='http://payload.cargocollective.com/1/1/47625/1626575/cp16.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_646278178' border='0' /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 09:48:55 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Now, the math necessary to achieve that is way too complex for my taste, so here's my simplified approach/theory which should give a relatively good result:&lt;br /&gt;&lt;br /&gt;Take two connected circles in the center and start drawing circles  which touch the previous circle and the lowest available index circle filling in the space in clockwise direction.&lt;br /&gt;&lt;br /&gt;Should be simple to implement and should give a good result.&lt;br /&gt;&lt;br /&gt;The only foreseeable problem is what to do if the shape grows itself into an internal dead-end. So there needs to be an excape route when the next circle cannot be added in this wise.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 09:56:17 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;:o Interesting approach. I always imagined you needed some form of buffer for doing this.&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_1755220576');</script>
<script>oForumForm['images_for_resize'].push('popup_573844272');</script>
<script>oForumForm['images_for_resize'].push('popup_1526493375');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Fri, 14 Sep 2012 10:16:29 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Nice, well done and interesting this two examples you have made&lt;br /&gt;&lt;br /&gt;&lt;img src='http://filterforge.com/upload/forum/upload/0e8/Circle-packing-05.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1755220576' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src='http://filterforge.com/upload/forum/upload/f23/Circle-packing-06C.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_573844272' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;Of course that this can´t be compared to the very tight and very compressed and VERY packed circles like this other example&lt;br /&gt;&lt;br /&gt;&lt;img src='http://payload.cargocollective.com/1/1/47625/1626575/cp16.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1526493375' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;BUT I think that although this is better, your example are not in bad at all, and are just different way, and I agree that surely to be able to make this very compact and tight packing would involve much more complex math and a different algorithm.&lt;br /&gt;&lt;br /&gt;Please, continue your great work and keep getting it better and better  :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Quasimondo&lt;/b&gt;, &lt;em&gt;Tue, 18 Sep 2012 07:20:05 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;(Whatever happened to Quasimondo anyways? Haven't heard of him since 2008.) &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Hi guys,&lt;br /&gt;&lt;br /&gt;it's been a few years but I just downloaded the latest version of Filter Forge only to discover that there is scripting possible now. Wow that's neat! I guess that might drag me right back in here. Looks like I have to learn Lua now.&lt;br /&gt;&lt;br /&gt;Also saw the &quot;Bomber&quot; component (which did not exist back in the days when I was still quite active here) which I cannot help to remind me a quite a but of my &quot;Autopainter&quot; hub in Peacock ;-). But of course I can't deny that I might have taken the one or the other inspiration here when I made Peacock.&lt;br /&gt;&lt;br /&gt;Seeing this thread makes me want to try out how my circle packing method works perfomance-wise with Lua: &lt;a href='http://www.curioos.com/quasimondo/Pie-Packing/Starry-Night-Pie-Packed/000001070/' target='_blank' rel='nofollow'&gt;Starry Night Pie Packed&lt;/a&gt;&lt;br /&gt;Cheers&lt;br /&gt;Mario&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Tue, 18 Sep 2012 07:32:41 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Awesome, Quasimondo has returned!  :ff: Welcome back!&lt;br /&gt;&lt;br /&gt;I love your implementations of circle packing, especially the flavor of fitting them into the largest available space.&lt;br /&gt;&lt;br /&gt;Lua will be a piece of cake for you.&lt;br /&gt;&lt;br /&gt;TD&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Tue, 18 Sep 2012 07:35:48 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Quasi is alive! :beer:  :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Mon, 26 Nov 2012 11:05:32 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Please, any information update of this amazing and awesome filter project?&lt;br /&gt;&lt;br /&gt;Is ThreeDee missing again? The last message is from 26 October, one month ago, and in this thread was in september 18 and now we are in November 26.&lt;br /&gt;&lt;br /&gt;What ThreeDee have done here looks really nice and well done and does not necessarily need to be like the Quasimondo examples, I like it already just as the examples available above from ThreeDee&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ddaydreams&lt;/b&gt;, &lt;em&gt;Thu, 27 Dec 2012 23:11:44 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;It looked promising I hope something good will come from the effort. In the mean time I use peculator on my iphone. This level of math is way beyond me or I would give it shot in FF.&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_842305511');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Fri, 28 Dec 2012 02:44:51 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;ddaydreams&lt;br /&gt;&lt;br /&gt;It looked promising I hope something good will come fr om the effort.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I wish and hope that too, although I think that he has already got it right as it is now, as the image of the FF Lionfish is already well done as shown here.&lt;br /&gt;&lt;br /&gt;&lt;img src='http://filterforge.com/upload/forum/upload/f23/Circle-packing-06C.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_842305511' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;ddaydreams&lt;br /&gt;In the mean time I use peculator on my iphone&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;YES!! The &lt;a href='http://www.google.co.uk/search?num=10&amp;hl=en&amp;site=imghp&amp;tbm=isch&amp;source=hp&amp;biw=1920&amp;bih=917&amp;q=percolator+app&amp;oq=percolator+app&amp;gs_l=img.3..0j0i24l9.1045.8173.0.8684.32.14.4.14.3.0.191.1435.11j3.14.0...0.0...1ac.1.MINg675cvKE' target='_blank' rel='nofollow'&gt;Percolator App for Iphone or Ipad&lt;/a&gt; is really excellent and amazing what it can do.&lt;br /&gt;&lt;br /&gt;Although the problem with it is that is limited to a resolution of 2048 x 2048, and here in filter forge would not have a lim it, BUT you can use the &quot;Live Trace&quot; or &quot;Image trace&quot; of Adobe Illustrator or from Corel Draw and convert it to vector (it seems that it works very well) and then you can have the percolated image in ANY resolution you want.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;PERCOLATOR USED THE WAY OF THREEDEE AND NOT FROM QUASIMONDO&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;ThreeDee wanted to get to the level of very tight circle packing that Quasimondo have shown in his beautiful and wonderful examples, BUT it seems that this is more complex than it seems, and so others app available, like Percolator is using the more separate and less space filling as shown already by ThreeDee in the examples above and it looks very nice too anyway. &lt;br /&gt;&lt;br /&gt;I have not yet found any information related to the very tight and compressed circle packing that Quasimondo have shown and is using, and do not know how he has done it, perhaps is a own special programmed software made by himself   or using something like the &lt;a href='http://www.processing.org' target='_blank' rel='nofollow'&gt;Processing language&lt;/a&gt; to make his own algorithm.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ddaydreams&lt;/b&gt;, &lt;em&gt;Mon, 31 Dec 2012 18:59:39 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;YES!! The Percolator App for Iphone or Ipad is really excellent and amazing what it can do. Although the problem with it is that is limited to a resolution of 2048 x 2048, and here in filter forge would not have a lim it, BUT you can use the &quot;Live Trace&quot; or &quot;Image trace&quot; of Adobe Illustrator or from Corel Draw and convert it to vector (it seems that it works very well) and then you can have the percolated image in ANY resolution you want. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yes convert peculator image to vector is probably a good option. I'll have to try that sometime&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Mon, 31 Dec 2012 20:12:47 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;so... well aside from our established group, anybody doing actual research on how this effect is achieved properly? :p&lt;br /&gt;&lt;br /&gt;Might be interesting to see it implemented with this: &lt;a href='http://en.wikipedia.org/wiki/Halton_sequence' target='_blank' rel='nofollow'&gt;http://en.wikipedia.org/wiki/Halton_sequence&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ddaydreams&lt;/b&gt;, &lt;em&gt;Mon, 31 Dec 2012 20:34:02 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Apollonian sphere packing&lt;br /&gt;&lt;a href='http://en.wikipedia.org/wiki/Apollonian_sphere_packing' target='_blank' rel='nofollow'&gt;http://en.wikipedia.org/wiki/Apollonian_sphere_packing&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Mon, 31 Dec 2012 22:41:59 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;That's probably the most direct manner, though given the fact that it's a pretty set thing, you don't have many choices for alternative design attempts. &lt;br /&gt;&lt;br /&gt;ThreeDee's approach is actually kinda neat. If done right, you probably don't need trig because each circle is being drawn in a spiral form. So given the first x radius, draw the next circle next to it, and spiral outwards = probably a nice clean method.&lt;br /&gt;&lt;br /&gt;//unrelated to filterforge....&lt;br /&gt;&lt;br /&gt;On a totally unrelated FilterForge note... here's something I did a while ago. Colors derived from image. :) Self homework = make it fully original without deriving bits and pieces of code from everywhere.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ddaydreams&lt;/b&gt;, &lt;em&gt;Mon, 31 Dec 2012 22:51:16 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Skybase, what app did you do that in?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Mon, 31 Dec 2012 23:11:05 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Processing. ;)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Mon, 31 Dec 2012 23:13:59 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;//more commentary unrelated to filterforge&lt;br /&gt;A less elegant but hyper easy approach using StudioArtist 4. Program lets you do a lot of crazy things. Which is nice.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Sun, 24 Feb 2013 15:21:47 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hey guys, I came across this cool 3DS Max plugin that does this in 3D!&lt;br /&gt;&lt;a href='https://sites.google.com/site/autofill21/gallery' target='_blank' rel='nofollow'&gt;https://sites.google.com/site/autofill21/gallery&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's written in python, but it's open-source! Maybe similar methods could be applied to FF lua.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Sun, 24 Feb 2013 21:25:51 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;autoPack is pretty cool. As more of a side-information related to autoPack, the plugin lets you load up protein molecules with studied structures and animation in various model modes. You use these to fill space up with cellPack. They were doing a contest a while ago promoting the cellPack thing. CellPack crashes a lot so I've only gotten it to work once unfortunately.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Mon, 25 Feb 2013 20:46:43 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;If you may be interested in circle packing in 3D (sphere packing) I have found some time ago this very good and interesting tutorial for Cinema 4D --&amp;gt; &lt;a href='http://greyscalegorilla.com/blog/2011/05/how-to-make-and-modern-art-gallery-installation-animation-with-cinema-4d/' target='_blank' rel='nofollow'&gt;Some kind of Sphere Packing in 3D&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It shows how to make the sphere be packed in the tighest and closer one to each other in a dynamic way.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;ddaydreams &lt;br /&gt;&lt;br /&gt;Skybase, what app did you do that in? &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Skybase is using the &lt;a href='http://www.processing.org' target='_blank' rel='nofollow'&gt;Processing scripting language&lt;/a&gt; and if you want to have more information you can see this &lt;a href='http://www.filterforge.com/forum/read.php?FID=15&amp;TID=9673&amp;MID=115989&amp;sphrase_id=1461027#message115989' target='_blank' rel='nofollow'&gt;other thread with further links&lt;/a&gt; to know what it is about.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ddaydreams&lt;/b&gt;, &lt;em&gt;Mon, 25 Feb 2013 20:55:26 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks SpaceRay&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Mon, 25 Feb 2013 23:09:48 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;SpaceRay, provided that tutorial, all you need to do is just add a repelling factor to each instance of a sphere. You can then turn up the ambient color and get flat-shaded circles for output. Cinema also allows you to sample colors based on image input. Pretty sure I remember I did that so the shader setup might be confusing but the actual process shouldn't be difficult.&lt;/p&gt;
</description>
</item>
<item><title>Script-component-based filter ideas</title> 
		             <dc:creator>ThreeDee</dc:creator> 
		             <category></category> 
		             <pubDate>Mon, 25 Feb 2013 21:16:53 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7530</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7530</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 20 Jun 2010 12:17:12 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;This thread can be used to suggest script-based filters that someone may want to try and create. No matter how wild and crazy...&lt;br /&gt;&lt;br /&gt;How about &lt;b&gt;cast shadows from a height map&lt;/b&gt;?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 20 Jun 2010 12:21:00 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I am still hoping to do a &lt;b&gt;3D rotatable cube with image mapping&lt;/b&gt; some day...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;CorvusCroax&lt;/b&gt;, &lt;em&gt;Sun, 20 Jun 2010 12:28:29 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Good idea threedee. Here's a few:&lt;br /&gt;&lt;br /&gt;I think a &lt;b&gt;Maze component&lt;/b&gt; would be cool. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Branching and forking&lt;/b&gt; would be useful (rivers, veins, etc)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Erosion &lt;/b&gt;of a height map&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Pipes &lt;/b&gt;- with connecting and branching.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Deskar&lt;/b&gt;, &lt;em&gt;Sun, 20 Jun 2010 13:36:11 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;:) &lt;br /&gt;Hulls for spaceships?&lt;br /&gt;The existent filters are not very reallistic.&lt;br /&gt;Cellular automats?&lt;br /&gt;Chaos?&lt;br /&gt;Real Voronoi patterns?&lt;br /&gt;Uhhhhh.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 20 Jun 2010 14:58:59 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;CorvusCroax wrote:&lt;/b&gt;&lt;br /&gt;I think a Maze component would be cool.&lt;br /&gt;&lt;br /&gt;Branching and forking would be useful (rivers, veins, etc)&lt;br /&gt;&lt;br /&gt;Erosion of a height map&lt;br /&gt;&lt;br /&gt;Pipes - with connecting and branching. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Maze with one (and just one) solution would be interesting.&lt;br /&gt;Yes, branching and forking will be in the works shortly.&lt;br /&gt;Erosion seems bit more of a complicated matter. Any ideas on how to achieve it?&lt;br /&gt;Pipes shouldn't be all that difficult.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Deskar wrote:&lt;/b&gt;&lt;br /&gt;Cellular automats? Chaos? Real Voronoi patterns? &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Cellular automats are (somewhat) possible even in V1. Oh, I see, you could do one where the slider could control the number of iterations.&lt;br /&gt;Chaos as in &quot;Spiral Defect Chaos&quot;?&lt;br /&gt;Real Voronoi patterns: Doesn't bubbles noise do that? Or do you mean one with better control on point placement? &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Kraellin&lt;/b&gt;, &lt;em&gt;Sun, 20 Jun 2010 15:57:51 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;i have no idea if this is possible with the new scripting, but how about something like sphinx built for making animations or even something that would automate that feature even more? that, being internal, would be really sweet!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 00:46:17 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Mandelbulb raytracer, more raytraceable object types (it basically comes down to distance estimations and intersection functions), true variblur, solution for procedural rendering of IFS fractals, FFT/iFFT, Lightning &quot;fractal&quot;, HDR tonemapping, distance transforms.. more to come ;)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 11:33:31 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I haven't seen any other raytracing examples but the one Vladimir had somewhere. Raytracing is out of my league. I might manage to get up to raycasting.&lt;br /&gt;&lt;br /&gt;Variblur would be good. Could use height (alpha or selection) information for the radius, like Photoshop does.&lt;br /&gt;&lt;br /&gt;IFS (iterated function system) fractals, very much YES.&lt;br /&gt;&lt;br /&gt;?? What the heck do you use FFT/iFFT for?&lt;br /&gt;&lt;br /&gt;Distance transforms: I'd be happy to be able to do just the basic Free Distort / Perspective Distort that is built in in PS.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 11:50:28 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;solution for procedural rendering of IFS fractals&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I've been thinking about this. What I'm considering is calculating and saving the coordinates, scale and rotation for each of the instances of the fractal particle at prepare(), then creating an additional table for every rendering thread rectangle at get_sample() (when it is run the first time) which holds just those items which appear within the bounds of that rectangle. &lt;br /&gt;Not very memory efficient, but at least it would help rendering speed to limit hit checking to only those items which occur within a given rectangle.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 14:09:35 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;FFT/iFFT: Once you're in frequency domain, it is very easy to do low/high pass filtering amongst other interesting things. But it is a rather expensive transform, which in the first place requires a doable bitmap based solution&lt;br /&gt;&lt;br /&gt;About the IFS stuff.. is definitely high on my list too, but its a damn complicated situation trying to combine a projective design with a procedural  :cry: &lt;br /&gt;&lt;br /&gt;About the distance transform: its not a transformation in the normal sense, it will render the inner and/or outer distances of a selection or binary shape. I did work out a partial solution with the min and max components, but it is size dependant and very memory hungry. I guess it too requires a good bitmap solution&lt;br /&gt;&lt;br /&gt;Next thing when I'm done with the 3D mandelbrot raytracer (lua is fighting hard back at me :evil: ) is probably cast shadows, i.e. a simple raytracer boiled down to the hard shadows part&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Kraellin&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 17:28:20 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;fft and ifft are also used in photo restoration. it's a good way to eliminate patterned noise and paper textures picked up by a high resolution scanner.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 21:06:22 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;CorvusCroax wrote:&lt;/b&gt;&lt;br /&gt;I think a Maze component would be cool. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;You know, if you took ThreeDee's grid script and masked out areas based on a random table of 0s or 1s you can get a rudimentary maze that won't be solvable, but works.&lt;br /&gt;&lt;br /&gt;I also write a python script for a game. It was in essence...&lt;br /&gt;&lt;br /&gt;1. Create a random value via choice (0 or 1 or 2 or 3) create another random value set with only 0 and 1.&lt;br /&gt;&lt;br /&gt;2. Create a MOD grid system (block out every other ups and downs and make each middle section editable)&lt;br /&gt;&lt;br /&gt;3. Create the solution: given the condition that they must be continuous lines, if random value is 0 then turn left random value is 1 turn right (up and down so on). Save this on a 2D array. Do this until it hits the edge. &lt;br /&gt;&lt;br /&gt;4. if the step already exists: Backtrack.&lt;br /&gt;&lt;br /&gt;5. the rest: if the table is not touched fill the rest in. if 0 don't fill. if 1 fill.&lt;br /&gt;&lt;br /&gt;Honestly the worst pseudocode I ever written but it works in my head. :( I wish I knew LUA better.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 21:30:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;ThreeDee wrote:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Erosion seems bit more of a complicated matter. Any ideas on how to achieve it?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Quick and dirty way I can think of is a set or randomly generated lines (with branching) with a significant amount of noise distortion set on the image.&lt;br /&gt;&lt;br /&gt;In other words:&lt;br /&gt;1. Look for a hotspot on the map. Hotspot = the brightest area of the map.&lt;br /&gt;2. Create a bunch of BRANCHING lines all converging at that hotspot.&lt;br /&gt;3. Apply perlin noise distortion to the lines. &amp;lt;--- Probably a grayscale noise map.&lt;br /&gt;4. Use the lines as A) a distiortion map. B) combined with difference???&lt;br /&gt;&lt;br /&gt;The point is, once there is branching, it will look like erosion. Otherwise you'll get into things like simulating fluids via navier-strokes.&lt;br /&gt;&lt;br /&gt;------&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Kraellin wrote:&lt;/b&gt;&lt;br /&gt;fft and ifft are also used in photo restoration. it's a good way to eliminate patterned noise and paper textures picked up by a high resolution scanner.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;You mean this? &lt;br /&gt;&lt;a href='http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/dft/' target='_blank' rel='nofollow'&gt;http://local.wasp.uwa.edu.au/~pbourke...neous/dft/&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Fri, 25 Jun 2010 17:10:48 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Deskar wrote:&lt;/b&gt;&lt;br /&gt;Hulls for spaceships? The existent filters are not very reallistic.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;You should definitely check this out:&lt;br /&gt;&lt;a href='http://www.filterforge.com/forum/read.php?FID=14&amp;TID=7519&amp;MID=85737' target='_blank' rel='nofollow'&gt;http://www.filterforge.com/forum/read...&amp;MID=85737&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Deskar wrote:&lt;/b&gt;&lt;br /&gt;Cellular automats? &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Cellular automata are difficult to do with sample-based approach. The best approach would be to use a bitmap, but FF doesn't support bitmap-based scripting yet.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Deskar&lt;/b&gt;, &lt;em&gt;Sat, 26 Jun 2010 00:40:01 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Vladimir, the blur component are a automata cellular?&lt;br /&gt;May be a modified version open to user to rescript the core of blur and obtain other CAs?&lt;br /&gt;I don't sure about this. Please tell me if I wrong.&lt;br /&gt;&lt;br /&gt;ThreeDee, chaos as Chaos Attractors.  :) &lt;br /&gt;In Burke´s page are many good shapes&lt;br /&gt;&lt;br /&gt;&lt;a href='http://local.wasp.uwa.edu.au/~pbourke/fractals/' target='_blank' rel='nofollow'&gt;http://local.wasp.uwa.edu.au/~pbourke/fractals/&lt;/a&gt;&lt;br /&gt;May be are too raster for FF, but may be a few not...&lt;br /&gt;&lt;br /&gt;Sorry my bad english, I eat a korean tv handbook.  :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Sun, 27 Jun 2010 10:26:32 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I'm working on a simple scripting component that I know I've been wanting several times, a switch for up to 16 inputs that is randomly controlled by the Global Variation, which input it will feed out. Will make a similar component for Curves as well. These will come handy when making filters where you want random controlled output or layers and to get rid of all &quot;variation 1&quot;, &quot;variation 2&quot; sliders that are just random. &lt;br /&gt;&lt;br /&gt;I would really like a script control that can be hooked to grey inputs, to generate true random sliders etc...&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_668341156');</script>
<script>oForumForm['images_for_resize'].push('popup_481043585');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;CorvusCroax&lt;/b&gt;, &lt;em&gt;Sun, 27 Jun 2010 13:40:29 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;ThreeDee wrote:&lt;/b&gt;&lt;br /&gt;Erosion seems bit more of a complicated matter. Any ideas on how to achieve it?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Well, there are lots of algorithms out there for erosion. They all involve looking at a pixel, calculating it's height compared to its neighbors, and then distibutuing it's excess height equally amongst its neighbors. &lt;br /&gt;&lt;br /&gt;&lt;img src='http://cgg-journal.com/2002-2/03/Image236.gif'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_668341156' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;&quot;The total volume outlet S of a cell is given by the equation: &lt;img src='http://cgg-journal.com/2002-2/03/Image237.gif'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_481043585' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;where h is the highest difference to the neighbors, 0&amp;lt;r&amp;lt;1 is the resistance coefficient and a is the surface area of the cell.&quot;&lt;br /&gt;&lt;br /&gt;This strikes me as fairly slow, though. There are probably more clever ways to do it. &lt;br /&gt;&lt;br /&gt;Hydraulic erosion is more complicated, because involves influx and outflux, but here's a newer technique which seems quite fast b/c it's optimized for modern GPU. (The Mei paper) &lt;br /&gt;&lt;a href='http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.93.5802&amp;rep=rep1&amp;type=pdf' target='_blank' rel='nofollow'&gt;http://citeseerx.ist.psu.edu/viewdoc/...1&amp;type=pdf&lt;/a&gt;&lt;br /&gt;Here's the authors' webpage: &lt;a href='http://www-evasion.imag.fr/Publications/2007/MDH07/' target='_blank' rel='nofollow'&gt;http://www-evasion.imag.fr/Publications/2007/MDH07/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A couple other links:&lt;br /&gt;&lt;a href='http://oddlabs.com/download/terrain_generation.pdf' target='_blank' rel='nofollow'&gt;http://oddlabs.com/download/terrain_generation.pdf&lt;/a&gt;&lt;br /&gt;&lt;a href='http://cgg-journal.com/2002-2/03/index.htm' target='_blank' rel='nofollow'&gt;http://cgg-journal.com/2002-2/03/index.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's an implementation of the oddlabs ones, including code: &lt;a href='http://www.gamedev.net/community/forums/topic.asp?topic_id=397681' target='_blank' rel='nofollow'&gt;http://www.gamedev.net/community/foru..._id=397681&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Jim Niehues&lt;/b&gt;, &lt;em&gt;Thu, 05 Aug 2010 13:19:01 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;ThreeDee you asked for cast shadows so here they are...&lt;br /&gt;&lt;a href='http://www.filterforge.com/filters/8898.html' target='_blank' rel='nofollow'&gt;Cast Shadows Filter&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;CFandM&lt;/b&gt;, &lt;em&gt;Thu, 05 Aug 2010 20:56:21 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;ThreeDee wrote:&lt;/b&gt;&lt;br /&gt;I am still hoping to do a 3D rotatable cube with image mapping some day... &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Oh yea I completely forgot about rotating image cubes.. ;) &lt;br /&gt;Guess I will have to learn the basics of scripting first... :D  :)&lt;br /&gt;Just not a lot of time to spare at the moment.. :(  :cry: &lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Jim Niehues wrote:&lt;/b&gt;&lt;br /&gt;ThreeDee you asked for cast shadows so here they are...&lt;br /&gt;Cast Shadows Filter&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;cool :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Tue, 10 Aug 2010 11:08:36 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Jim Niehues wrote:&lt;/b&gt;&lt;br /&gt;ThreeDee you asked for cast shadows so here they are... Cast Shadows Filter&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Oh yes, nice.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;CorvusCroax&lt;/b&gt;, &lt;em&gt;Tue, 10 Aug 2010 11:09:10 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hey: I have another idea for a script component: &lt;br /&gt;&lt;br /&gt;Simple pseudo-random number generator, which returns a new number every time the filter is run. The idea is to plug this into variation, but every time the filter is run.&lt;br /&gt;&lt;br /&gt;A lot of times, I want to use a filter on a BUNCH of images (like 100+), using Pshop batching. But I need them to all not look exactly the same. All they need is different variation.&lt;br /&gt;&lt;br /&gt;Is that possible using scripting? Seems like is should be simple.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Tue, 10 Aug 2010 11:22:22 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hi Corvus,&lt;br /&gt;&lt;br /&gt;Yes, it should. The Script random number generator works that way currently, it produces a different result every time unless tied to the global Variation setting. (I just hope it doesn't get fixed in the next upd ate :D )&lt;br /&gt;&lt;br /&gt;And you gave me another idea that might be useful: A slider randomizer. That is, you could plug in a Script component that would randomize any slider within a given range (another input se ts the range). It would be similar to the built-in &quot;Randomize&quot; Variation functionality, but with full user control, not just the three preset levels of randomization.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Tue, 10 Aug 2010 11:30:19 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hmm... how about ....&lt;br /&gt;&lt;br /&gt;Watershed image segmentation?&lt;br /&gt;&lt;br /&gt;&lt;a href='http://en.wikipedia.org/wiki/Watershed_%28image_processing%29' target='_blank' rel='nofollow'&gt;http://en.wikipedia.org/wiki/Watershe...cessing%29&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Probably a bit... hard :p&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Tue, 10 Aug 2010 11:32:39 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Uhm, there IS a slight problem, which is that a Map Script can only generate an image output that plugs into a green input and the Curve Script a curve output that plugs into a blue input. Variation is a grey input, so you cannot plug a Script component there...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Tue, 10 Aug 2010 11:40:57 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;ThreeDee Wrote:&lt;/b&gt;&lt;br /&gt;Variation is a grey input, so you cannot plug a Script component there...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Thats why I've wished for a &quot;grey&quot;script output, would make my life much much much simpler, when you have sliders that should affect different inputs and you cannot use the &quot;tone curve trick&quot; to adjust those.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Tue, 10 Aug 2010 11:47:36 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Skybase wrote:&lt;/b&gt;&lt;br /&gt;Watershed image segmentation? &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Might run into memory issues...&lt;br /&gt;&lt;br /&gt;Unless we get a bitmap component that you can run Scripts on, meaning if we could run a script ONCE for the whole image, not for every single render thread, it could be done. Currently you'd have to calculate the image as many times as there render squares. This makes some Scripts (at least) 64 times slower than they need to be.&lt;br /&gt;&lt;br /&gt;This is really making some effects hard. It is painfully slow to do, for instance, an Internal Average Color script, for you have to calculate the whole image for every render square. No wonder it isn't in the Components. But blessed be the day a bitmap component appears there.&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_806749049');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;CorvusCroax&lt;/b&gt;, &lt;em&gt;Thu, 12 Aug 2010 00:07:13 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;ThreeDee wrote:&lt;/b&gt;&lt;br /&gt;Quote Skybase wrote: Watershed image segmentation? &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Huh... actually 'Minimum Spanning Forest' makes some decent mazes. &lt;br /&gt;&lt;br /&gt;&lt;img src='http://upload.wikimedia.org/wikipedia/en/7/7e/Minimum_Spanning_Forest_of_the_gradient_of_an_image.png'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_806749049' border='0' /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;CorvusCroax&lt;/b&gt;, &lt;em&gt;Thu, 12 Aug 2010 00:10:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hey here's another idea for a script: &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Continuousness check / Flood Fill: &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Basically just Photoshop's magic wand tool or the fill bucket, but in a FF node form. You give it an X and a Y and a tolerance. It returns black or white. (is continuous with point, or is not continuous)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Sat, 14 Aug 2010 22:22:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hmm...&lt;br /&gt;&lt;br /&gt;How about scripts that do &lt;b&gt;simple recursions or a feedback loop&lt;/b&gt;? You feed an image, it repeats the image on top of each other based on blending mode, size or whatever attribute.&lt;br /&gt;&lt;br /&gt;I'm sure you can do that with the bomber, but I find it slow and tedious to tinker with. Might as well have a component that just does it.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 15 Aug 2010 03:59:32 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I did some experiments in that direction, and yes you can easily make something simpler and faster than the bomber. Actually what motivated me is that noise octaves (&quot;layers&quot;) in the noise components are blended and I wanted some sort of opaque style combining (its way faster than blending as you can stop sampling when you hit an opaque sample)&lt;br /&gt;&lt;br /&gt;its not very complicated making such scripts, basically you need a table holding size, offset etc whatever you need to be unique per sample recursion. Then you loop n times where you fetch a sample and blend/mix/do your thing.&lt;br /&gt;&lt;br /&gt;I'd be happy to help out if you need help constructing something like this.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Mon, 16 Jul 2012 20:35:14 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;CorvusCroax wrote:&lt;br /&gt;&lt;br /&gt;I think a Maze component would be cool.&lt;br /&gt;&lt;br /&gt;Erosion of a height map  &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yes this would be good and interesting&lt;br /&gt;&lt;br /&gt;Also would be good and useful to have a erosion component and script&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;ThreeDee wrote:&lt;br /&gt;&lt;br /&gt;I am still hoping to do a 3D rotatable cube with image mapping some day...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yes, I have requested a similar thing like this also in another thread &lt;a href='http://filterforge.com/forum/read.php?FID=10&amp;TID=9237' target='_blank' rel='nofollow'&gt;Is it possible to have 3D boxes AND be able to ROTATE THEM in full?&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Mon, 25 Feb 2013 21:16:53 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;This thread could be used more to keep sharing those interesting ideas as shown above&lt;/p&gt;
</description>
</item>
<item><title>A &quot;Stones&quot;-like noise with triangular forms?</title> 
		             <dc:creator>Tim2501</dc:creator> 
		             <category></category> 
		             <pubDate>Fri, 15 Feb 2013 17:46:35 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10076</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10076</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Tim2501&lt;/b&gt;, &lt;em&gt;Sun, 17 Jun 2012 17:18:21 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I'm currently working on a broken-glass filter and had some good results with the &quot;Stones&quot;-noise. I'm using a low treshold on it to determine the breaking-lines and an if-module on a solid-filled version od &quot;Stones&quot; to determine the areas of single shards.&lt;br /&gt;&lt;br /&gt;My problem is that, while glass usually breaks into shards with 3 or 4 edges, &quot;Stones&quot; often delivers shapes with 5 or 6 edges, which makes the whole thing look pretty unrealistic.&lt;br /&gt;&lt;br /&gt;Is it possible to make or modify a script so it delivers a triagular-stones-noise?&lt;br /&gt;&lt;br /&gt;Unfortunately I cant script at all, so any help will be greatly appreciated.&lt;br /&gt;&lt;br /&gt;Thanks in advance!  ;)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;uberzev&lt;/b&gt;, &lt;em&gt;Mon, 18 Jun 2012 04:07:54 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;A few triangle ideas here...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Tim2501&lt;/b&gt;, &lt;em&gt;Mon, 18 Jun 2012 07:37:53 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;This idea occurred to me too.&lt;br /&gt;Unfortunately, the triangles must not overlap each other, because I need the grooves betwen them to determine my breaking-lines.&lt;br /&gt;Also, overlapping triangles often produce concave forms within each other, which would look pretty unrealistic as shards :/&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Mon, 18 Jun 2012 14:49:31 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Uberzev, maybe your smooth stone mosaic can be adapted to make triangles or square instead of ovals, or eggs?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;uberzev&lt;/b&gt;, &lt;em&gt;Mon, 18 Jun 2012 22:32:59 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Uberzev, maybe your smooth stone mosaic can be adapted to make triangles or square instead of ovals, or eggs? &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;The underlining math of my filter is the same as Worley Cell noise, and I don't believe that formula offers triangles.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;uberzev&lt;/b&gt;, &lt;em&gt;Mon, 18 Jun 2012 23:01:02 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;This do anything for you?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;uberzev&lt;/b&gt;, &lt;em&gt;Wed, 04 Jul 2012 03:57:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;The solid-fill version of chaffs makes some decent triangles...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 00:28:34 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks very much for the Offset Edges filter that I like much&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 00:30:45 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I have modified it to be able to fill the beautiful triangular shapes created by this with images but what I really have done is only fill the lines and background  :(&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 00:33:53 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;And this other one that is the opposite, with higher width of the edges&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 00:34:55 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;And here is the simple modification&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 00:35:35 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I'm going to poke you to try something more fancy than masking :p&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_1402447038');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 00:39:39 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;What would be really good is to be able to make the image FOLLOW and fill the shapes made by this filter with this setting shown here&lt;br /&gt;&lt;br /&gt;&lt;img src='http://www.filterforge.com/upload/forum/upload/aab/Offset%20edges%20by%20uberzev.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1402447038' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;So the image would be shattered and cut to fill the inside of the white shapes of this pattern shown here and have some kind of shading so it would look more something like a 3D style&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 01:07:14 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Like this?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 05:05:11 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Of course that what I made above was very simple and nothing fancy, was just a quick test.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Like this?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;OH, yes, this is what I was talking about. Be able to modify the source colors into the shapes. Well done!! Like it much&lt;br /&gt;&lt;br /&gt;Also would be good if possible to make the real photo image broken into pieces to fill the irregular shapes and not only the source colors&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 05:18:47 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Yup of course you can do that.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 05:23:07 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;lol want to give it a shot yourself and then should I just reveal how it was done? :p&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 09:32:11 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;On this one I think it has been very easy to make and to solve  :) looking at how this was done.&lt;br /&gt;&lt;br /&gt;Sorry I did not see it before.&lt;br /&gt;&lt;br /&gt;Here is the FF Lionfish&lt;br /&gt;&lt;br /&gt;Although when trying to convert it to images instead of solid colors I still have a problem, but will see why this happens&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 09:47:45 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;and here is another example&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 09:49:46 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;BUT now is needed to give some kind of darkening and lighting shadows so it is not very flat&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 10:13:08 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Using the Blast Shadows by Threedee I have got this other version but all of them have uniform shadows and although it looks nice and good is not exactly the effect I would like&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_860195510');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 10:17:47 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;And the bottom FF Lionfish is better with the Blast Shaodws than the above one, at least from my point of view&lt;br /&gt;&lt;br /&gt;&lt;img src='http://filterforge.com/upload/forum/upload/540/Shattered%20mosaic.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_860195510' border='0' /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 15:55:58 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Sorry to ask a possible basic question, but why the Chaffs work very well when using solid fill, but when you uncheck it to have the full image source it does not work in the same way?&lt;br /&gt;&lt;br /&gt;I mean that the source image is not distorted to the shapes, like it happens when using solid fill, and i have tried also different settings and none of them work in the same way if solid fill is unchecked.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Mon, 30 Jul 2012 23:32:08 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Here's what your help docs say about &quot;solid fill&quot;&lt;br /&gt;&quot;If turned on, each noise &quot;cell&quot; is filled with a uniform random tint within the color range defined by the Noise and Background parameters.&quot;&lt;br /&gt;&lt;br /&gt;What you're really seeing when you disable &quot;solid fill&quot; is the noise pattern being applied on the background with the same color values at the same pixel areas. So your noise + background colors are the same, therefore there seems to be no difference but it's drawing the noise just as it would, you just can't see it.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Tue, 31 Jul 2012 03:28:03 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks Skybase for your answer, I also went to see the help docs to see if I was doing something wrong or there something I did not know, but seems that as you say well, it works only when the solid fills is activated, because if not not you can´t see the effect&lt;br /&gt;&lt;br /&gt;I asked this because I have seen that on other component (do not remember which one) I have seen that when unchecking the solid fill checkbox the effect keeps being the same but with the full real source image instead of one solid color, so I thought that in this one would work in the same way, but I was wrong.&lt;br /&gt;&lt;br /&gt;And as you have shown in the above example there are other ways to make this WITH the source image and not a solid color, although I still do not know how.&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_1187026396');</script>
<script>oForumForm['images_for_resize'].push('popup_508028049');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Fri, 15 Feb 2013 02:15:52 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;SpaceRay&lt;br /&gt;&lt;br /&gt;What would be really good is to be able to make the image FOLLOW and fill the shapes made by this filter with this setting shown here  &lt;br /&gt;&lt;br /&gt;So the image would be shattered and cut to fill the inside of the white shapes of this pattern shown here and have some kind of shading so it would look more something like a 3D style &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Skybase &lt;br /&gt;&lt;br /&gt;Like this?&lt;img src='http://www.filterforge.com/upload/forum/upload/4d9/likethis.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1187026396' border='0' /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;SpaceRay&lt;br /&gt;&lt;br /&gt;&lt;b&gt;OH, YES&lt;/b&gt;, this is what I was talking about. Be able to modify the source colors into the shapes. Well done!! Like it much &lt;br /&gt;&lt;br /&gt;Also would be good if possible to make the real photo image broken into pieces to fill the irregular shapes and not only the source colors &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Skybase&lt;br /&gt;&lt;br /&gt;&lt;img src='http://www.filterforge.com/upload/forum/upload/dc0/ofcourse.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_508028049' border='0' /&gt; &lt;br /&gt;&lt;br /&gt;lol want to give it a shot yourself and then should I just reveal how it was done?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Well, I have tried to make this SECOND example shown above here with the real photo images instead of plain colors, have not had any sucess as I do not know how to make it because if I uncheck the &quot;solid fill&quot; setting in the Chaffs component, all is lost  :( &lt;br /&gt;&lt;br /&gt;Please, Skybase could you be so kind to tell HOW you have done it?&lt;br /&gt;&lt;br /&gt;Thanks very much&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Fri, 15 Feb 2013 12:55:43 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Screenshot explains much of the way I worked on it. It's honestly kinda lazy.&lt;br /&gt;&lt;br /&gt;Notes: The rotate component uses the original chaffs component that was in Uberzev's filter. The colored chaffs component can also be used to derive rotation values, however you should desaturate it, but this is up to you. Two chaffs components should have the same variation value, otherwise they'll have different results.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Fri, 15 Feb 2013 17:46:35 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;WOW!! Thanks very much for explaining it and for making this screenshot and taking the time to explain it with texts and arrows, very good and well done.&lt;br /&gt;&lt;br /&gt;I will try it and see what I can do.&lt;br /&gt;&lt;br /&gt;Thanks again&lt;/p&gt;
</description>
</item>
<item><title>The Pursuit for Paths</title> 
		             <dc:creator>ThreeDee</dc:creator> 
		             <category></category> 
		             <pubDate>Fri, 15 Feb 2013 02:40:11 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9724</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9724</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 07 Apr 2012 13:50:54 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Fo the longest time, I've been wondering how to realize something resembling freehand paths in FF. Today I made my first real breakthrough in this. This simple little picture has a story to tell.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 07 Apr 2012 13:59:23 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;The story is that it is &quot;drawn&quot; from two (random) noise gradient inputs which give the X and Y coordinates OVER TIME for a single point. &lt;br /&gt;&lt;br /&gt;With the help little script that I put together, the location of this point over time is drawn all the same time onto the canvas.&lt;br /&gt;&lt;br /&gt;I will describe this in more detail in the near future.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sat, 07 Apr 2012 14:42:16 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;WOW!! This could be very interesting and and could be something very good for FF to have freehand paths!! &lt;br /&gt;&lt;br /&gt;Nice example you have put and amazing that this comes from two noise gradients inputs with a script and... the other things you have used&lt;br /&gt;&lt;br /&gt;I will wait for your more detailed description&lt;br /&gt;&lt;br /&gt;Put a note, do not disturb, GENIUS working  :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Sat, 07 Apr 2012 17:26:22 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I love how it's a closed path, and not just a random squigly line going nowhere.&lt;br /&gt;Genius at work indeed!  8)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 04:13:23 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;So here's how it works, in more detail:&lt;br /&gt;&lt;br /&gt;There are three inputs to the script, grayscale maps for X and Y and an integer slider for number of points.&lt;br /&gt;&lt;br /&gt;The grayscale maps are simply two noise gradients.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 04:16:54 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;The script tells how many samples to take from left to right on these gradients.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 04:18:36 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;And converts the gray values at these points to X and Y positions.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 04:19:53 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;With ten points that looks like random points, but as you increase the number of points, you start getting a line. Here is the same with 128 points.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 04:20:36 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;And finally, we connect the dots:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 04:23:06 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;When you change the variation, you get a different x and y points and a different resulting line.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 04:24:29 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;When you scale up the noise, you get simpler shapes.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 04:27:36 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;And smaller scale noise gives you more scribbles for your money.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 04:30:21 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;WOW!! Wonderful results!! Like very much how you have been able to make the scribbles from LOTS of points multiplied to form lines.  Great work.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 04:32:06 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Different types of noise inputs give different results. Block noise gives you more angular lines.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 04:49:26 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;A contrasty cells noise tends towards the edges...&lt;br /&gt;&lt;br /&gt;Due to the complexity of the line, I had to use 1000 points here, so it is pretty slow. Nevertheless, quite a charming little scribble.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 04:52:57 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;But wait, now the fun really starts: Two sine curves fed in as inputs gives you...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 04:59:23 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Did you guess what two sine curves blended together would make?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 05:07:21 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Or three?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 05:11:37 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Just add elevation gradient:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 05:17:55 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Never gonna look at a sine curve the same way again.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 05:49:17 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thought you would never ask. Yes, you can use it for surface filters as well, although render times rapidly get into the CPU- and patience-testing ranges.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;xirja&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 08:12:32 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;2d parametric curves in FF,  an excellent breakthrough!  Does it use a bomber and how are the points connected?  Is it possible to get variable line thickness as a function (x^2+y^2)^(1/2) like this:&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.youtube.com/watch?v=Md1q2oShx8A' target='_blank' rel='nofollow'&gt;http://www.youtube.com/watch?v=Md1q2oShx8A&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 09:05:26 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Does it use a bomber and how are the points connected? &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;No, it is a script that draws the points and the lines in between. Currently the lines are straight lines.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Is it possible to get variable line thickness as a function (x^2+y^2)^(1/2) like this: &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yes, this can be easily included in the script.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 09:10:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Here's the line drawing scrippet. &lt;br /&gt;&lt;br /&gt;The nice thing is that the script calculates the distance from the line and end points, so you can vary the line thickness by just thresholding the output.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 09:52:32 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Is it possible to get variable line thickness as a function (x^2+y^2)^(1/2)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Actually, no need to put it in the script, you can just threshhold it with a circular gradient:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 11:27:34 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Heh, the next step was easier than I expected...&lt;br /&gt;&lt;br /&gt;Not real fast in rendering, but it's the real thing.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 11:47:18 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Okay, so what to do with all this?&lt;br /&gt;&lt;br /&gt;Inputting actual X and Y values is quite tedious, for to make the above Bezier curve, you have to use 8 inputs, x and y values for all four points defining the curve. So that makes 8 sliders&lt;br /&gt;&lt;br /&gt;It seems the more sensible approach is to use the built-in noises as sources for x and y information.&lt;br /&gt;&lt;br /&gt;Or to program the values mathematically for such things as a fractal tree. Or for wireframed 3D objects. Or road maps between cities. Or tessalation patterns.&lt;br /&gt;&lt;br /&gt;Now off to figuring out how to filled those closed shapes...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 12:00:26 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Oh yeah, one more thing. The script output actually looks like the picture below. It gives the distance from the nearest line. Then it can be put through a threshold or other things to give the desired line weight etc.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 13:38:47 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;It wasn't too hard getting the fills. But now it is slow as molasses with both the line and the fill, so needs some optimization.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;lipebianc&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 13:51:23 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;This is &lt;b&gt;awesome&lt;/b&gt;, ThreeDee!!!!&lt;br /&gt;You're raising the bar in the filter construction territory! :ff: &lt;br /&gt;Thank you for your efforts, congratulations and respect for your achievement!&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_1992439696');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;xirja&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 15:01:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Totally!  Splines AND filling, oh yeah!  Looking forward to this one!  Also its nice to have opacity on the filling so that you can get gradations on the overlaps, such as:&lt;br /&gt;&lt;img src='http://www.xirja.com/M/Curves/2d3poly.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1992439696' border='0' /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 15:37:51 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;lipebianc wrote:&lt;br /&gt;This is awesome, ThreeDee!!!! &lt;br /&gt;You're raising the bar in the filter construction territory! &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I totally agree with lipebianc and I say the same as you.&lt;br /&gt;&lt;br /&gt;Congratulations for your work.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;xirja wrote:&lt;br /&gt;Totally! Splines AND filling, oh yeah!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;WOW! very well done and very beautiful geometric shape, good work.&lt;br /&gt;&lt;br /&gt;ALSO like very much all the beautiful and awesome works you have in your &lt;a href='http://www.xirja.com/wp/m1-curves/' target='_blank' rel='nofollow'&gt;website here&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 21:21:29 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Sweeet! Love the script, very simple but so awesomely done!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Kraellin&lt;/b&gt;, &lt;em&gt;Sun, 08 Apr 2012 21:58:45 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;3D, did you mean the line drawing scrippet to draw more than straight lines, cause that's all it seems to do?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Mon, 09 Apr 2012 04:39:17 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;3D, did you mean the line drawing scrippet to draw more than straight lines, cause that's all it seems to do?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yes, that scrippet demonstrates drawing just one line. I'm still trying to come up with a more sensible path-drawing filter that I could submit to the filter library. Maybe I'll make something out of the sine curve input version. That will include the multiple-line drawing script.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Mon, 09 Apr 2012 08:18:17 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I put the Sine-O-Graph filter in the queue, so you'll be able to dissect it. It is actually a fairly simple script.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;xirja&lt;/b&gt;, &lt;em&gt;Mon, 09 Apr 2012 08:56:10 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Actually, no need to put it in the script, you can just threshhold it with a circular gradient&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Oh right  :D , the power of threshhold!&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Or to program the values mathematically for such things as a fractal tree. Or for wireframed 3D objects. Or road maps between cities. Or tessalation patterns.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Many exciting possibilities there for sure.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;But now it is slow as molasses with both the line and the fill, so needs some optimization.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;And then I go and suggest opacity, bumping my graphic.  I'm really not a smart ass most days, really  :| &lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;ALSO like very much all the beautiful and awesome works you have in your website here&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Thanks SpaceRay, those were done in Mathematica (totally script and pixel based), so to be able to do something similar in Filter Forge is the tops.  I've already found FF to be far superior in doing density plots using the scripting component; in a pixel based environment it is painfully slow.&lt;br /&gt;&lt;br /&gt;...scalpel...check   8)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Mon, 09 Apr 2012 11:43:00 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;A slight modification, giving two separate inputs for x and y (line beginning points and line end points) gives us for instance this:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Mon, 09 Apr 2012 12:31:09 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Improved version of the same.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Mon, 09 Apr 2012 13:18:10 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;With color added.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Ghislaine&lt;/b&gt;, &lt;em&gt;Mon, 09 Apr 2012 15:07:55 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Great ! I love wireframed 3D objects. The last example is awesome. For more comprehension, because all this seems to me a bit complicated, can you post the settings for the last one when your Sine-O-Graph filter will be in the library, please ? :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Tue, 10 Apr 2012 12:06:05 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hi Ghislaine,&lt;br /&gt;&lt;br /&gt;The last example is a different version of the script, so you can't do it with the Sine-O-Graph. Not sure if this one is going to end up in the library.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Ghislaine&lt;/b&gt;, &lt;em&gt;Tue, 10 Apr 2012 14:17:21 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;3D wrote&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Not sure if this one is going to end up in the library. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please, it would be kind if you share this one with us. Hoping I will see this other wonder in the library. Thanks for sharing the version 1. :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Tue, 10 Apr 2012 14:19:15 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Revisiting the good old fractal tree, this time with actual lines and overlap...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Tue, 10 Apr 2012 14:45:48 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Of course you'd do that lol. Sounds like the next step is to go even above and beyond. L-Systems? hehe&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Tue, 10 Apr 2012 15:37:52 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Seems to be going in that direction. Meanwhile, here's the next step on the tree. now I seriously have to optimize the path drawing function, for it takes longer this way than without scripting!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;xirja&lt;/b&gt;, &lt;em&gt;Tue, 10 Apr 2012 16:45:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Oh dear, molasses.  I was hoping you were on some old machine.  As soon as 'BitMap Buffer' and 'Table Memory Limit' are feasible, then matrix math can be used and then no more 'while' function to step through right?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Wed, 11 Apr 2012 05:56:33 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Well, yes. But first, I have a different issue to deal with, which is that the script does the full math to calculate the distance of &lt;i&gt;every&lt;/i&gt; line segment at each point. If I first check whether the current point is within the bounding box of the path segment (including line weight) and skip those that aren't, I should be able to speed up the process considerably.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;CFandM&lt;/b&gt;, &lt;em&gt;Wed, 11 Apr 2012 08:39:45 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Some Great work ThreeDee.. :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 19 Apr 2012 02:21:16 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;ThreeDee... FYI:&lt;br /&gt;&lt;a href='http://blog.gludion.com/2009/08/distance-to-quadratic-bezier-curve.html' target='_blank' rel='nofollow'&gt;http://blog.gludion.com/2009/08/dista...curve.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Btw. I have a 570% faster version of your sine-o-graph running now :-) I will publish when ready&lt;/p&gt;
</description>
</item>
<item><title>Need help with a script :-)</title> 
		             <dc:creator>Sharandra</dc:creator> 
		             <category></category> 
		             <pubDate>Fri, 08 Feb 2013 14:47:11 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10107</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10107</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Tue, 26 Jun 2012 09:53:30 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;This is my first attempt at scripting in FF.&lt;br /&gt;&lt;br /&gt;I am trying to create a script that takes a source and resizes, duplicates and stacks it. &lt;br /&gt;I have figured out the resizing and duplicating part, but I can only get it to stack the shapes from the center towards a corner instead of on top of each other.&lt;br /&gt;And yes, I fail at math :P&lt;br /&gt;&lt;br /&gt;If anyone has any idea what I´m doing wrong and how to make it work, I´d much appreciate your help :-)&lt;br /&gt;&lt;br /&gt;Thx, &lt;br /&gt;Shar&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Tue, 26 Jun 2012 10:00:29 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;[CODE]function prepare()&lt;br /&gt;	-- This function is called once,&lt;br /&gt;	-- before the rendering begins.&lt;br /&gt;	-- Use it for querying non-mapped&lt;br /&gt;	-- inputs and precalculation.&lt;br /&gt;	opa = get_slider_input(OPACITY)&lt;br /&gt;	count = get_intslider_input(REPEAT)&lt;br /&gt;	hdr = false&lt;br /&gt;	if(get_checkbox_input(REVERSE)) then&lt;br /&gt;		rev = true&lt;br /&gt;	else&lt;br /&gt;		rev = false&lt;br /&gt;	end&lt;br /&gt;	if(get_checkbox_input(FADE)) then&lt;br /&gt;		fade = true&lt;br /&gt;	else&lt;br /&gt;		fade = false&lt;br /&gt;	end&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	-- Image generation code goes here.&lt;br /&gt;	dir = get_sample_grayscale(x, y, DIRECTION)&lt;br /&gt;	spacing = get_sample_grayscale(x, y, SPACING)&lt;br /&gt;	ofx = get_sample_grayscale(x, y, OFFX)&lt;br /&gt;	ofy = get_sample_grayscale(x, y, OFFY)&lt;br /&gt;	r, g, b, a = get_sample_map(x + ofx, y + ofx, IMAGE)&lt;br /&gt;	ofx = get_sample_grayscale(x, y, OFFX)&lt;br /&gt;	ofy = get_sample_grayscale(x, y, OFFY)&lt;br /&gt;	local opacity = opa&lt;br /&gt;	density = 1&lt;br /&gt;	i = 0&lt;br /&gt;	if fade then&lt;br /&gt;		fad = 0.1&lt;br /&gt;	else&lt;br /&gt;		fad = 0&lt;br /&gt;	end&lt;br /&gt;&lt;br /&gt;	while (i &amp;lt; count ) do&lt;br /&gt;		ri,gi,bi,ai = get_sample_map((x  * density )+ ofx , (  y  * density)+ ofy, IMAGE)&lt;br /&gt;		r, g, b, a = blend_normal   (r, g, b, a, ri, gi, bi, ai, opacity - fad, hdr)&lt;br /&gt;		if (rev)	then	&lt;br /&gt;			density = density + spacing&lt;br /&gt;		else &lt;br /&gt;			density = density - spacing&lt;br /&gt;		end&lt;br /&gt;		i = i + 1&lt;br /&gt;		if fade then&lt;br /&gt;		fad = fad + 0.1&lt;br /&gt;		end&lt;br /&gt;	end;&lt;br /&gt;	return r, g, b, a&lt;br /&gt;end;[/CODE]&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Tue, 26 Jun 2012 10:50:13 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Is there a way for a script to know the image dimentions?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 27 Jun 2012 00:58:19 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;try &lt;br /&gt;[CODE]...&lt;br /&gt;ri,gi,bi,ai = get_sample_map((x - 0.5)  * density + ofx + 0.5, (y - 0.5)  * density + ofy + 0.5, IMAGE)&lt;br /&gt;...[/CODE]&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Wed, 27 Jun 2012 09:56:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Yay! :D Thank you so much Sphinx!  :love:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Wed, 27 Jun 2012 10:46:45 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Works like a charm now :-)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Thu, 28 Jun 2012 01:20:18 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I'm sorry, but I can't reproduce that image you posted... What's your secret?&lt;br /&gt;Also, I can't seem to get the direction slider do anything... What am I missing?&lt;br /&gt;&lt;br /&gt;Thanks!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Thu, 28 Jun 2012 07:06:07 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;The image was done with my new filter &lt;a href='https://www.filterforge.com/filters/10769.html' target='_blank' rel='nofollow'&gt;Bubble fun&lt;/a&gt;, thats why you can´t reproduce it with the script ;-)&lt;br /&gt;And the direction slider currently does nothing, it was left over from trying to figure out how to change the stacking direction :)&lt;br /&gt;I want to make some more changes to the script, will post an update then.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Thu, 28 Jun 2012 07:09:28 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Ah, OK.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Thu, 28 Jun 2012 14:12:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;while the stacking part works now, and I can offset it, or have it centered now, I´m still having issues with the script.&lt;br /&gt;&lt;br /&gt;Above certain values for repeating and spacing it starts multiplying the whole stack instead the image, which leads to a kaleidoscope like effect. While that is interesting and fun, it´s not what I really wanted. And I have no clue why :-(&lt;br /&gt;&lt;br /&gt;Sphinx, or anyone else, do you have any idea why that happens and could you try to explain it to me?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Thu, 28 Jun 2012 16:03:57 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I think I know WHY this happens, I just don't know how to avoid it.&lt;br /&gt;The reason is that whenever FF goes out of the bounds of the image, it mirrors the image as a filler.  You can see the same thing happen when you use the scale or rotate components.&lt;br /&gt;&lt;br /&gt;I suppose in your script, when the offset is too great, FF mirrors what it already has inside the image bounds, and duplicates it on top of what you have, as if this is an actual part of the image.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Thu, 28 Jun 2012 20:54:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Yeah, I think that´s exactly the problem. I had a play with the scale component and it does the same thing. I tricked it by putting a frame around the scaled imaged, but that has it´s limits too.&lt;br /&gt;&lt;br /&gt;I hope they add some components for effects like this in the future.&lt;br /&gt;Juggling 50 components just for one simple effect is annoying.&lt;br /&gt;&lt;br /&gt;I can do this in Photoshop in like 30 seconds by just duplicating and scaling the layers, and record an action for future use. It´s even faster than waiting for FF to render it :P &lt;br /&gt;No need to create a filter for it I guess. &lt;br /&gt;Apart from the pleasure to create something for other people to have fun with :-)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Fri, 29 Jun 2012 09:08:31 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Multiplying scales, adding and substracting offsets the image, what makes it rotate?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Fri, 29 Jun 2012 14:31:00 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Sorry, didn't understand the question...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Fri, 29 Jun 2012 14:48:14 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Sharandra wrote:&lt;br /&gt;&lt;br /&gt;I can do this in Photoshop in like 30 seconds by just duplicating and scaling the layers, and record an action for future use. &lt;b&gt;It´s even faster than waiting for FF to render it &lt;br /&gt;&lt;/b&gt;  :D &lt;br /&gt;No need to create a filter for it I guess. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well, yes, is true that you can do it and make it much better in Photoshop and much faster than in FF, and get the effect as you want, and do not need a FF filter for this and I agree...&lt;br /&gt;&lt;br /&gt;...BUT what I think would be interesting is to be able to customize and define the effect in many different ways and to be able to multiply the image as required and as many or few as you want, and change the orientation and offset and some other settings that would not be possible to make in a Photoshop Action.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Fri, 29 Jun 2012 17:41:17 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Sorry, didn't understand the question... &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;ri,gi,bi,ai = get_sample_map(x,y IMAGE) &lt;br /&gt;&lt;br /&gt;Adding or subtracting from x and y offsets the image, multiplying scales it. As far as I could figure it out.&lt;br /&gt;How can you add a rotation? For example the image around its center, or the duplicates in my script around the center.&lt;br /&gt;Dunno if that makes it any clearer.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;...BUT what I think would be interesting is to be able to customize and define the effect in many different ways and to be able to multiply the image as required and as many or few as you want, and change the orientation and offset and some other settings that would not be possible to make in a Photoshop Action. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I agree. That was the reason I started creating this script anyway, to have a customizable component that does this which we can use in our filters.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Fri, 29 Jun 2012 17:54:38 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Yep that makes your question much clearer.  now we need Sphinx to answer it :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Sat, 30 Jun 2012 20:58:09 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I managed to get rid of the unwanted repetitions. It was the spacing settings that caused it. It can only be between 0.01 and 0.04 to work, so I just set it to 0.04 and got rid of the input. Also apparently 30 is the maximum for repetitions for some reason.&lt;br /&gt;Still got some things to fix, but here is an updated version for now. I added in some example shapes, play around with it and try out adding your own :-)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Sat, 30 Jun 2012 21:00:00 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;:-)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Sat, 30 Jun 2012 21:01:16 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;;-)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Sat, 30 Jun 2012 21:11:56 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Tiles&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Sun, 01 Jul 2012 02:21:00 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Looking good!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 01 Jul 2012 02:41:14 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Sharandra wrote&lt;br /&gt;&lt;br /&gt;I managed to get rid of the unwanted repetitions. It was the spacing settings that caused it. It can only be between 0.01 and 0.04 to work, so I just set it to 0.04 and got rid of the input. Also apparently 30 is the maximum for repetitions for some reason. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;very good that you found the reason of the unwanted repetitions and have been able to fix it. I like the results and looks good.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Sharandra wrote&lt;br /&gt;I added in some example shapes, play around with it and try out adding your own&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Good idea to add this added shapes and is better for looking at the results and get this nice ball and rings designs. Like how you have done it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The one I like more is the example shown below, if it would be possible to replace a image with transparency in the place of the balls shown and with the same spacing, it would be really great!!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Thanks very much for working on this and you are doing it very well.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Sun, 01 Jul 2012 07:10:47 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Well the spacing setting is fixed, but you could just give your original image more space around it to increase the spacing.&lt;br /&gt;&lt;br /&gt;lifesaver with transparency fed into kaleidoscope&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Sun, 01 Jul 2012 07:13:07 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;with fade and reverse checked&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Mon, 28 Jan 2013 16:11:05 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Ok, need help again:&lt;br /&gt;&lt;br /&gt;Lets say I have a free ellipse. Now I want that to always be for example in the center of the image, no matter what size it is. &lt;br /&gt;How can I convert the OUTPUT_HEIGHT, OUTPUT_WIDTH values to values the offset wants?&lt;br /&gt;&lt;br /&gt;Edit: this is what I got so far&lt;br /&gt;&lt;br /&gt;[CODE]function prepare()&lt;br /&gt;	&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;d = ((OUTPUT_HEIGHT/OUTPUT_WIDTH)/2 - 0.5 )&lt;br /&gt;&lt;br /&gt;return d, d, d, 1&lt;br /&gt;end;[/CODE]&lt;br /&gt;&lt;br /&gt;My problem is that I can get it to work either if the image is higher than wide, or wider than high, but not at the same time.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Mon, 28 Jan 2013 17:46:15 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Here is an example of what I´m trying to do:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Thu, 07 Feb 2013 11:12:29 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;You probably need an IF statement that does a different calculation depending on whether OUTPUT_HEIGHT is bigger or smaller than OUTPUT_WIDTH.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Thu, 07 Feb 2013 11:17:29 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sharandra wrote:&lt;/b&gt; How can you add a rotation? For example the image around its center, or the duplicates in my script around the center. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Sine, Cosine, ArcSine and ArcCosine can be used to get linear coordinates converted to rotation angles and vice versa. You have to calculate them from the center point (.5,.5) to get the rotation around center.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Fri, 08 Feb 2013 03:10:19 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;ThreeDee wrote:&lt;/b&gt;&lt;br /&gt;You probably need an IF statement that does a different calculation depending on whether OUTPUT_HEIGHT is bigger or smaller than OUTPUT_WIDTH. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Doh! Simple! Why didn´t I think of that?! &amp;gt;.&amp;lt; Thanks Threedee, you´re a star! :D&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;b&gt;ThreeDee wrote:&lt;/b&gt;&lt;br /&gt;Sine, Cosine, ArcSine and ArcCosine can be used to get linear coordinates converted to rotation angles and vice versa. You have to calculate them from the center point (.5,.5) to get the rotation around center. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Too much Math in one sentence (no offence ment).:P But thanks :-) Good to know anyway, even tho I have no clue how to calculate that :S&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_967136226');</script>
<script>oForumForm['images_for_resize'].push('popup_1283879028');</script>
<script>oForumForm['images_for_resize'].push('popup_1095743009');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;Indigo Ray&lt;/b&gt;, &lt;em&gt;Fri, 08 Feb 2013 11:25:43 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;You have to use polar coordinates, Shar. &lt;br /&gt;&lt;img src='http://upload.wikimedia.org/wikipedia/commons/b/b9/Point_in_Polar_coordinates.PNG'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_967136226' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;You already know X (horizontal position) and Y (vertical position).&lt;br /&gt;To convert to polar coordinates:&lt;br /&gt;&lt;img src='http://mathinsight.org/site_media/image/polar_coordinates_cartesian.png'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1283879028' border='0' /&gt;&lt;br /&gt;&lt;i&gt;X = r*cos(theta)&lt;br /&gt;Y = r*sin(theta)&lt;/i&gt;&lt;br /&gt;where &lt;b&gt;r&lt;/b&gt; = &lt;b&gt;r&lt;/b&gt;adial distance from the center&lt;br /&gt;and &lt;b&gt;theta&lt;/b&gt; = angle around the center&lt;br /&gt;&lt;br /&gt;If you want to rotate around the center, you keep &lt;b&gt;r&lt;/b&gt; the same but you shift &lt;b&gt;theta&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Hmmm... I should assign you some homework...by next Friday, replicate all of these graphs: ;) &lt;br /&gt;&lt;img src='http://www.mathamazement.com/images/Pre-Calculus/06_Additional-Topics-in-Trigonometry/06_04_graphs-of-polar-equations/polar-roses.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1095743009' border='0' /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Fri, 08 Feb 2013 14:47:11 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Oh wow, thx Indigo! You´re a star aswell! :-) &lt;br /&gt;I´ll give it a try when I´m finished with my other stuff!! &lt;br /&gt;Not sure about the homework, but I think I can do a simple rotation based on your explanation. :D&lt;/p&gt;
</description>
</item>
<item><title>Sum (aka anti-derivative) Script!</title> 
		             <dc:creator>Betis</dc:creator> 
		             <category></category> 
		             <pubDate>Tue, 11 Dec 2012 06:41:51 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10713</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10713</guid>
		             <description><script>oForumForm['images_for_resize'].push('popup_158890995');</script>
<script>oForumForm['images_for_resize'].push('popup_1242844196');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Mon, 10 Dec 2012 00:31:29 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Check it out!&lt;br /&gt;&lt;br /&gt;Here's the result of my sum script. it takes each pixel and adds up each pixel behind it. Of course I can't actually access pixel values because of the procedural nature, so I have to have a resolution slider that checks a percentage of the image back for each interval (kind of like percentage pixels).&lt;br /&gt;&lt;img src='https://lh5.googleusercontent.com/-0C4Vmqv8sfk/UMVxwzhApmI/AAAAAAAAA5M/8MTkhosaWr0/s600/sum1.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_158890995' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;Here I have taken the derivative of the result giving an (artifacted) original image!&lt;br /&gt;&lt;br /&gt;&lt;img src='https://lh5.googleusercontent.com/-rnYlOYdQ2tM/UMVxxf1mTZI/AAAAAAAAA5U/Ds3RT3nSH_M/s600/sum_anti1.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1242844196' border='0' /&gt;&lt;br /&gt;&lt;br /&gt; :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Mon, 10 Dec 2012 00:49:50 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;motion blurrrrr!!!!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Mon, 10 Dec 2012 00:53:11 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hey wait a minute, this script can be used as an simple transform iterator.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Mon, 10 Dec 2012 01:43:38 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;True indeed, however its speed at this stage is unusable.&lt;br /&gt;&lt;br /&gt;Post some stuff you come up with!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Mon, 10 Dec 2012 01:45:28 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;holy crap does this mean you can use derivatives to undo real life motion blur (simple camera shake anyway)? oh my god next filter&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Mon, 10 Dec 2012 03:35:06 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;You basically need motion blur to be strictly linear and move in also a linear fashion with no ease in or out. XD&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Indigo Ray&lt;/b&gt;, &lt;em&gt;Tue, 11 Dec 2012 00:25:34 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Cool idea, and it works decently, but it's sooooooo slow. Comparatively, FF's built-in &quot;derivative&quot; component is very fast...I wonder why? What's the secret?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Tue, 11 Dec 2012 00:33:43 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Well the derivative component only needs two samples, whereas the sum script needs every sample until that pixel, racking up an enormous amount of loops and processing&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 11 Dec 2012 01:47:37 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I used that principle in my &lt;a href='http://www.filterforge.com/filters/9988.html' target='_blank' rel='nofollow'&gt;variable blur&lt;/a&gt;.&lt;br /&gt;Here is a boiled down version (filter does nothing, open up and see why :-D)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Tue, 11 Dec 2012 02:07:08 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;woah! I see a little black 1-pixel edge on the right and bottom side though  ;) &lt;br /&gt;&lt;br /&gt;I see a little now how inujima's summed lookup table magic did fast variable blur, but still not completely! Math is so delicious&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_101298816');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;inujima&lt;/b&gt;, &lt;em&gt;Tue, 11 Dec 2012 06:41:51 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt; I see a little black 1-pixel edge on the right and bottom side though   &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;To be precise, it is offset 0.5 pixel. The cause of appearing of this black edge is that Blur radius is measured not from a center point of pixel but from a edge of the center pixel.&lt;br /&gt;&lt;img src='http://img341.imageshack.us/img341/2946/62297882.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_101298816' border='0' /&gt;&lt;br /&gt;It needs Script component to get pixel size to fix this offset. (I have no idea to get pixel size without Script component.)&lt;/p&gt;
</description>
</item>
<item><title>Compilation of Random Space Filling Tiling articles for FF Filters</title> 
		             <dc:creator>SpaceRay</dc:creator> 
		             <category></category> 
		             <pubDate>Tue, 11 Dec 2012 04:21:46 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10223</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10223</guid>
		             <description><script>oForumForm['images_for_resize'].push('popup_1676153927');</script>
<script>oForumForm['images_for_resize'].push('popup_1708523854');</script>
<script>oForumForm['images_for_resize'].push('popup_1918491044');</script>
<script>oForumForm['images_for_resize'].push('popup_1880683170');</script>
<script>oForumForm['images_for_resize'].push('popup_948490680');</script>
<script>oForumForm['images_for_resize'].push('popup_1139341799');</script>
<script>oForumForm['images_for_resize'].push('popup_1949932715');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 29 Jul 2012 04:39:04 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I have made this other thread &lt;a href='http://www.filterforge.com/forum/read.php?FID=10&amp;TID=10199' target='_blank' rel='nofollow'&gt;How would you make this variable dots pattern in FF?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src='http://paulbourke.net/texture_colour/randomtile/extra1s.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1676153927' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src='http://paulbourke.net/texture_colour/randomtile/donuts.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1708523854' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;uberzev wrote:&lt;br /&gt;&lt;br /&gt;Would need to be a custom script... &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;So I have been looking for this and I do not have the experience, knowledge or skills to make any kind of scripts to be able to do this so I decided to put here a compilation of the information I have found if it could help and be interesting and useful to someone&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Compilation of Random Space Filling Tiling articles for FF Filters&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The main and very useful and great link given by uberzev&lt;br /&gt;&lt;br /&gt;&lt;a href='http://paulbourke.net/texture_colour/randomtile/' target='_blank' rel='nofollow'&gt;Random space filling tiling of the plane&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;all the above examples shown comes from this website&lt;br /&gt;____________________________________________________&lt;br /&gt;&lt;br /&gt;Paul Bourke's &quot;tiling of the plane&quot; work was inspired by John Shier, a computer artist who integrates random numbers in his creations.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;http://john-art.com/&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src='http://john-art.com/images/random_fractal_flower_tiling.png'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1918491044' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;On page 5 of his Gallery you can find lots of examples showing Random Space Filling&lt;br /&gt;&lt;br /&gt;&lt;a href='http://john-art.com/gallery5.html' target='_blank' rel='nofollow'&gt;Gallery 5 examples&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;________________________________________________________&lt;br /&gt;&lt;br /&gt;AND is also very interesting this 10 Page article made in PDF from Paul Bourke and Jhon Shier explaining all this topic of Random Space Filling&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href='http://paulbourke.net/texture_colour/randomtile/paper.pdf' target='_blank' rel='nofollow'&gt;Filling Space with Random Fractal Non-Overlapping Simple Shapes&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src='http://www.filterforge.com/upload/forum/upload/b2a/Space%20filling%20circles.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1880683170' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;Fr om the Processing Software website&lt;br /&gt;&lt;br /&gt;&lt;a href='http://processing.org/discourse/beta/num_1233225599.html' target='_blank' rel='nofollow'&gt; Space Filling Algorithm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This has two interesting links to &lt;a href='http://www.complexification.net/gallery/machines/boxFitting/' target='_blank' rel='nofollow'&gt;BOX FITTING APPLET&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A region of space is filled through exhaustive placement of slowly expanding boxes&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is very interesting is that this is an working applet wh ere you can make your own BOX FITTING designs!&lt;/b&gt; Do not miss the opportunity to try it yourself&lt;br /&gt;&lt;br /&gt;&lt;img src='http://www.complexification.net/gallery/machines/boxFitting/boxFittingA0000.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_948490680' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;and with gradient colors&lt;br /&gt;&lt;br /&gt;&lt;img src='http://www.complexification.net/gallery/machines/boxFitting/boxFittingPRN.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1139341799' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;PACKING ALGORITHM &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Another name for Space Filling can be Packing Algorithm&lt;br /&gt;&lt;br /&gt;&lt;a href='http://visiblearchive.blogspot.com.es/2009/01/packing-them-in.html' target='_blank' rel='nofollow'&gt;Packing Algorithm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src='http://www.filterforge.com/upload/forum/ffd/Space%20filling%20squares.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1949932715' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;If I find more I will put it here&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Mon, 26 Nov 2012 10:50:27 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Please, Anyone could have any other information, link, software or way to do this WITHOUT having to program it, without scripting, or code it myself?&lt;br /&gt;&lt;br /&gt;Or if someone else have done it already and is available to just use it in some way.&lt;br /&gt;&lt;br /&gt;AND more important for me, that IS AVAILABLE for Windows 7, as I have seen one that is only for MacOS&lt;br /&gt;&lt;br /&gt;I could use Photoshop or Illustrator in Windows 7 (if there could be possibly any plugin or addon)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Mon, 26 Nov 2012 11:35:29 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Studio Artist 4. &lt;br /&gt;&lt;br /&gt;It's a VERY VERY specific piece of feature you're looking for so it's mildly hard to find them especially at the level of power you're looking for. Just as a hint on looking for things like this, it could be achieved via various means as well. I tried using a physics engine to make circles spread and self-organize. It's pretty cool. Did that in Maya. :)&lt;br /&gt;&lt;br /&gt;I sense you're desperate after seeing you've bumped 3 or 4 threads on the same matter. That's probably not the best of forum behaviors in general. Don't let your feelings run you doing that. One post should be enough for a question, otherwise it starts becoming ridiculous, like you're begging for attention. Not good. :p And hey, I do business with art and I can really say the same rules apply. ;)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Tue, 11 Dec 2012 04:21:46 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks for your comment and suggestion of Studio Artist 4, I have tried and it seems that it could be possible to make but still I am not sure how to do it right as I am very beginner in this sofware and is a complex one to make special effects.&lt;br /&gt;&lt;br /&gt;I am not desperate for this  :D , but would like to be able to have a way to make this. Sorry to have bumped 3 or 4 threads about this, but they had different things, I will try to not make it if I can. Sorry for showing and seems and feeling that I am begging for this. &lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Just as a hint on looking for things like this, it could be achieved via various means as well. I tried using a physics engine to make circles spread and self-organize. It's pretty cool.Did that in Maya.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;What various means? &lt;br /&gt;&lt;br /&gt;What Physics engine?&lt;br /&gt;&lt;br /&gt;and how to make the circles spread and self-organize?&lt;br /&gt;&lt;br /&gt;Is this only in Maya? only as 3D ? and what about a 2D version that is not in a very expensive software?&lt;br /&gt;&lt;br /&gt;Thanks very much for your help and your comments that are appreciated and right&lt;/p&gt;
</description>
</item>
<item><title>AA_Zones to RGB?</title> 
		             <dc:creator>Crapadilla</dc:creator> 
		             <category></category> 
		             <pubDate>Fri, 23 Nov 2012 13:16:32 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10518</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10518</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Thu, 20 Sep 2012 04:26:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;n00b question:&lt;br /&gt;&lt;br /&gt;Is there a way to convert the incoming aa_zones of a source map input to RGB via &lt;i&gt;Map Script&lt;/i&gt;?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Thu, 20 Sep 2012 05:22:00 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Why do you need this? If for use in filters, then I wouldn't recommend that. AAZones are a purely internal feature, its implementation may vary from version to version and from patch to patch, so there's no guaranteed consistency to its output.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Thu, 20 Sep 2012 05:56:04 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Well, I was looking at the RGB renderings of AAZones of various filters recently, and it occurred to me that many of these these look a lot like color-coded Region-IDs.&lt;br /&gt;&lt;br /&gt;(...probably because they are. ;))&lt;br /&gt;&lt;br /&gt;If we could somehow pull this data into the RGB space of a &lt;i&gt;Map Script&lt;/i&gt;, then it should be possible to isolate those regions by color, compute their bounding boxes and centers, and generate some form of &lt;b&gt;region-based gradients&lt;/b&gt; off of that.&lt;br /&gt;&lt;br /&gt;It's probably a whole lot more complicated then that, but it's just an idea I've been speculating about, wondering if this would be possible at all.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(You know, Dilla loves the &lt;a href='http://www.filterforge.com/forum/read.php?FID=9&amp;TID=1129&amp;MID=113895#message113895' target='_blank' rel='nofollow'&gt;region-based gradients&lt;/a&gt;)&lt;/i&gt; :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Thu, 20 Sep 2012 07:10:05 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;compute their bounding boxes and centers.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;That's where the main difficulty lies. &lt;br /&gt;&lt;br /&gt;To discover the contour of an implicitly defined shape (implicitly means &quot;defined as a function, not as a polygon or bitmap&quot;) you have to sample it, starting from point within the shape and gradually moving outwards, towards the shape edges.&lt;br /&gt;&lt;br /&gt;Imagine trying to dicover the contour of a complex shape painted on a graph paper, while blindfolded. You have a pencil that you can poke the shape with, and a friend that tells you whether you hit the shape with your last poke or not, and if you did hit it, he also tells you the hit coordinates (that's the reason why we're using graph paper). You can then use these coordinates to build a contour, a map, a bounding box or whatever other kind of model you're constructing.&lt;br /&gt;&lt;br /&gt;Imagine how many pokes you would need in order to discover a complex shape, for example a chinese hieroglyph, with sufficient precision.&lt;br /&gt;&lt;br /&gt;And that's just the first step, sampling. Next you will need to store the discovered contour in memory so that you don't have to rediscover it every time you receive a get_sample() call.&lt;br /&gt;&lt;br /&gt;To recap, a quality implementation of this is far from trivial.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Thu, 20 Sep 2012 07:32:24 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Update: the blindfolded shape poking analogy is slightly inaccurate: it implies that poke coordinates are random and cannot be controlled by you. A better analogy would be as follows: you tell the poke coordinates to a friend and he checks whether or not they lie within the shape. This way you can select the coordinates for your next poke on the results of your previous pokes.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Thu, 20 Sep 2012 07:57:50 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Ok, so my guess is: 'AA_zones -&amp;gt; RGB' is impossible (i.e. not implemented), because it wasn't intended to be used in scripts at all.&lt;br /&gt;&lt;br /&gt;I understand that we can't even begin to tackle &lt;b&gt;region-based gradients&lt;/b&gt; in an efficient manner without a working &lt;i&gt;Bitmap Script&lt;/i&gt; component that delivers a 'bitmap signal' of the AA_zone data that is defined implicitly by the preceding filter tree.&lt;br /&gt;&lt;br /&gt;So I'm going to rephrase my initial question:&lt;br /&gt;&lt;br /&gt;Assuming we had a &lt;i&gt;Bitmap Script&lt;/i&gt; component in FF, would it make sense to make this AA_zone 'region-ID' data accessible to bitmap scripts? After all, isn't this data basically available/delivered 'for free'?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Thu, 20 Sep 2012 09:04:35 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Ok, so my guess is: 'AA_zones -&amp;gt; RGB' is impossible (i.e. not implemented), because it wasn't intended to be used in scripts at all.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yes, with an important correction: it wasn't intended to be used in scripts for producing the RGB output, for reasons I stated above (in the second post of this thread.)&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Assuming we had a Bitmap Script component in FF, would it make sense to make this AA_zone 'region-ID' data accessible to bitmap scripts? After all, isn't this data basically available/delivered 'for free'?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;The data would be accessible to bitmap scripts, because the scripts can be 'mixed', not purely bitmap-based, but I still wouldn't recommend using AA Zones in RGB output.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Thu, 20 Sep 2012 09:25:32 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Well, that concludes our speculation time for today then.  ;)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Sat, 20 Oct 2012 14:14:33 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;On a similar note: what about outputting an RGB of the AA zones just because it looks cool? like an AA-Zone component? (unless that's what dilla was asking in the first place)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Fri, 23 Nov 2012 13:16:32 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Betis, it does look cool, but we can't guarantee that it will look the same way between different versions of components, rendering engine etc. See my replies on this above.&lt;/p&gt;
</description>
</item>
<item><title>Slider for multi blend</title> 
		             <dc:creator>Carl</dc:creator> 
		             <category></category> 
		             <pubDate>Wed, 19 Sep 2012 03:49:38 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10089</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10089</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Carl&lt;/b&gt;, &lt;em&gt;Thu, 21 Jun 2012 21:16:59 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;What I am after is to be able to use a multi-blend with a normal slider. So by using the slider it moves through the different layers [ the same as the single blend component where you add a slider ]. Tried just changing the interslider in the script to a slider, didn't think it would be that simple LOL ...... but surely this is something simple to change? Any help appreciated :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Fri, 22 Jun 2012 01:25:06 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;would you be interested in a non-scripted solution?  :D&lt;br /&gt;&lt;br /&gt;Note that the current filter build only works for 7 inputs. There is a slider there but to change it you must also build the filter to accept 3 instead of 7. for example there are 5 if-then nodes, so if you only wanted 5 inputs, that would go down to 3 (not really sure why there are less, I think it's because of some options condensing through logic or some cool thing like that).&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Carl&lt;/b&gt;, &lt;em&gt;Fri, 22 Jun 2012 03:04:12 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Betis wrote:&lt;/b&gt;&lt;br /&gt;would you be interested in a non-scripted solution? &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;no ..... how dare you even suggest it :D &lt;br /&gt;&lt;br /&gt;Very cleverly worked out, I had been stuffing around with a series of blends for a while now and nothing worked, not even close :( Don't know how you managed to think it out but certainly glad you did.&lt;br /&gt;&lt;br /&gt;Thankyou Betis, this opens up lots of possibilities 8)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Fri, 22 Jun 2012 03:36:10 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;hehe  :D &lt;br /&gt;&lt;br /&gt;I had some inspiration from some gradual blur filter experiments from a long time ago. I must say it's not terribly efficient in space or processing power as I'm sure ThreeDee can do it in 7 nodes or less (hint: challenge :!: )&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Fri, 22 Jun 2012 04:13:31 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I'm sorry, but can you explain to me what exactly are you trying to achieve?&lt;br /&gt;I didn't really understand your question on the first post, and the 2 snippets didn't make it any cleasrer to me  :|&lt;br /&gt;&lt;br /&gt;Oh, and please try not to use too many big words  :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Fri, 22 Jun 2012 05:39:38 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Morgantao wrote:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;I'm sorry, but can you explain to me what exactly are you trying to achieve? &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I didn't really understand your question on the first post, and the 2 snippets didn't make it any cleasrer to me&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;YES, I agree with you and well said, now we are two with the same question and that do not know what is the real point for making this.&lt;br /&gt;&lt;br /&gt;I´m sorry that I do not understand either, but I do not see why this could be important or useful.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Sat, 23 Jun 2012 08:10:01 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;lol its preeeetyyy simple.&lt;br /&gt;&lt;br /&gt;What you see here is a blend between multiple images accessed via 1 slider. Unlike the typical blend component which accepts &lt;br /&gt;only 2 images at a time, this blend allows to blend through multiple images at a time. The key is to be able to access all those images while blending each one at a time, through 1 slider instead of using multiple. &lt;br /&gt;&lt;br /&gt;Betis' example's pretty perplexing. hehe&lt;br /&gt;&lt;br /&gt;There's been really no way to do this by default in FilterForge alone.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Mongoose King&lt;/b&gt;, &lt;em&gt;Sat, 23 Jun 2012 08:47:03 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Here's a simpler way using a multiblend, should be easier to adjust where the blending in of each layer starts and ends.  Could be swapped to work for separate blend components too.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Mongoose King&lt;/b&gt;, &lt;em&gt;Sat, 23 Jun 2012 12:12:09 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;individual blends with mode slider....&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Sat, 23 Jun 2012 16:22:45 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Carl, if I understand correctly, what you were going for is using Normal blend mode to blend between 1 and 2, or 2 and 3, or 3 and 4 (and so on) with just one slider, right?&lt;br /&gt;&lt;br /&gt;Mongoose, I guess in your examples &quot;Blendywoos&quot; could be also named &quot;Depth&quot;?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Mongoose King&lt;/b&gt;, &lt;em&gt;Sat, 23 Jun 2012 18:09:11 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I dunno if depth is any better label than blendywoos.  I suppose if you think of multiblend as being a stack of layers on top of each other then it could kind of be the depth.  &lt;br /&gt;&lt;br /&gt;It's more like 'serial opacity', as the first seventh of the slide is the opacity of the first layer, then the second seventh is the opacity of the second layer, etc..&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Sat, 23 Jun 2012 18:45:29 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Yeah, that's what I ment.  'Serial opacity' does sound more accurate  :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Mongoose King&lt;/b&gt;, &lt;em&gt;Sat, 23 Jun 2012 19:00:01 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;:)  I still think blendywoos is the best name for it.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Carl&lt;/b&gt;, &lt;em&gt;Thu, 28 Jun 2012 22:12:37 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Mongoose King - noice :) again clever solution 8) &lt;br /&gt;&lt;br /&gt;One that would allow different blending modes between the different input would be the ultimate goal ;)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Sun, 16 Sep 2012 02:20:16 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I just remembered this thread. I wanted a slider controlled multiblend for ages aswell. Now with the new group features I decided to make one and thought I add it here in case someone wants it. There are actually 2 groups.&lt;br /&gt;&lt;br /&gt;The first one is simply a multiblend where you can turn on the layers one after the other and control opacity individually. The second one additionally has blendmodes.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Sun, 16 Sep 2012 04:23:08 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Very good, Shar!&lt;br /&gt;Now, if only we had dropdown menus for blend mode...  ;)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Gene S Morgan&lt;/b&gt;, &lt;em&gt;Mon, 17 Sep 2012 22:19:14 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Shar ... I have a bit of a question .... I have always wanted a true multiblend and really appreciate your contribution ... I cannot check it out because I don't do beta .... But what I was wondering is, does combining blends together slow the whole filter down? I use lots of blends in my filters and I have found that at a certain point the filters starts to slow down in rendering ... Please forgive me for hating slow filters and I love your Dab and Swattle (I spelled that wrong) filter but I have only used it a couple of time because I'm old and I fear I will die before it renders ... Sorry that is poor humor .... It seems to me that it would better if FF came up with a good multi blend node. I may be missing something with the new FF4 features, but I have trouble understanding how grouping a bunch of nodes cannot lead to poor overall performance .... Sorry for what might be a very dumb question ...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Mon, 17 Sep 2012 22:55:44 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hehe Gene, it´s not a dumb question. And yes I know some of my filters are slow :S&lt;br /&gt;&lt;br /&gt;Yes the more blends you use, the slower it will get. If you don´t use the beta, I can post a 3.0 version for you so you can check it out.&lt;br /&gt;&lt;br /&gt;My first solution uses a multiblend and is faster. The second uses a couple of normal blends and is a little bit slower.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Carl&lt;/b&gt;, &lt;em&gt;Tue, 18 Sep 2012 04:21:39 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Sounds interesting will have to try it when i can install the beta 4&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Gene S Morgan&lt;/b&gt;, &lt;em&gt;Tue, 18 Sep 2012 22:04:51 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Shar ... Thanks for the info and the new filter ... I really appreciate you straightening me out .... and I did not mean to complain about your filter .. It is so cool ... But I just lack patience ... it is a character defect on my part ....&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sharandra&lt;/b&gt;, &lt;em&gt;Wed, 19 Sep 2012 02:27:16 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Carl, the one above your post is a 3.0 version. so if you still can´t install the beta you can try that one out. It´s the same, just not so conveniently packed in a group :-)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Carl&lt;/b&gt;, &lt;em&gt;Wed, 19 Sep 2012 03:49:38 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;where is the fun if you miss out on the whiz bang, FF3 is old school ;)  :)&lt;/p&gt;
</description>
</item>
<item><title>Projective Transform (Four point transform)</title> 
		             <dc:creator>Sphinx.</dc:creator> 
		             <category></category> 
		             <pubDate>Thu, 06 Sep 2012 07:51:28 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7581</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7581</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 07:10:53 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I translated some parts of a graphics library I'm co-developer on, so now we have a true four point projective transformation, and it supports both ways (i.e. you can transform &quot;back&quot; by using opposite setting for Inverse parameter).&lt;br /&gt;&lt;br /&gt;I added some additional parameters, Percentage, Clip X and Clip Y. Percentage works similar to Percentage in the other transformations.&lt;br /&gt;&lt;br /&gt;I will publish it eventually, but I post it here first to get some feedback on the design. Also I'm unsure about license compatibility when submitting to the online library.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 07:15:05 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Here is a moderate example with clipped x and y:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 07:15:44 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;And here is a more extreme unclipped example:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 08:27:58 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Sphinx,&lt;br /&gt;&lt;br /&gt;This is awesome to say the least! It will open a whole world of possibilities in mapping images onto 3D surfaces.&lt;br /&gt;&lt;br /&gt;As to the interface, it is workable as it is. The 'inverse' checkbox should work the other way though, IMO. Right now it is checked when you do the original transform, and unchecked for inverse transform.&lt;br /&gt;&lt;br /&gt;For a possible improvement, it would be helpful to be able to show just a tranformed grid overlayed on the input image. This would be particularly useful for alignment when removing perspective with inverse transformation. &lt;br /&gt;&lt;br /&gt;TD&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 08:36:18 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Oh, and could the clip function have some sort of invert choice as well? With some settings, the transformed image splits and goes through the opposeite edges of the image. (Or is this the way it is supposed to go?)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 09:20:10 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;The 'inverse' checkbox should work the other way though, IMO. Right now it is checked when you do the original transform, and unchecked for inverse transform.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I guess that makes sense from how you see it visually. Theoretically or codewise it is the other way around though (i.e. it uses the inverse matrix when Inverse is checked). Maybe there is a better term for that input.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;could the clip function have some sort of invert choice as well? With some settings, the transformed image splits and goes through the opposeite edges of the image. (Or is this the way it is supposed to go?)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Well, the thing is that for correct output the transform only support convex quadrilateral polygons. I was not sure how to handle this and decided to leave it as is - any ideas on what to with concave settings?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 09:49:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hmm, I could constrain the points so that you can't make a concave polygon.. the sliders would then stop having any effect if you make a concave polygon..&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 11:06:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;I guess that makes sense from how you see it visually. Theoretically or codewise it is the other way around though (i.e. it uses the inverse matrix when Inverse is checked). Maybe there is a better term for that input. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;You could call it 'Inverse Transform' and switch the checkbox polarity.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;Well, the thing is that for correct output the transform only support convex quadrilateral polygons. I was not sure how to handle this and decided to leave it as is - any ideas on what to with concave settings?&lt;br /&gt;Hmm, I could constrain the points so that you can't make a concave polygon.. the sliders would then stop having any effect if you make a concave polygon.. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I see. Then contraining the points might be a good idea. It is not all that important, more of a cosmetic handling. Now that we've gone there: should there be some way of indicating when the points are clipped? Such as a red exclamation point at the corner (which you can turn off)? That's just a thought. In the big picture, it's irrelevant for the basic function of the filter, which is a fantastic piece of work.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Wed, 05 Sep 2012 23:29:22 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;ThreeDee &lt;br /&gt;&lt;br /&gt;This is awesome to say the least! It will open a whole world of possibilities in mapping images onto 3D surfaces. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I am sorry to ask, but do not know how this would help mapping images onto 3D surfaces unless you mean doing this inside FF in some way, although FF does not have 3D surfaces. &lt;br /&gt;Sorry if I am telling perhaps silly things here.&lt;br /&gt;&lt;br /&gt;As Sphinx has put already, this is related to this other thread &lt;a href='http://filterforge.com/forum/read.php?FID=10&amp;TID=10373' target='_blank' rel='nofollow'&gt;Quadrilateral Challenge by uberzev&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Thu, 06 Sep 2012 05:23:07 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;SpaceRay wrote:&lt;/b&gt; I am sorry to ask, but do not know how this would help mapping images onto 3D surfaces unless you mean doing this inside FF in some way, although FF does not have 3D surfaces. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yes, I mean internally in FF. For instance, if you were to make a script that calculated the corner points of the three visible faces of a 3D rotating cube, you could use this script to render the input image on each face.&lt;br /&gt;&lt;br /&gt;You could pretty much make any rectanglarly faceted filled 3D shape with the input image on each face with it.&lt;br /&gt;&lt;br /&gt;Which reminds me that it would really be a good idea to write a script that calculates the transformation of any point in 3D space. &lt;br /&gt;&lt;br /&gt;In fact, 3D transformation may already be included in one of the more advanced scripts from Sphinx. Or in &lt;a href='http://www.filterforge.com/filters/8772.html' target='_blank' rel='nofollow'&gt;Raytracing&lt;/a&gt; by Egret. Haven't dug into them that deep.&lt;br /&gt;&lt;br /&gt;(By 3D transformation I mean rotation around X, Y and Z-axis.)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;CFandM&lt;/b&gt;, &lt;em&gt;Thu, 06 Sep 2012 07:51:28 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Great Work Sphinx.. :pimp:  :beer:&lt;/p&gt;
</description>
</item>
<item><title>Tottes MegaSwitch</title> 
		             <dc:creator>Totte</dc:creator> 
		             <category></category> 
		             <pubDate>Sat, 18 Aug 2012 03:34:08 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7563</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7563</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Fri, 02 Jul 2010 01:22:32 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;OK, here is my MegaSwitch component, in a sample filter to show it off.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;StevieJ&lt;/b&gt;, &lt;em&gt;Fri, 02 Jul 2010 11:12:07 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I can't look at it yet due to the current V2 problem.....but got me thinking that a script could be made so that each switch could be drop-menu labelled in the controls.....when I get more advanced with scripting of course.....   ;)  :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Sat, 03 Jul 2010 14:57:32 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;What's up with the attachment file names?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Sat, 03 Jul 2010 16:45:53 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Crapadilla mysteriously wrote:&lt;/b&gt; &lt;i&gt;What's up with the attachment file names?&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;My best guess, &lt;b&gt;a fubar up bug that is broken&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Carl&lt;/b&gt;, &lt;em&gt;Sat, 03 Jul 2010 18:47:14 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;it only open as xml file for me [ same problem with all these attachments on the site since they changed server ], this happen once before a couple of years ago but for the life of me I can't recall how to get round it, pitty as I would use this :(&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Sun, 04 Jul 2010 02:21:53 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Crapadilla wrote:&lt;/b&gt;&lt;br /&gt;What's up with the attachment file names?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;We'll fix this soon.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Smacky&lt;/b&gt;, &lt;em&gt;Sun, 04 Jul 2010 16:37:09 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hi all. This is my first post, but i thought I could be of help.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Carl wrote&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&quot;it only open as xml file for me [ same problem with all these attachments on the site since they changed server ], this happen once before a couple of years ago but for the life of me I can't recall how to get round it, pitty as I would use this &quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My workaround for this issue is to right click on the file link, choose &quot;save target as&quot; and give the file a new name with ffxml as the extension. Once you've downloaded the file, move it into your &quot;My Filters&quot; folder, then restart FF. Seems to work well with most.&lt;br /&gt;&lt;br /&gt;Totte, I like the idea, but I can't get your megaswitch filter to work. Produces the same output no matter what the setting is. I've looked at the script, but my programming days are long behind me. Perhaps it is some incompatibility between Mac OS and Windows (which is what I am using).&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Smacky&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Sun, 04 Jul 2010 18:15:38 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Did you slide the variation slider? Strange, cause it should pick on out the the maximum inputs set (1-16), where 1 is rather silly as it will be only one to choose from.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Smacky&lt;/b&gt;, &lt;em&gt;Sun, 04 Jul 2010 19:31:55 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;No, I was definitely using the itemcount slider. Since you mentioned the variation slider I tried an experiment where I changed the value of the V slider to something else, and got some pretty curious results. With variation set to 1, the filter always outputs the #1 input, no matter what itemcount is set at. If I change variation to something else, the output is more or less random, although most of them are still input #1. Very strange, and I would guess some kind of bug in V2.&lt;br /&gt;&lt;br /&gt;Smacky&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Smacky&lt;/b&gt;, &lt;em&gt;Sun, 04 Jul 2010 19:45:31 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Totte.&lt;br /&gt;&lt;br /&gt;I had another look at the script and found the problem, I think.In the prepare function there is a line that goes:&lt;br /&gt;&quot;index = math.mod(VARIATION, itemcount)&quot;&lt;br /&gt;I'm not sure what this line is meant to do, but if I change it to:&lt;br /&gt;&quot;index = itemcount&quot;&lt;br /&gt;the filter seems to work as advertised.&lt;br /&gt;Cheers.&lt;br /&gt;Smacky&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 00:42:14 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Smacky: the filter works as intended.&lt;br /&gt;&lt;br /&gt;Itemcount sets how many of the 16 inputs that are currently in use.&lt;br /&gt;using Variation-slider, the output will be psuedo-randomly picked from one of those 16 inputs using the &quot;index = math.mod(VARIATION, itemcount)&quot; line.&lt;br /&gt;&lt;br /&gt;The problem really is &quot;no way to explain that&quot; except in - - comments in Lua.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Carl&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 01:24:06 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks Smacky [ and hi ] I'll give that a try :)&lt;br /&gt;&lt;br /&gt;Edit; work perfectly thanks again Smacky&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 01:39:04 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I guess the problem is that you want a controllable switch, not a random switch, which this is. The changes you made Smacky transformed it to a controllable switch, from a random switch (which is what I created). Maybe have a second input saying (controllable/randomized), which will be the best of both worlds...&lt;br /&gt;&lt;br /&gt;Posted a new version on &lt;a href='http://4eyes.code66.se/' target='_blank' rel='nofollow'&gt;4eyes&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 01:46:25 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hi Totte,&lt;br /&gt;&lt;br /&gt;I just realized that the input constants, e.g. INPUT_1 contains simple index values.&lt;br /&gt;To get the value of an input constant, write error(INPUT_1) or whatever the name of the input is. In your case there is a perfect relation with the actual index variable in your script, making the big conditional obsolete:&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	return get_sample_map(x, y, index)&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;should work just fine.&lt;br /&gt;&lt;br /&gt;This could have been different, but you obviously first added all the inputs (in correct order) and then itemCount input. That is why their value matches your index.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Smacky&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 11:43:01 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Oops. My apologies. I did think you were demonstrating how to make an oversized switch component, when you were obviously going for something more interesting. My bad. I'll shut up now.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 13:37:45 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;@Sphinx . They were added, they reordered, as otherwise they came 1, 10,11,12,13,14,15,2,3 etc....&lt;br /&gt;I will check your approach, but I think it will fail as I have reordered them, but a nice idea.&lt;br /&gt;&lt;br /&gt;@Smacky: lol - now you got Both.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 14:23:24 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Ok, perhaps it can add a little randomness then, hehe&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sat, 28 Jan 2012 19:44:59 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hello, Please could you explain how this works for a beginner that does not know nothing about scripts ?&lt;br /&gt;&lt;br /&gt;I have downloaded it, replaced the big number name for the Megaswitch name and clicking over it is installed in FF 3.0&lt;br /&gt;&lt;br /&gt;The problem for me comes when I try to use it, as the slider DOES NOT work and nothing happens when changing from one to another.&lt;br /&gt;&lt;br /&gt;Surely I am making something wrong. &lt;br /&gt;&lt;br /&gt;Do you need to modify the script to use it ?&lt;br /&gt;&lt;br /&gt;How do you select from the 16 sources, just using the selector slider and choosing one of the numbers ?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Sun, 29 Jan 2012 06:25:58 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Spaceray, download the updated version below (from totte's website) and uncheck IsRandomizable.  Be sure that Variations is NOT set to 1.  That way you can have all 16 outputs with the selector slider.&lt;br /&gt;&lt;br /&gt;Other than tat don't ask me how this thing works, as it's WAY over my head.&lt;br /&gt;I would love to see an example of this megaswitch in action in a proper filter, just to try and understand how to implement it, but I guess that's up to the masters of the FF universe to decide if they have the time to do that  :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 29 Jan 2012 09:14:48 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Morgantao wrote:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Spaceray, download the updated version below&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Thanks very much for the new updated version, I have downloaded it. In wich Totte´s website is this available ? In the one of his profile or other different ?&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Morgantao wrote:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;uncheck IsRandomizable. Be sure that Variations is NOT set to 1. That way you can have all 16 outputs with the selector slider. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;WOW!! Thanks very much for this suggestion and instruction on how to use it, I knew I was doing something wrong and did not work and was because I used variations=1 , after changing the variation to a higher number it works perfectly well selecting the source between the 16 available.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Morgantao wrote:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Other than that don't ask me how this thing works, as it's WAY over my head.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Well, I do NOT need to ask anything more, and really do NOT need to know how it works inside the script to be able to use it. &lt;br /&gt;&lt;br /&gt;You do not need to understand and know how electricity works to use it, do you?, you just plug the electrical appliance you want to use in wall socket and use it, don´t care how and why it works :D &lt;br /&gt;&lt;br /&gt;And if for you this is WAY over your head, imagine to me !!! It´s WAY WAY WAY BEYOND over my head 1000 meters  :D&lt;br /&gt;&lt;br /&gt;For me making and understanding script would be like be able to touch Lava with my naked hands :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Sun, 29 Jan 2012 17:35:43 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;In that case for me it's like putting out a campfire with my tongue  :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sat, 11 Aug 2012 15:23:18 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Morgantao wrote:&lt;br /&gt;Spaceray, download the updated version below (from totte's website) and uncheck IsRandomizable.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Be sure that Variations is NOT set to 1&lt;/b&gt;. That way you can have all 16 outputs with the selector slider.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;br /&gt;&lt;br /&gt;Please, is there some good way that Variation is NOT set to 1 when downloading the filter.&lt;br /&gt;&lt;br /&gt;The only way I have found is to make the presets have a different variation number but do not know if this is a good way or there can be another one.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Thanks again to Totte for this MegaSwitch &lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Mon, 13 Aug 2012 14:18:24 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;SR, you can always edit the ffxml file and change the variation of the default preset&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Sat, 18 Aug 2012 02:10:32 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Just saw this discussion, hope you having fun with it.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sat, 18 Aug 2012 03:12:27 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;The only way I have found is to make the presets have a different variation number but do not know if this is a good way or there can be another one. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I have seen that this works right and as always that is loaded a filter it loads the first (or the last default filter) filter preset it will always move the variation to the one on the preset and be higher than one, so there is no more problem.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Morgantao &lt;br /&gt;SR, you can always edit the ffxml file and change the variation of the default preset&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;This would be IF you could not do it inside FF, but you can do it and update any preset (that is not a factory preset) with the right values of variations, so there is no problem.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Totte:&lt;br /&gt;Just saw this discussion, hope you having fun with it.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yes, thanks to you there is the possible thing to have a 16 switch instead of the normal 12 one&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Thanks again to Totte for this MegaSwitch&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Sat, 18 Aug 2012 03:21:32 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;You can make that 100 if you just spend more time editing the script&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sat, 18 Aug 2012 03:21:51 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I have made a great, interesting and useful discovery in this filter&lt;br /&gt;&lt;br /&gt;&lt;b&gt;YOU CAN HAVE AS MANY SWITCHS AS YOU WANT WITH THIS SCRIPT AND &lt;u&gt;NOT ONLY 16&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I was wondering if it would be possible to make a 20 switchs megaswitch instead of the 16 available now, and I was going to make this request when I have seen that he Map script component has an&lt;b&gt; Input Editor&lt;/b&gt; on the settings tab and there you can configure any amount of switchs AND also customize other possible connections required if needed for this component.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;So now this filter has risen much it´s value and is even better than what I thought. &lt;br /&gt;&lt;br /&gt;Thanks again to Totte for this MegaSwitch&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Sat, 18 Aug 2012 03:22:53 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;As I said, just add more code.... more inputs... and your done&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Sat, 18 Aug 2012 03:25:16 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Yes one of these days there will be a component with 1000 inputs.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sat, 18 Aug 2012 03:34:08 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks Totte, we wrote the post both at exactly the same time  :D but yours when first than mine. &lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Totte wrote:&lt;br /&gt;As I said, just add more code.... more inputs... and your done&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;What is very good on this is that you do not need to modify the inner code of the script and do not have to modify the script itself, it is very easily done with the &quot;Input editor&quot; available to add any more inputs you want and configure them as you want without any problem, which is great.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Skybase wrote:&lt;br /&gt;Yes one of these days there will be a component with 1000 inputs.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt; :D &lt;br /&gt;Well considering that FF does NOT make a selection of the components that are behind the switch and ALL of them are included in the results components (wich is a very bad thing) it would be impossible to make this AND keep it working right and being fast and usable  :D&lt;/p&gt;
</description>
</item>
<item><title>Delaunay triangulation!</title> 
		             <dc:creator>uberzev</dc:creator> 
		             <category></category> 
		             <pubDate>Wed, 04 Jul 2012 21:25:06 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10126</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10126</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;uberzev&lt;/b&gt;, &lt;em&gt;Mon, 02 Jul 2012 22:32:55 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;a href='http://filterforge.com/forum/read.php?FID=9&amp;TID=6865' target='_blank' rel='nofollow'&gt;http://filterforge.com/forum/read.php?FID=9&amp;TID=6865&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://google.com/search?q=Delaunay+triangulation+lua' target='_blank' rel='nofollow'&gt;http://google.com/search?q=Delaunay+triangulation+lua&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Someone make this pls.  :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Tue, 03 Jul 2012 09:12:22 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I was counting on you to make it ;) &lt;br /&gt;&lt;br /&gt;Yes, someone, PLEASE do this!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Wed, 04 Jul 2012 21:25:06 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;YES, YES, Please, Please, Please, someone that knows how to do this, make this possible for FF (if it is really possible with the available tools and components of FF 3.0) &lt;br /&gt;&lt;br /&gt;This has been since 2009 requested, but seems that nobody has been able to do it.&lt;br /&gt;&lt;br /&gt;AND the available alternatives are ONLY FOR MAC or very low resolutions.&lt;br /&gt;&lt;br /&gt;So it would be very welcomed if anyone could know and want to make this will be greatly appreciated.&lt;br /&gt;&lt;br /&gt;Thanks very much.&lt;br /&gt;&lt;br /&gt;______________________________________________&lt;br /&gt;&lt;br /&gt;By the way, the request should have been made on the title, as as it is now is not attractive and does not show the intention of this thread. Would be better to have a title like, &lt;br /&gt;&quot;&lt;b&gt;Please, someone make a filter for Delaunay triangulation! Thanks&lt;/b&gt;&quot;&lt;/p&gt;
</description>
</item>
<item><title>&quot;result&quot; component using scripts</title> 
		             <dc:creator>Indigo Ray</dc:creator> 
		             <category></category> 
		             <pubDate>Sat, 30 Jun 2012 08:28:20 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10119</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10119</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Indigo Ray&lt;/b&gt;, &lt;em&gt;Sat, 30 Jun 2012 08:28:20 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Is it possible to make a mock &quot;result&quot; (surface mode) component using a map script?&lt;/p&gt;
</description>
</item>
<item><title>Q: Batch processing script and Open Image</title> 
		             <dc:creator>7minarets</dc:creator> 
		             <category></category> 
		             <pubDate>Fri, 29 Jun 2012 14:14:49 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10115</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=10115</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;7minarets&lt;/b&gt;, &lt;em&gt;Fri, 29 Jun 2012 11:30:57 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Is it possible to add the images for the filter to act on (File \ Open Image), into the batch processing script so a filter can be pre-configured to process a folder full of images automatically in the script?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Fri, 29 Jun 2012 12:21:59 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;This has been already asked many times before and until now regretably there is no possible way to do this, it would be very good to do it, but nobody seems to have found a way to do it.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Fri, 29 Jun 2012 12:42:00 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Here is a copy of a post I have made on the third page &lt;a href='http://64.38.12.66/forum/read.php?FID=5&amp;TID=6133&amp;PAGEN_1=3' target='_blank' rel='nofollow'&gt;of this thread called &quot;Batches for all&quot;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;SpaceRay wrote:&lt;br /&gt;&lt;br /&gt;Well instead of making batches for producing animations, I want to have a way to make batches of a folder of images and apply to all of them the same filter with the same settings, without having to load by hand one by one each of the images and then after saving them. &lt;br /&gt;&lt;br /&gt;I mean, it would be excellent to have something like the &quot;Image Processor&quot; you can have Adobe Bridge or Adobe Photoshop.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Morgantao wrote: &lt;br /&gt;&lt;br /&gt;Yep. That would be very helpfull!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yes, I think that this would be very interesting, helpful and useful but I have already asked before to make this with actions in Photoshop and I was told that it was not possible  :( and I do not know how to make this with the command line of FF&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Fri, 29 Jun 2012 13:15:57 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Also in this other &lt;a href='http://64.38.12.66/forum/read.php?PAGEN_1=2&amp;FID=9&amp;TID=455&amp;sphrase_id=1117887#nav_start' target='_blank' rel='nofollow'&gt;thread of Lucato &quot;Ideas for Filter Forge&quot; I wrote-in page 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Lucato wrote:&lt;br /&gt;&lt;br /&gt;In the &quot;File&quot; menu under &quot;Save image as...&quot; we would have an option &quot;Batch process...&quot; where it would save at once the selected presets. Maybe it would open up a new window asking stuffs as Save Folder, File Format, File name string and sequence number.&lt;br /&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;YES, it would very good if FF could have a &quot;Batch Process...&quot; option in the File Menu and not ONLY do the renders with just the loaded imaged. &lt;br /&gt;&lt;br /&gt;1 - It would be good to be able to apply a filter with same preset to a folder of images &lt;br /&gt;&lt;br /&gt;2 - And also would be good to make a Batch Process of applying different presets of the same filter to the main image loaded.&lt;br /&gt;&lt;br /&gt;3 - And if it would be possible to have, ALSO an option to be able to choose and select a group of filters and then apply all of them to a single image with the same preset. I mean I choose 10 different filters and want to batch apply all of them to the same image &lt;b&gt;without &lt;/b&gt;having to open and load each image inside FF, render and then save it and repeat again the same with the next filter.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Fri, 29 Jun 2012 14:14:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I wrote a reply to this here:&lt;br /&gt;&lt;a href='http://www.filterforge.com/forum/read.php?PAGEN_1=2&amp;FID=9&amp;TID=455#postform' target='_blank' rel='nofollow'&gt;http://www.filterforge.com/forum/read...5#postform&lt;/a&gt;&lt;/p&gt;
</description>
</item>
<item><title>Dilla's Scripting Blunders</title> 
		             <dc:creator>Crapadilla</dc:creator> 
		             <category></category> 
		             <pubDate>Mon, 04 Jun 2012 13:04:40 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9133</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9133</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Sun, 20 Nov 2011 13:31:39 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Alrighty, I've been dipping a toe into the unknown waters of scripting lately. For some foolish reason I decided to begin work on a &lt;a href='http://en.wikipedia.org/wiki/Logarithmic_spiral' target='_blank' rel='nofollow'&gt;Logarithmic Spiral&lt;/a&gt; generator component. Spirals are so incredibly awesome, so I thought why not? &lt;br /&gt;&lt;br /&gt; :|  ;)  :D &lt;br /&gt;&lt;br /&gt;So far the basics look promising, but I'm only getting one revolution (or segment) of the spiral plotted, i.e. it does not spiral towards infinity or zero. I'm guessing there must be some mathematical reason for it, but currently I don't see it. :blush: &lt;br /&gt;&lt;br /&gt;In case anyone less mathematically challenged than the current me feels like taking a look, here is the filter:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Indigo Ray&lt;/b&gt;, &lt;em&gt;Sun, 20 Nov 2011 18:27:07 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;From wikipedia:&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Many programming languages also provide the two-argument atan2 function, which computes the arctangent of y / x given y and x, but with a range of (−π, π].&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;You'll have to do a loop if you want a larger range, I think.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 04:25:12 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Indeed. Thank you! :)&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;If desired an angle in the range [0, 2π) may be obtained by adding 2π to the value if it is negative.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 05:08:54 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;radialCoordinate =  math.log(math.sqrt ( x^2 + y^2 ) * 30) &lt;br /&gt;	angularCoordinate = 0.5 + math.atan2 (x,y) / (2 * math.pi)&lt;br /&gt;	spiralGrd = angularCoordinate + radialCoordinate&lt;br /&gt;	spiralGrd = spiralGrd - math.floor(spiralGrd)&lt;br /&gt;&lt;br /&gt;route spiralGrd to the output and take a look :-)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 06:29:38 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Nice gradient! And more efficient, apparently. :) &lt;br /&gt;&lt;br /&gt;But how does one implement proper aa_zones for this? And how does one offset the damned thing to the image center via script?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 06:58:01 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Well, I supplied the the code as a starting point. As such it does not make sense to have aa-zones for a gradient (there are no zones...). If you use the gradient to create that threshold like output, it makes sense to use the conditional (&quot;if..then..else&quot;) to determine the aa_zone.&lt;br /&gt;&lt;br /&gt;you can try using this as aa_zone though: math.floor(spiralGrd * 3), where 3 is the multiplication constant from the radialCoordinate calculation / 10. This should reduce moire aliasing in the center region, while skipping aa calc in the soft large gradients &lt;br /&gt;&lt;br /&gt;For the centering you need to think &quot;reverse&quot;, i.e. subtract 0.5 from x and y initially so you have 0,0 in the visual center region.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 09:06:36 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Sphinx, thanks for your help. I'll get back to experimenting now...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;James&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 09:06:42 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Is that a spiral formula Sphinx? If i try to center the XY positions by subtracting a 0.5 value i get more of a radial remapped result from the input.&lt;br /&gt;&lt;br /&gt;function prepare()&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;&lt;br /&gt;radialCoordinate = math.log(math.sqrt ((x-0.5)^2 + (y-0.5)^2 ) * 30)&lt;br /&gt;angularCoordinate = 0.5 + math.atan2 (x,y) / (2 * math.pi)&lt;br /&gt;spiralGrd = angularCoordinate + radialCoordinate&lt;br /&gt;spiralGrd = spiralGrd - math.floor(spiralGrd) &lt;br /&gt;&lt;br /&gt;r,g,b,a = get_sample_map(spiralGrd, spiralGrd, SOURCE)&lt;br /&gt;return r, g, b, a&lt;br /&gt;end;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 09:25:12 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;James, don't use it for further lookup - just return the value, i.e.: return spiralGrd, spiralGrd, spiralGrd, 1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dilla - try out radialCoordinate = math.log(math.sqrt ( x^2 + y^2 ))  * 30 too, i.e. move the mul. constant outside. It is easier to control the &quot;windings&quot; this way.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;James&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 09:32:01 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks, it seems no different doing that though. Testing with just  a basic gradient to make things more visible i can see rings rather than a spiral -&lt;br /&gt;&lt;br /&gt;function prepare()&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;&lt;br /&gt;radialCoordinate = math.log(math.sqrt ((x-0.5)^2 + (y-0.5)^2 ) * 30)&lt;br /&gt;angularCoordinate = 0.5 + math.atan2 (x,y) / (2 * math.pi)&lt;br /&gt;spiralGrd = angularCoordinate + radialCoordinate&lt;br /&gt;spiralGrd = spiralGrd - math.floor(spiralGrd)&lt;br /&gt;&lt;br /&gt;return spiralGrd, spiralGrd, spiralGrd, 1 &lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;Or is that how it's suppose to be?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 10:13:21 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;James, you have to use the same offset on the angular coordinate as well, i.e.:&lt;br /&gt;&lt;br /&gt;angularCoordinate = 0.5 + math.atan2 (x-0.5,y-0.5) / (2 * math.pi)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 10:23:33 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Oh I get it now James :-D well I meant:&lt;br /&gt;&lt;br /&gt;add this as the first thing in the script, then you don't have to think more about it. &lt;br /&gt;&lt;br /&gt;x,y  = x - 0.5, y - 0.5&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;James&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 10:37:31 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks, that makes it work great :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 11:28:51 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;This is so much fun! I couldn't resist turning this into a full-featured &lt;i&gt;Spiral Gradient&lt;/i&gt; component. Submission to the library pending...&lt;br /&gt;&lt;br /&gt;Take a look... constructive criticism on code optimization (and the AA_zones hack) is very welcome, cause - you know - it'll learn me.  ;)  :D&lt;br /&gt;&lt;br /&gt;Also, I'm thinking about adding a 'Fixed Size' option.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 13:07:13 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Cool! Looks quite good - also codewise :) &lt;br /&gt;&lt;br /&gt;About the aa hack: I think it would be better to do something like math.floor(spiralGrd * 3), since you can't for sure know that the given profile curve works well with your two constants (0.95 and 0.05).&lt;br /&gt;&lt;br /&gt;I'd strip away the current aa stuff and simply return the above result.&lt;br /&gt;&lt;br /&gt;Oh and another thing - you might want to check if blend_normal is faster than your current solution (honestly I don't know, since you're not doing alpha blending, but lerping instead which is much simpler)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 13:14:26 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Oh, I just realized that there is an even better aa_zone to return.&lt;br /&gt;&lt;br /&gt;Find the line: &lt;br /&gt;&lt;br /&gt;spiralGrd = spiralGrd - math.floor(spiralGrd)&lt;br /&gt;&lt;br /&gt;and replace that with &lt;br /&gt;&lt;br /&gt;aa_zone = math.floor(spiralGrd)&lt;br /&gt;spiralGrd = spiralGrd - aa_zone&lt;br /&gt;&lt;br /&gt;and ensure that aa_zone is not modified afterwards by old script etc..&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 13:25:17 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;aa_zone = math.floor(spiralGrd) &lt;br /&gt;spiralGrd = spiralGrd - aa_zone &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Oh yeah! That works like a charm! :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;James&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 14:26:16 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;One useful thing might be to maybe add the new Bezier curve control so the user could shape the profile with a custom curve. &lt;br /&gt;&lt;br /&gt;Code wise everything seems quite good also. :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 14:48:04 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;James wrote:&lt;/b&gt;&lt;br /&gt;Bezier curve control&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yup, sounds good. I'll schedule that into a future update.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Message log wrote:&lt;/b&gt;&lt;br /&gt;Script error (line 35): Invalid floating-point value passed to get_sample_curve&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;With &lt;i&gt;Size, pixels&lt;/i&gt; at 1 the script throws an error. Hmmm!?.... :|&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;inujima&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 16:34:36 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;With Size, pixels at 1 the script throws an error. Hmmm!?.... &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Function math.log(x) returns nil value at x&amp;lt;=0. &lt;br /&gt;By such a reason, the value of spiralGrd has been nil value at center coordinate.  :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;James&lt;/b&gt;, &lt;em&gt;Tue, 22 Nov 2011 07:03:39 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Just wondering how can you fix this error mentioned, maybe with some sort of value limiting? or would it need to be fixed by the FF developers?&lt;br /&gt;&lt;br /&gt;Not that i often use a size of 1 pixel but it would be useful to have a fix/workaround if anyone knows one. :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;inujima&lt;/b&gt;, &lt;em&gt;Tue, 22 Nov 2011 07:47:24 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;It is necessary to rewrite so that zero must not  be parameter of math.log(). &lt;br /&gt;&lt;br /&gt;For example&lt;br /&gt;[CODE]&lt;br /&gt;	-- calculate spiral gradient map&lt;br /&gt;	radialCoordinate = math.log (math.sqrt ( spiralX*spiralX + spiralY*spiralY )) * windings&lt;br /&gt;[/CODE]&lt;br /&gt;&lt;br /&gt;rewrite like this &lt;br /&gt;&lt;br /&gt;[CODE]&lt;br /&gt;	-- calculate spiral gradient map&lt;br /&gt;	local radial = math.sqrt ( spiralX*spiralX + spiralY*spiralY )&lt;br /&gt;	radial = math.max(radial, 0.00001)&lt;br /&gt;	radialCoordinate = math.log (radial) * windings&lt;br /&gt;[/CODE]&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Wed, 23 Nov 2011 08:40:56 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;b&gt;Dilla's Scripting Blunders&lt;/b&gt; -- Episode 2&lt;br /&gt;The scripting n00b madness continues... ;)  :D &lt;br /&gt;&lt;br /&gt;Ok, I've got three points and their circumcircle drawn, but how do I draw the triangle between these points?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Wed, 23 Nov 2011 11:38:28 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Oh my, there sure are some interesting polygon hit-test algorithms out there -- exciting stuff to dig into...  :eek:  ;) &lt;br /&gt;&lt;br /&gt;&lt;a href='http://paulbourke.net/geometry/insidepoly/' target='_blank' rel='nofollow'&gt;http://paulbourke.net/geometry/insidepoly/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Looks like my next scripting assignment is porting one of these to Lua. Personally, I'd choose the first one...  8)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Ghislaine&lt;/b&gt;, &lt;em&gt;Tue, 29 May 2012 19:07:57 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hi Dilla&lt;br /&gt;&lt;br /&gt;I just upload a filter tonight based on your Logarythmic spiral. This base has just a script map + an offset component. And it is great. Let me tell you that we could make wonders with it. I'm asking you if you would add some input in your script. I would appreciate much to work again with this logarythmic spiral with more possibilities. Thanks in advance.&lt;br /&gt;&lt;br /&gt;I'm creating a second filter with yours. I have discovered a lot of spirograph forms just by playing with logarythmic spiral. I imagine that the possibilities would be multiplied at the infinity with few inputs added to your script.  :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Mon, 04 Jun 2012 13:04:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Ghislaine,&lt;br /&gt;&lt;br /&gt;unfortunately I'm currently swamped in a project -- which means no time for filter authoring fun. However, feel free to post your suggestions here, and I might look into it once things have calmed down at work.&lt;/p&gt;
</description>
</item>
<item><title>Script Optimization Tricks</title> 
		             <dc:creator>Sphinx.</dc:creator> 
		             <category></category> 
		             <pubDate>Fri, 18 May 2012 02:55:48 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7513</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7513</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 16 Jun 2010 03:30:31 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;If you're concerned about the performance of your script, check out this page:&lt;br /&gt;&lt;a href='http://lua-users.org/wiki/OptimisationCodingTips' target='_blank' rel='nofollow'&gt;http://lua-users.org/wiki/OptimisationCodingTips&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;..Good stuff in there.&lt;br /&gt;&lt;br /&gt;Please add your own findings to this thread, and feel free to post optimization problems  :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Wed, 16 Jun 2010 05:05:31 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Locals are faster than globals. See &lt;a href='http://lua-users.org/wiki/OptimisingUsingLocalVariables' target='_blank' rel='nofollow'&gt;OptimisingUsingLocalVariables&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;That's a good argument in favor of &lt;i&gt;local&lt;/i&gt; which I used to dislike for aesthetic reasons.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 16 Jun 2010 05:40:00 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Indeed! Also moving functions inside a main function (e.g. get_sample) seem to have impact. Dunno why that is, but its probably something related (less indexing or something)&lt;br /&gt;&lt;br /&gt;Another thing I noticed is that the evaluation of conditionals with else parts can be slower than simply preinitializing the variable with the else part:&lt;br /&gt;&lt;br /&gt;j = 0&lt;br /&gt;if (i == true) then&lt;br /&gt;j = 1&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;instead of&lt;br /&gt;&lt;br /&gt;if (i == true) then&lt;br /&gt;j = 1&lt;br /&gt;else&lt;br /&gt;j = 0&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;but of course it depends on the actual case: if the else part is a heavy piece of code performancewise, its not worth it.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Darrell Plank&lt;/b&gt;, &lt;em&gt;Thu, 01 Jul 2010 00:40:52 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;In assembler (well, at least the ancient 8086/88 assembler I used to write in), jumping takes longer than straight line code.  If you write (the assembler equivalent of)&lt;br /&gt;&lt;br /&gt;j = 0&lt;br /&gt;if (i == true) then&lt;br /&gt;    j = 1&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;then you are making no jumps if i== true and even though you're setting j twice, that's way trumped by not making a jump and therefore faster.  In the other example you're always making a jump.&lt;br /&gt;&lt;br /&gt;This performance thing had to do with the pipeline in the old xx86 processors and unless LUA compiles directly to assembly (dunno, but I doubt it), then this isn't the direct reason but it may still be that in LUA jumps are expensive for whatever reason.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sat, 10 Jul 2010 07:31:02 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;This page show some interesting tests - I learned a few new tricks there :)&lt;br /&gt;&lt;br /&gt;&lt;a href='http://trac.caspring.org/wiki/LuaPerformance' target='_blank' rel='nofollow'&gt;http://trac.caspring.org/wiki/LuaPerformance&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Sat, 10 Jul 2010 11:23:51 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Very good info Sphinx!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 15 Nov 2010 05:55:53 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I started a new wiki page on the subject. &lt;a href='http://www.filterforge.com/wiki/index.php/Scripting_Tips_and_Tricks' target='_blank' rel='nofollow'&gt;Check it out&lt;/a&gt; and feel free to add stuff to it :)&lt;br /&gt;&lt;br /&gt;Edit: The article covers very basic scripting concepts, so its a good read for scripting beginners :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Wed, 24 Nov 2010 14:16:09 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;I started a new wiki page on the subject. Check it out and feel free to add stuff to it :)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Just wanted to say that this is an excellent article!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 25 Nov 2010 02:18:34 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks Vlad, I will be completing it soon - I'll probably split it up, so the examples are on a dedicated page.&lt;br /&gt;&lt;br /&gt;If Egret or one of the programmers could take a quick look at it when they have a minute or two, that would be great - I'm not 100% sure about all the conclusions / assumptions I make.&lt;br /&gt;&lt;br /&gt;Btw have you considered LuaJIT? I recall there was some problem with terminating endless loops, but perhaps you could make it optional (in the script settings add some sort of &quot;Optimized (Unsafe)&quot; option)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 06 Dec 2010 05:24:21 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Alright, the &lt;a href='http://www.filterforge.com/wiki/index.php/Scripting_Tips_and_Tricks' target='_blank' rel='nofollow'&gt;Scripting Tips and Tricks&lt;/a&gt; article is complete (for now).&lt;br /&gt;&lt;br /&gt;It would be great with some feedback on it, specially regarding clarity: if certain parts need additional explanations etc, let me know.&lt;br /&gt;&lt;br /&gt;Also if there are common operations you'd like to see covered, let me know.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;James&lt;/b&gt;, &lt;em&gt;Fri, 13 May 2011 13:44:29 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;If i have 4 black and white gradients i noticed replacing them with scripted versions makes the render time go from 5.4 to about 10+ for some reason.&lt;br /&gt;&lt;br /&gt;For the gradient though it is just -&lt;br /&gt;&lt;br /&gt;function prepare()&lt;br /&gt;end;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	return x, x, x, 1&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;So i am wondering if there is even a good way to optimize that type of code since it is so simple. Maybe the default nodes are just a great deal more faster than Lua, since the default node has other controls as part of it though i was originally guessing the Lua version would be more optimized.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 17 May 2011 01:44:30 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx wrote &quot;James wrote:&quot; because direct Quote function does not work in Chrome&lt;/b&gt;&lt;br /&gt;If i have 4 black and white gradients i noticed replacing them with scripted versions makes the render time go from 5.4 to about 10+ for some reason. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I did some experiments regarding just that. You can read about it here:&lt;br /&gt;&lt;a href='http://www.filterforge.com/wiki/index.php/Scripting_Tips_and_Tricks#.22To_script_or_not_to_script.22' target='_blank' rel='nofollow'&gt;http://www.filterforge.com/wiki/index..._script.22&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Indeed there is a way to &quot;optimize&quot; that type of very simple scripts: &lt;b&gt;don't script&lt;/b&gt; ;) &lt;br /&gt;The rule of thumb is simple: if you can easily construct the script equivalent just using a few native FF components, then its a better choice.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;James&lt;/b&gt;, &lt;em&gt;Tue, 17 May 2011 10:19:08 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks, I was expecting that would be the answer.&lt;br /&gt;&lt;br /&gt;Hopefully in the future this might change though, it would be great if the lua scripting could be made a bit faster so things like the simple gradient code i posted would rival or be faster than the standard node. :)&lt;br /&gt;&lt;br /&gt;I just had a interesting idea -&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.filterforge.com/forum/read.php?FID=9&amp;TID=8433&amp;MID=93321#message93321' target='_blank' rel='nofollow'&gt;http://www.filterforge.com/forum/read...ssage93321&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;inujima&lt;/b&gt;, &lt;em&gt;Thu, 17 May 2012 14:02:18 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;This document is helpful as well. &lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.lua.org/gems/sample.pdf' target='_blank' rel='nofollow'&gt;http://www.lua.org/gems/sample.pdf&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Fri, 18 May 2012 02:55:48 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Good one Inujima!&lt;br /&gt;&lt;br /&gt;Importance of localization:&lt;br /&gt;[CODE]&lt;br /&gt;(page 17)&lt;br /&gt;...For instance, the code&lt;br /&gt;&lt;br /&gt;for i = 1, 1000000 do&lt;br /&gt;  local x = math.sin(i)&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;runs 30% slower than this one:&lt;br /&gt;&lt;br /&gt;local sin = math.sin&lt;br /&gt;for i = 1, 1000000 do&lt;br /&gt;  local x = sin(i)&lt;br /&gt;end&lt;br /&gt;[/CODE]&lt;br /&gt;&lt;br /&gt;And this one was new to me (initialization of table entries):&lt;br /&gt;[CODE]&lt;br /&gt;(page 20)&lt;br /&gt;.. the next loop runs in 2.0 seconds:&lt;br /&gt;&lt;br /&gt;for i = 1, 1000000 do&lt;br /&gt;  local a = {}&lt;br /&gt;  a[1] = 1; a[2] = 2; a[3] = 3&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;If we create the tables with the right size, we reduce the run time to 0.7 seconds:&lt;br /&gt;&lt;br /&gt;for i = 1, 1000000 do&lt;br /&gt;  local a = {true, true, true}&lt;br /&gt;  a[1] = 1; a[2] = 2; a[3] = 3&lt;br /&gt;end&lt;br /&gt;[/CODE]&lt;/p&gt;
</description>
</item>
<item><title>Working With Alphas?</title> 
		             <dc:creator>James</dc:creator> 
		             <category></category> 
		             <pubDate>Wed, 09 May 2012 15:43:06 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7492</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7492</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;James&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 06:06:23 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I have made various modules to use so far but there is one thing i have had problems doing which is multiple alphas. Basically what i want to know is how do you layer multiple things together without effecting the colors with multiply or additions etc?&lt;br /&gt;&lt;br /&gt;Currently i having done things like return r, g, b, mask with the mask being generated before and as the alpha which works fine if you just want a single layer with a alpha mask but i have yet to work out how to do this with more than 1 layer.&lt;br /&gt;&lt;br /&gt;Things like -&lt;br /&gt;&lt;br /&gt;return ((r1+r2)+(r3+r4))/4, ((g1+g2)+(g3+g4))/4, ((b1+b2)+(b3+b4))/4, ((a1+a2)+(a3+a4))/4&lt;br /&gt;&lt;br /&gt;and a load of other things don't seem to work correctly so if possible does anyone have any tips on how to do layering multiple images/inputs with alpha masks correctly?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Mike Blackney&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 07:37:51 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Bad answer, but it depends on what you want to do.&lt;br /&gt;&lt;br /&gt;Your code there is doing an average.  Add four layers and divide by four.  So doing an average of the alpha seems to make sense.&lt;br /&gt;&lt;br /&gt;What you need is a rule set.  Do you want something like Photoshop, where layer order matters?  If so, then first you need to do the operations in order.&lt;br /&gt;&lt;br /&gt;If what you want is something like Photoshop's multiply layer (where A is the bottom layer and B is the top) then what it does is take pixel color A, multiply it by pixel color B and then call this color Result.  Then interpolate between A and Result, using the alpha of layer B.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 08:01:17 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Mike Blackney wrote:&lt;/b&gt;&lt;br /&gt;Do you want something like Photoshop, where layer order matters?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;We're planning to expose Filter Forge's blend function, both HDR and LDR versions, with all available blending modes, but I don't know when it will happen. Most likely, we'll add it after the official release of v2.0.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;James&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 09:20:04 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Well what i basically mean is just layer like photoshop etc would do but without a layer mode applied so basically to put one above the last yet keep a different alpha for each.&lt;br /&gt;&lt;br /&gt;So a example would be if i had say a solid red circle over transparent. Doing this as a single thing would be simple and the return for example like -&lt;br /&gt;&lt;br /&gt;return r1, g1, b1, circlemask&lt;br /&gt;&lt;br /&gt;Then above that a different layer with a solid blue square over transparent that is scaled down to appear within the red circle. As a single thing would be like -&lt;br /&gt;&lt;br /&gt;return r2, g2, b2, squaremask&lt;br /&gt;&lt;br /&gt;So basically what i would want is to see a solid blue square over a solid red circle with a transparent background. I could easily make 2 separate scripts and blend them as nodes but i want to do it all within 1 basically. The problem is i can't figure it out to get these results as it's like how you say i am getting some sort of average like you suggest using code like i posted before and it effects the colors with any maths i try. I am guessing if it's possible i am just not sure on the maths needed to mix between them yet, what mike suggests seems like the thing needed but i am not sure about the correct code to do it.&lt;br /&gt;&lt;br /&gt;Reading what Vladimir just said though it seems blending/layering above the last is not possible right now? &lt;br /&gt;&lt;br /&gt;Maybe if it is possible someone could post a basic example of stacking 4 layers each with a input and alpha input or something as that would show me exactly what i need i am guessing. Thanks for the help everyone&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 10:31:55 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;hi James&lt;br /&gt;&lt;br /&gt;According to &lt;a href='http://en.wikipedia.org/wiki/Alpha_compositing' target='_blank' rel='nofollow'&gt;http://en.wikipedia.org/wiki/Alpha_compositing&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;-- fetch inputs&lt;br /&gt;	local O = get_sample_grayscale(x, y, OPACITY)&lt;br /&gt;	local Ra, Ga, Ba, Aa = get_sample_map(x, y, FOREGROUND)&lt;br /&gt;	local Rb, Gb, Bb, Ab = get_sample_map(x, y, BACKGROUND)&lt;br /&gt;&lt;br /&gt;-- combine foreground alpha and master opacity&lt;br /&gt;	Aa = O * Aa&lt;br /&gt;&lt;br /&gt;-- blend individual channels	&lt;br /&gt;	local Ao = Aa + Ab * (1 - Aa)&lt;br /&gt;&lt;br /&gt;	local Ro = (Ra * Aa + (Rb * Ab) * (1 - Aa)) / Ao&lt;br /&gt;	local Go = (Ga * Aa + (Gb * Ab) * (1 - Aa)) / Ao&lt;br /&gt;	local Bo = (Ba * Aa + (Bb * Ab) * (1 - Aa)) / Ao&lt;br /&gt;&lt;br /&gt;	return Ro, Go, Bo, Ao&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;not at all optimized or anything.. but there you have it, alpha preserving blending&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;James&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 11:12:01 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;This code seems to work well and shows the method for Alpha compositing i needed. Thanks Sphinx  :D&lt;br /&gt;&lt;br /&gt;Edit - &lt;br /&gt;&lt;br /&gt;By the way talking about optimizations i am just wondering how optimized is Lua in comparison to standard nodes? Would rendering times be cut when using lua code if it replaced a task needing many standard nodes or does it have not much effect on the time it takes to render?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 11:22:18 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;James wrote:&lt;/b&gt;&lt;br /&gt;how optimized is Lua in comparison to standard nodes? Would rendering times be cut when using lua code if it replaced a task needing many standard nodes&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Generally, standard components are much faster, but connections between them introduce a slight overhead. It is difficult to say which approach would work better -- it heavily depends on the task.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 11:51:07 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Generally, standard components are much faster, but connections between them introduce a slight overhead. It is difficult to say which approach would work better -- it heavily depends on the task.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Indeed! For my test case (mixed alphas and opacity), native blend rendered at 0.17 secs and the above function rendered at 0.72 secs. &lt;br /&gt;&lt;br /&gt;I tried optimizing a few bits here and there, but the lua parser seem to do some tricks by its own.. I only managed to tweak out a few milisecs.&lt;br /&gt;&lt;br /&gt;Here is the &quot;optimized&quot; version:&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;function get_sample(x, y)&lt;br /&gt;-- fetch inputs&lt;br /&gt;	local O = get_sample_grayscale(x, y, OPACITY)&lt;br /&gt;	if O &amp;gt; 0 then&lt;br /&gt;		local Ra, Ga, Ba, Aa = get_sample_map(x, y, FOREGROUND)&lt;br /&gt;	-- combine foreground alpha and master opacity&lt;br /&gt;		Aa = O * Aa&lt;br /&gt;&lt;br /&gt;		if Aa &amp;gt; 0 then&lt;br /&gt;			if Aa &amp;lt; 1 then&lt;br /&gt;				local Rb, Gb, Bb, Ab = get_sample_map(x, y, BACKGROUND)&lt;br /&gt;				if Ab &amp;gt; 0 then&lt;br /&gt;					if Ab &amp;lt; 1 then&lt;br /&gt;&lt;br /&gt;					-- blend individual channels	&lt;br /&gt;						local Ao = Aa + Ab * (1 - Aa)&lt;br /&gt;						local R_Ao = 1 / Ao&lt;br /&gt;						Ab = Ab * (1 - Aa) * R_Ao&lt;br /&gt;						Aa = Aa * R_Ao&lt;br /&gt;						return Ra * Aa + (Rb * Ab), Ga * Aa + (Gb * Ab), Ba * Aa + (Bb * Ab), Ao&lt;br /&gt;					else&lt;br /&gt;						return Rb + (Ra - Rb) * Aa, Gb + (Ga - Gb) * Aa, Bb + (Ba - Bb) * Aa, 1						&lt;br /&gt;					end&lt;br /&gt;				else&lt;br /&gt;					return Ra, Ga, Ba, Aa&lt;br /&gt;				end&lt;br /&gt;			else&lt;br /&gt;				return Ra, Ga, Ba, Aa&lt;br /&gt;			end&lt;br /&gt;		else&lt;br /&gt;			return get_sample_map(x, y, BACKGROUND)&lt;br /&gt;		end&lt;br /&gt;	else&lt;br /&gt;		return get_sample_map(x, y, BACKGROUND)&lt;br /&gt;	end&lt;br /&gt;end;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 09 May 2012 15:43:06 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;FYI if you end up here, check out the new build blend functions in FF 3:&lt;br /&gt;&lt;a href='http://www.filterforge.com/features/version3/script-api.html' target='_blank' rel='nofollow'&gt;http://www.filterforge.com/features/v...t-api.html&lt;/a&gt;&lt;/p&gt;
</description>
</item>
<item><title>My greatest idea ever... uberBlend</title> 
		             <dc:creator>uberzev</dc:creator> 
		             <category></category> 
		             <pubDate>Sun, 06 May 2012 16:47:40 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9867</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9867</guid>
		             <description><script>oForumForm['images_for_resize'].push('popup_1618068407');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;uberzev&lt;/b&gt;, &lt;em&gt;Sun, 06 May 2012 16:47:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Please reply here!&lt;br /&gt;&lt;a href='http://www.filterforge.com/forum/read.php?FID=9&amp;TID=9865' target='_blank' rel='nofollow'&gt;http://www.filterforge.com/forum/read...9&amp;TID=9865&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src='http://www.filterforge.com/upload/forum/upload/7bf/art.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1618068407' border='0' /&gt;&lt;/p&gt;
</description>
</item>
<item><title>Vector functions?</title> 
		             <dc:creator>Crapadilla</dc:creator> 
		             <category></category> 
		             <pubDate>Thu, 12 Apr 2012 02:56:06 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9139</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9139</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 13:07:03 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Super-stupid beginner question:&lt;br /&gt;&lt;br /&gt;Are there any super-duper-optimized-and-hence-officially-recommended vector funtions that you guys like to use?&lt;br /&gt;&lt;br /&gt;I found some on &lt;a href='http://rosettacode.org/wiki/Vector_products#Lua' target='_blank' rel='nofollow'&gt;Rosetta Code&lt;/a&gt;, but I'm looking for the 2-dimensional kind. ;) &lt;br /&gt;&lt;br /&gt;Any recommendations?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 21 Nov 2011 13:16:15 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Well, I've written a vector class for lua, but the darn errors makes it quite impractical. I'll consider publishing it when I get back to the office..&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Thu, 24 Nov 2011 04:39:57 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Strange that FF does not come with its own lua vector class. &lt;br /&gt;&lt;br /&gt;How about implementing something like &lt;a href='http://code.google.com/p/lua-vec/' target='_blank' rel='nofollow'&gt;Lua-Vec&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;If one were to believe this &lt;a href='http://code.google.com/p/lua-vec/wiki/Benchmarks' target='_blank' rel='nofollow'&gt;benchmark&lt;/a&gt;... *hint hint*  ;)  :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 24 Nov 2011 05:22:54 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Alright, started up a new section in the Wiki... &lt;a href='http://filterforge.com/wiki/index.php/Libraries_and_meta_classes' target='_blank' rel='nofollow'&gt;http://filterforge.com/wiki/index.php...ta_classes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I posted my vector &quot;class&quot;.. I will post an example on how to use it when I find time&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Fri, 25 Nov 2011 04:28:57 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Excellent! :beer:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sat, 18 Feb 2012 02:47:50 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;:?: sorry this looks like chinese words for me  :?: &lt;br /&gt;&lt;br /&gt;Could you explain what use can this have please?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Sat, 18 Feb 2012 12:45:44 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;SpaceRay wrote:&lt;/b&gt;&lt;br /&gt;sorry this looks like chinese words for me &lt;br /&gt;Could you explain what use can this have please?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yeah, what he said  :D &lt;br /&gt;&lt;br /&gt;I know I want to see vectors in FF, that would be super cool, but what do you mean by &quot;vector functions&quot;?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sat, 18 Feb 2012 13:11:25 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Morgantao wrote:&lt;br /&gt;&lt;br /&gt;I know I want to see vectors in FF, that would be super cool&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;YES ! I also want to have vectors inside FF, and Vladimir said that would not be possible for 3.0 as they should change lots of things for this to be available.&lt;br /&gt;&lt;br /&gt;BUT I do not think that this thread is about &quot;vectors&quot; in the way we understand and know them.&lt;br /&gt;&lt;br /&gt;This is &quot;Vector Class&quot; which looking in google it has nothing to do with the graphic vector &lt;br /&gt;&lt;br /&gt;What I mean that it looks like chinese for me is the link that Sphinx have put and that you can here below&lt;br /&gt;&lt;br /&gt;Of course that I do not know anything about script, but also do not know what this would be useful in FF&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Sphinx wrote:&lt;br /&gt;&lt;br /&gt;&lt;a href='http://filterforge.com/wiki/index.php/Libraries_and_meta_classes' target='_blank' rel='nofollow'&gt;I posted my vector &quot;class&quot;&lt;/a&gt;.. I will post an example on how to use it when I find time&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 21 Feb 2012 06:19:51 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;a href='http://en.wikipedia.org/wiki/Vector_graphics' target='_blank' rel='nofollow'&gt;vector graphics&lt;/a&gt; ≠ &lt;a href='http://en.wikipedia.org/wiki/Vector_(mathematics_and_physics)' target='_blank' rel='nofollow'&gt;vector&lt;/a&gt;&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_1629708492');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Tue, 21 Feb 2012 13:11:28 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I know what Vector is:&lt;br /&gt;It's a mathematical term. A quantity represented by an arrow with both direction and magnitude!&lt;br /&gt;&lt;br /&gt;&lt;img src='http://images.wikia.com/villains/images/5/5e/Vector-_Despicable_Me.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1629708492' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;OH YEAH!  :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Darrell Plank&lt;/b&gt;, &lt;em&gt;Thu, 22 Mar 2012 20:21:55 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Not sure what type of vector functions you're thinking of.  Rotating a vector, finding it's length, translating it, normalizing it - what else were you thinking of?  The formulas for all of these are pretty simple:&lt;br /&gt;&lt;br /&gt;Length of vector (x, y): Sqrt(x * x + y * )&lt;br /&gt;&lt;br /&gt;Rotating vector (x, y) by angle t: (x * Cos(t) - y * Sin(t), x * Sin(t) + y * Cos(t))&lt;br /&gt;&lt;br /&gt;Translate vector(x, y) by vector(tx, ty): (x + tx, y + ty)&lt;br /&gt;&lt;br /&gt;Normalize a vector (x, y): (x / length(x, y), y / length(x, y))&lt;br /&gt;&lt;br /&gt;Are you thinking of anything else?  I guess to give full linear transforms you should be able to scale also -&lt;br /&gt;&lt;br /&gt;Scale vector (x, y) by factor s: (x * s, y * s)&lt;br /&gt;&lt;br /&gt;Reflect around y axis: (-x, y)&lt;br /&gt;&lt;br /&gt;Reflect around x axis: (x, -y)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Wed, 11 Apr 2012 10:26:02 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;As far as I can tell, we are talking about using &lt;a href='http://en.wikipedia.org/wiki/Matrix_%28mathematics%29' target='_blank' rel='nofollow'&gt;matrix math&lt;/a&gt; to transform (scale, rotate, etc.) (points or) vectors in two or three dimensions. &lt;br /&gt;&lt;br /&gt;This is a simplified and faster method of calculating such transformations. The rotation table for 3D vectors certainly look simpler than doing the same trigonometrically. &lt;br /&gt;&lt;br /&gt;Now, why we never studied this in school is a mystery to me, but it seems very useful in computer graphics... Hmm, probably exactly for that reason.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Thu, 12 Apr 2012 02:56:06 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;ThreeDee, you're right.&lt;br /&gt;Vectors are the key to computer graphics. Both 2D and 3D.&lt;br /&gt;In my younger days I studied some of this in college, but I don't remember any of it these days....  :(&lt;/p&gt;
</description>
</item>
<item><title>One script component vs. several?</title> 
		             <dc:creator>ThreeDee</dc:creator> 
		             <category></category> 
		             <pubDate>Tue, 10 Apr 2012 09:26:33 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9736</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9736</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Tue, 10 Apr 2012 04:19:15 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Does anyone happen to know the overhead of using several script components to achieve something as opposed to scripting it all in one script?&lt;br /&gt;&lt;br /&gt;What I mean, for example, is if I do one map script that controls color and another one that controls lightness, this seems to be much slower than doing one script that does both.&lt;br /&gt;&lt;br /&gt;I haven't done any actual speed comparison between these, but I was hoping someone could tell me if there is a significant gain in putting all functions into one script component rather than spreading them out between two or more.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 10 Apr 2012 07:20:20 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;a href='http://www.filterforge.com/wiki/index.php/Scripting_Tips_and_Tricks#.22To_script_or_not_to_script.22' target='_blank' rel='nofollow'&gt;http://www.filterforge.com/wiki/index..._script.22&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Tue, 10 Apr 2012 08:32:18 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks for the link Sphinx&lt;br /&gt;&lt;br /&gt;Is this a possible answer to this question? So according this below would mean that one script would be better than many separated ones even if they are smaller and simpler.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Invert comparison&lt;/b&gt;&lt;br /&gt;Compared to the build-in Filter Forge Invert, a script version takes four times as long to render, and this was with a very optimal script construction&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Minimize no. of separate scripts&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I started chaining build-in Inverts until I reached the same processing time as the single scripted Invert.. ~18 Inverts! This illustrates the low overhead of adding individual non-script components. &lt;br /&gt;&lt;br /&gt;Repeating the actual invert code inside the script 18 times did not add much overhead though. &lt;br /&gt;&lt;br /&gt;The conclusion here is that when you already entered the scripting context of a single script component, the script execution is pretty fast. Instead of introducing several separate script components (each with their function), try to stick to one and use functions etc to structure it.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ONLY USE SCRIPTS FOR WHAT CAN´T BE DONE WITH COMPONENTS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;From the wiki link above&lt;br /&gt;When you start to get hold of scripting in Filter Forge, you'll quickly notice that the time to code a simple script is often shorter than the time used to manually drag in components and do the setup.&lt;br /&gt;&lt;br /&gt; However there is good reason not to do scripts for simple constructions: Speed!&lt;br /&gt;&lt;br /&gt;By default the scripting functionality itself costs additional processing time, even though the script is as simple as it gets&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;So I think that if one script can be done with components instead of make it probably easier with the scripts for who knows how to do it, would be better to make it with components because it would be faster and also better to understand for others that do not have the skills and experience in scripting.&lt;br /&gt;&lt;br /&gt;Scripting then will be useful when it would be not possible with the components or perhaps would be very complex to build with the components.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Tue, 10 Apr 2012 09:26:33 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks Sphinx,&lt;br /&gt;&lt;br /&gt;Exactly what I needed to know.&lt;br /&gt;&lt;br /&gt;TD&lt;/p&gt;
</description>
</item>
<item><title>Fractal Explorer</title> 
		             <dc:creator>Sphinx.</dc:creator> 
		             <category></category> 
		             <pubDate>Mon, 27 Feb 2012 10:26:56 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7496</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7496</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 08:56:18 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Here is a simple little fractal explorer script that lets you zoom in on an area using the color picker. Note that since we don't have the Color inspector in main view, you have to enter the editor and select the script component..&lt;br /&gt;&lt;br /&gt;If you turn off Navigation mode, you will see a combined output of the following:&lt;br /&gt;R: Gradient spans between each iteration &lt;br /&gt;G: Rotation direction of each iteration&lt;br /&gt;B: Continuous gradient&lt;br /&gt;&lt;br /&gt;The continuation of the gradient is not perfect yet and it is influenced by the settings of the fractal, which is not cool. I tried out a common approach for smoothing curvature btwn each iteration (iteration - log(log(modulus))/log(bailout)), but this looks even worse regarding continuity. If some of you hardcore fellas can work out a way to produce a continuing smooth gradient I'd be very happy :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 09:02:42 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Here is an example..&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 09:04:19 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;..and its non navigational mode output, with R,G &amp; B containing modes as explained above&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 11:20:02 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Sphinx, this is great! Could you include the fractal from the second post as a preset? (I wanted to render it with Ambient Occlusion, but couldn't pinpoint the necessary settings.)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 11:44:41 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I can't remember the position, but I clicked twice in a fern'ish point.. hehe&lt;br /&gt;&lt;br /&gt;I wanted to store some presets, but that turned out to be impossible.. :evil: ..Because Color control does not support HDR, so I can't use it for the 'Position' property (and thereby get the Position stored). If I do not connect a control, the setting will be global for all &quot;presets&quot;&lt;br /&gt;&lt;br /&gt;I could just add individual controls for x,y and scale, but that kinda takes away the whole point of this: click and paste to zoom ;)&lt;br /&gt;&lt;br /&gt;If I store that rendering as a preset, it will take over the main position (which I don't want)&lt;br /&gt;&lt;br /&gt;I hope this example will inspire you to add some sort of zoom-to-region tool in the future (i.e. instead of sampling over 0..1,0..1 you sample over a user defined sub region). For now I just wish we had HDR color controls and Color Inspector in main view ;)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;GMM&lt;/b&gt;, &lt;em&gt;Fri, 11 Jun 2010 02:54:24 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;For now I just wish we had HDR color controls&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;A non-intuitive workaround is to use Assemble RGB and have Value controls connected to its channel inputs :)&lt;br /&gt;All these support HDR colors.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;StevieJ&lt;/b&gt;, &lt;em&gt;Fri, 11 Jun 2010 03:22:53 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Now we're talk'n!!!    :devil:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 13 Jun 2010 15:38:11 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;New fractal type, based on differences btwn iterations&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 13 Jun 2010 15:39:32 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;and a version for the pink slider ppl ;)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 13 Jun 2010 15:41:22 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;full view of the fractal&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 13 Jun 2010 15:44:06 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&quot;goood veggie..good veggie&quot; .. &quot;mrooagh!&quot;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 13 Jun 2010 16:26:01 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;barnsley experiments&lt;br /&gt;#1&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 13 Jun 2010 16:26:22 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;#2&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 13 Jun 2010 16:26:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;#3&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronjonnie&lt;/b&gt;, &lt;em&gt;Sun, 13 Jun 2010 16:30:41 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hey Sphinx.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;VERY VERY COOL!!&lt;/b&gt; ;) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Have a good evening,&lt;/b&gt; :) &lt;br /&gt;&lt;br /&gt;Ron&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Mon, 14 Jun 2010 02:44:03 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Gorgeous stuff, Sphinx,&lt;br /&gt;&lt;br /&gt;Now I'm all excited about fractals again!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 14 Jun 2010 04:43:47 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&quot;stop while the going is good&quot;; tweaking the bailout method can create some really funky patterns, this one is math.max(x/y,y/x):&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronjonnie&lt;/b&gt;, &lt;em&gt;Mon, 14 Jun 2010 05:44:04 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Good morning Everyone,&lt;br /&gt;&lt;br /&gt;Yes Beautiful Sphinx.!&lt;br /&gt;&lt;br /&gt;Hey ThreeDee, &lt;br /&gt;Good to hear that you are excited about fractals again! &lt;br /&gt;I Pray you feel the same about the tragic loss of that beautiful water filter, &amp; will &lt;b&gt;please rebuilt it soon&lt;/b&gt;. ;) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Have a GREAT day everyone.&lt;/b&gt; :) &lt;br /&gt;&lt;br /&gt;Ron&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Lucato&lt;/b&gt;, &lt;em&gt;Mon, 14 Jun 2010 18:01:46 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Nice one Sphinx. Congratulations.&lt;br /&gt;You would add your link/file at &lt;a href='http://www.filterforge.com/forum/read.php?PAGEN_1=1&amp;FID=18&amp;TID=7474#nav_start' target='_blank' rel='nofollow'&gt;Script Library&lt;/a&gt; thread. ;0)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Carl&lt;/b&gt;, &lt;em&gt;Wed, 16 Jun 2010 01:56:19 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;wow these are great Sphinx 8)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Kraellin&lt;/b&gt;, &lt;em&gt;Sun, 20 Jun 2010 16:00:30 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;very cool! :)&lt;br /&gt;&lt;br /&gt;i downloaded that filter but how in the world did you get those examples from that filter? we need a 'scripting for dummies' forum! :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Paul Wolfe&lt;/b&gt;, &lt;em&gt;Sun, 20 Jun 2010 22:19:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hi Kraellin:&lt;br /&gt;&lt;br /&gt;I agree with you on that. I took a look at the Filter Fractal Explorer and the map script component needs some sliders attached to make it work. I added those in changed a few numbers (just a random thing) until I got this sample.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Paul Wolfe&lt;/b&gt;, &lt;em&gt;Sun, 20 Jun 2010 22:24:53 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I then added more useful components, Scale, Rotate, Offset and contrast. I played around with it and got 10 neat samples. They are saved as presets. They all have the same feel but look different. Here is the filter and below 2 samples.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Paul Wolfe&lt;/b&gt;, &lt;em&gt;Sun, 20 Jun 2010 22:26:55 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Preset 10 with rotate&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Paul Wolfe&lt;/b&gt;, &lt;em&gt;Sun, 20 Jun 2010 22:27:47 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Preset 6 with exteme zoom&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Paul Wolfe&lt;/b&gt;, &lt;em&gt;Sun, 20 Jun 2010 22:41:51 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Just for fun I changed the formula changed some X's and Y's and got this picture. I don't understand mapscript either but am hoping to learn it with all the smart people on this board. Just one word of warning, make sure that your iterations are set at 1 until you get used to this filter. As you increase the number your computer will really slow down...but you can get interesting results.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 00:29:41 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Ah, cool Paul!&lt;br /&gt;The &quot;filter&quot; is not a normal, &quot;start it up and render&quot; filter.. its a base for further experiments - you need to work with it in editing mode, otherwise its not much fun ;-)&lt;br /&gt;&lt;br /&gt;About the navigation function: it is way more easy to use than a chain of scale and offsets ;-) &lt;br /&gt;&lt;br /&gt;Follow the instructions, i.e. enter the editor (it will not work in main view), and enable &quot;navigation mode&quot; in the script. Then choose the color inspector tool (eye dropper) and click once in the area you want to zoom in on in the preview (the color is copied automatically when you click). The copied color is containing x,y and scale coordinates.. go to the &quot;position&quot; input of the map script and paste the color ..&lt;br /&gt;&lt;br /&gt;Hint: you can store nice areas in the switch for later use..&lt;br /&gt;&lt;br /&gt;When you're not in navigation mode, you should extract R,G,B via three &quot;Extract RGB&quot; components.. now you have three different gradient modes which you can use creatively..&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Paul Wolfe&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 09:03:44 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks Sphinx, Yes I gave the eyedroper a try and I was able to get it to work.&lt;br /&gt;Thanks again&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronjonnie&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 09:38:46 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Good morning Everyone,&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Very nice work Sphinx &amp; Paul, you are on the right track.&lt;/b&gt;&lt;br /&gt;I might have to look into this, hard for the old school guys..lol.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Have a GREAT day!&lt;/b&gt; :) &lt;br /&gt;&lt;br /&gt;Ron&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Paul Wolfe&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 10:08:08 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hi Everyone:&lt;br /&gt;&lt;br /&gt;Just 1 more example filter that looks interesting. There are 11 presets but you may want to delete some. A few are close in the renderings. If you do like this filter, I suggest rendering at 3000 X 3000 pixels or higher. The detail increases but you just seem to want more as you zoom in.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Paul Wolfe&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 10:09:06 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Preset 4&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Paul Wolfe&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 10:09:25 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Preset 10&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 14:12:12 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;again cool stuff :) last one almost looks like some sort of strange building&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;The detail increases but you just seem to want more as you zoom in. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Yes, the bailout principle is static - I'll see if I can figure out something related to the sample frequency instead..&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Sun, 26 Feb 2012 15:05:39 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hey Sphinx, these are great!&lt;br /&gt;&lt;br /&gt;A couple of questions:&lt;br /&gt;&lt;br /&gt;How do I zoom in?&lt;br /&gt;&lt;br /&gt;How did you make the barnsley experiments?  - Can you upload these too?&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_449600164');</script>
<script>oForumForm['images_for_resize'].push('popup_298512700');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sun, 26 Feb 2012 17:56:16 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Very cool and beautiful examples of fractals, I specially like more the ones from Sphinx, and in particular these ones below&lt;br /&gt;&lt;br /&gt;&lt;img src='http://filterforge.com/upload/forum/770/mandelbrot%20metal.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_449600164' border='0' /&gt;&lt;br /&gt;&lt;br /&gt;Love the Barnsley one shown here below  :) &lt;br /&gt;&lt;br /&gt;&lt;img src='http://filterforge.com/upload/forum/b69/barnsley3.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_298512700' border='0' /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 27 Feb 2012 10:26:56 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;How do I zoom in? &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Hehe, yes it is a somewhat weird method  :D &lt;br /&gt;&lt;br /&gt;That initial coloring actually represents coordinates red = x, green = y, blue = zoom level.&lt;br /&gt;&lt;br /&gt;You must enter the filter editor and select the eye dropper / color inspector tool. Click on the area you want to zoom into with the eye dropper, and then paste the color in the Position input of the script.&lt;/p&gt;
</description>
</item>
<item><title>how to use script to offset image</title> 
		             <dc:creator>DHZ</dc:creator> 
		             <category></category> 
		             <pubDate>Mon, 30 Jan 2012 08:45:37 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9391</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9391</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;DHZ&lt;/b&gt;, &lt;em&gt;Sun, 29 Jan 2012 06:50:13 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I know use offset node can offset image , but how to use script do that? anyone can help me?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Morgantao&lt;/b&gt;, &lt;em&gt;Sun, 29 Jan 2012 07:14:11 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;+1 from me  :) &lt;br /&gt;&lt;br /&gt;Interesting question, and would like to learn anything I can about scripting, so if you don't mind, I'll be following this thread  :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;DHZ&lt;/b&gt;, &lt;em&gt;Sun, 29 Jan 2012 22:53:56 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;hey,guys,I found the solution , very simple. first, a very important information of image is rgba channel and uv coordinate or xy coordinate, anyway, it like a line-ramp.&lt;br /&gt;code in here:&lt;br /&gt;[CODE]&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	-- Image generation code goes here.&lt;br /&gt;	ofx = get_sample_grayscale(x, y, OFFSETX)&lt;br /&gt;	ofy = get_sample_grayscale(x, y, OFFSETY)&lt;br /&gt;&lt;br /&gt;	adjx = get_sample_grayscale(x,y,ADJUSTX)&lt;br /&gt;	adjy = get_sample_grayscale(x,y,ADJUSTY)&lt;br /&gt;&lt;br /&gt;	dis = get_sample_grayscale(x,y,DISAPPEAR)&lt;br /&gt;&lt;br /&gt;	pre = get_sample_grayscale(x, y, PERCENTAGE)&lt;br /&gt;	r,g,b,a = get_sample_map(x+ofx*pre/dis-adjx,y+ofy*pre/dis-adjy,SOURCE)&lt;br /&gt;&lt;br /&gt;	return r,g,b,a&lt;br /&gt;&lt;br /&gt;end;&lt;br /&gt;[/CODE]&lt;br /&gt;and I upload that to web site, but nothing reaction now..&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;DHZ&lt;/b&gt;, &lt;em&gt;Mon, 30 Jan 2012 08:45:37 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;hi! filter address :&lt;a href='http://www.filterforge.com/filters/10295.html' target='_blank' rel='nofollow'&gt;Image offset&lt;/a&gt;&lt;br /&gt;but one problem live, how to rotate image? I pondered for long time but I couldn't. help me!&lt;/p&gt;
</description>
</item>
<item><title>realizing FFT</title> 
		             <dc:creator>Gmur</dc:creator> 
		             <category></category> 
		             <pubDate>Thu, 19 Jan 2012 16:06:40 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7823</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7823</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Gmur&lt;/b&gt;, &lt;em&gt;Wed, 15 Sep 2010 01:39:33 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;so... I just whanted to realize FFT algorithm in a simple way avoiding the greatest Sample-Based Architecture :) but... is there any way for faster memory allocation?&lt;br /&gt;for example the code below makes buffer for image and then draws the image from that buffer (only 100x100 pixels) but one cycle of buffer creation takes about 5 sec. so it will be impossible to create 1000x1000 pixel buffer or large. What is the problem or this aproach is impossible to realize? &lt;br /&gt;&lt;br /&gt;function prepare()&lt;br /&gt;	calculated = 0&lt;br /&gt;	a=1&lt;br /&gt;	 mt = {} &lt;br /&gt;	 N = 100 &lt;br /&gt;	 M = 100&lt;br /&gt;    for i=0,N do&lt;br /&gt;      mt[i] = {}     &lt;br /&gt;      for j=0,M do&lt;br /&gt;        mt[i][j] = {0,0,0}&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;	&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function cheat()&lt;br /&gt;	if calculated==0 then&lt;br /&gt;		for i=0,N do&lt;br /&gt;			for j=0,M do&lt;br /&gt;				mt[i][j][1], mt[i][j][2], mt[i][j][3] = get_sample_map(i/N,j/M,TEST)&lt;br /&gt;				&lt;br /&gt;		  end&lt;br /&gt;                end&lt;br /&gt;	calculated=1&lt;br /&gt;	end&lt;br /&gt;	return 1&lt;br /&gt;		&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	cheat()&lt;br /&gt;	i=math.ceil(x*(N-1))&lt;br /&gt;	j=math.ceil(y*(M-1))	&lt;br /&gt;	return mt[i][j][1], mt[i][j][2], mt[i][j][3], 1&lt;br /&gt;end;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 15 Sep 2010 02:03:30 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I tried out something similar. It is not currently possible to implement in an efficient way. Check out &lt;a href='http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7472' target='_blank' rel='nofollow'&gt;this discussion&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Gmur&lt;/b&gt;, &lt;em&gt;Wed, 15 Sep 2010 03:17:25 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;ok... thanks for the link Sphinx. It is really impossible this way then. may be there is some possibility for direct acсessing memory of the input map and using some external prepared c++ library? I read somewhere that there are some kind of possible c++ extensions.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 15 Sep 2010 11:23:46 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I thought about several workarounds but I can't really find any solution for large temporary buffers. If you only need a &quot;read only&quot; buffer, you can use a blur component in between your source and script (radius at minimum, 0.000000001 or something). This works somewhat like a large cache, but only for reads.&lt;br /&gt;&lt;br /&gt;I also looked into loading external libraries, but AFAIK it's something that must be allowed in the host application. We're limited to using external script files (which again is only possible in unsafe mode, so you can't submit to the library) - and this is really not changing anything regarding the whole thread/script duplication issue.&lt;br /&gt;&lt;br /&gt;I'm hoping they will soon add some sort of bitmap based script component which internally takes care of handling allocation of temporary buffers and sample collection etc.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Gmur&lt;/b&gt;, &lt;em&gt;Thu, 16 Sep 2010 00:32:44 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;get_sample_map is something like readonly buffer already, isn't it?&lt;br /&gt;Ok, We'll wait for better times :) Hope FilterForge will be something like NI Reaktor but for pictures. It is a huge lack of interesting and usuable software in 2d graphical industry nowdays. I wanted to realize Fast Fourier transform because with just one dot so many interesting structures can be created and it is a large field of experiments. For example here is a picture of black dot IFFt distored with Flexify2 filter.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;tigerAspect&lt;/b&gt;, &lt;em&gt;Sat, 18 Sep 2010 10:21:10 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Yeah, chalk this up on my wishlist for when we get the Bitmap Script component. I think it now consists of:&lt;br /&gt;Distance Transform&lt;br /&gt;Line Integral Convolution&lt;br /&gt;Fast Fourier Transform&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Kraellin&lt;/b&gt;, &lt;em&gt;Sat, 18 Sep 2010 23:34:46 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;cool image, gmur :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Dmitry Sapelnikov&lt;/b&gt;, &lt;em&gt;Tue, 21 Sep 2010 02:36:44 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Bitmap-based Scripting component is currently in our plans. Actually it has been being in the plans since we started the development of FF scripting. =)&lt;br /&gt;&lt;b&gt;Gmur&lt;/b&gt;, thank you for your interest in FF scripting, but unfortunately such snippets are squared wheels =( &lt;br /&gt;The best idea is to understand sampled-based renderers philosophy, not to take attempts to create &quot;adaptive&quot; tools for your old &quot;pixel&quot; skills. &lt;br /&gt;Sample approach is size-independent, it doesn't consume memory and has an ideal support of anti-aliasing.&lt;br /&gt;95% of our rendering algorithms are sample-based. We use bitmap caching only when it can drastically increase speed, usually in case of high sample reusing (blurs, median filters, etc.)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;tigerAspect&lt;/b&gt;, &lt;em&gt;Tue, 21 Sep 2010 09:45:28 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Unfortunately, from my understanding, the three techniques I mention rely on the fundamental nature of bitmaps to function, mostly the ability to compare points in the image in a systemic manner, and thus have no equivalent in sample-based rendering. Distance Transform is a good example, it's closely mathematically related to a Gaussian Blur, which can't be achieved in sample-based rendering (to my knowledge).&lt;br /&gt;&lt;br /&gt;Please, feel free to correct me if I'm wrong.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 22 Sep 2010 03:15:30 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Unfortunately, from my understanding, the three techniques I mention rely on the fundamental nature of bitmaps to function, mostly the ability to compare points in the image in a systemic manner, and thus have no equivalent in sample-based rendering.&lt;br /&gt;Distance Transform is a good example, it's closely mathematically related to a Gaussian Blur, which can't be achieved in sample-based rendering (to my knowledge).  &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;That is not completely true. Many of the bitmap based components can be implemented in a sample based approach, they will just be extremely heavy (you'd have to fetch the same samples many times and moreover in a way that ruins the sample cache).&lt;br /&gt;&lt;br /&gt;While it may look similar, distance transform is very different from gaussian blur in implementation. A distance transform finds the minimum distance to a shape, while blurring is about averaging a region around the given coordinate. They share some properties in the way they can be optimized by multi-pass processing, and the fact that both must assume a minimum sample distance or sample step size (with a bitmap this distance is simply one pixel). In a pure samplebased context you don't have this restriction, you simply pick the samples you need, at any samplerate.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;tigerAspect&lt;/b&gt;, &lt;em&gt;Wed, 22 Sep 2010 07:32:30 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;They share some properties in the way they can be optimized by multi-pass processing, and the fact that both must assume a minimum sample distance or sample step size (with a bitmap this distance is simply one pixel).&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Yeah, that's basically what I meant. :D I'm not nearly as proficient in these thing as I may like.&lt;br /&gt;I'd actually forgotten that the restriction is not absolute, but it does essentially make it unusable.&lt;br /&gt;&lt;br /&gt;The main problem seems to be that a lot of the research into interesting graphical techniques can't really be generalized in an efficient manner to FF's rendering engine.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Dmitry Sapelnikov&lt;/b&gt;, &lt;em&gt;Fri, 24 Sep 2010 02:42:48 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;All signal-processing graphical algorithms can be implemented via sample approach because is's more common technique than bitmaps. In fact a bitmap in the terms of samples is a 2d matrix filled with sampled values on a regular grid.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;tigerAspect wrote:&lt;/b&gt;&lt;br /&gt;The main problem seems to be that a lot of the research into interesting graphical techniques can't really be generalized in an efficient manner to FF's rendering engine. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Unfortunately, this is true. FF has a weak support of algorithms which have a high rate of sample reusing. The main obstacle is our &quot;Size&quot; slider. Technically speaking it changes a step of the sampling grid. For absolutely correct processing we have to change cell step in bitmap caches too.&lt;br /&gt;&lt;br /&gt;Smaller step - higher cache resolution - increased memory consumption and time for caching. This unpleasant chain makes us to invite tricks and hacks for our bitmap-based components as it gets us an ability to not change the resolution of caches while FF filter scaling works.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;xirja&lt;/b&gt;, &lt;em&gt;Tue, 04 Oct 2011 20:00:21 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Bitmap-based Scripting component is currently in our plans. Actually it has been being in the plans since we started the development of FF scripting. =) &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;The version 4 release will have this Bitmap-based Scripting component?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;CorvusCroax&lt;/b&gt;, &lt;em&gt;Thu, 19 Jan 2012 16:06:40 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hey: I posted in the 'General' forum about the latest MIT breakthroughs for Super Fast (&quot;near optimal&quot;) Fourier Transforms:  &lt;br /&gt;&lt;a href='http://www.filterforge.com/forum/read.php?FID=5&amp;TID=9331' target='_blank' rel='nofollow'&gt;http://www.filterforge.com/forum/read...5&amp;TID=9331&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Paper here: &lt;a href='http://arxiv.org/abs/1201.2501v1' target='_blank' rel='nofollow'&gt;http://arxiv.org/abs/1201.2501v1&lt;/a&gt;&lt;br /&gt;Article here: &lt;a href='http://web.mit.edu/newsoffice/2012/faster-fourier-transforms-0118.html' target='_blank' rel='nofollow'&gt;http://web.mit.edu/newsoffice/2012/fa...-0118.html&lt;/a&gt;&lt;/p&gt;
</description>
</item>
<item><title>Sorting a Gradient using table.sort(t,comp)</title> 
		             <dc:creator>xirja</dc:creator> 
		             <category></category> 
		             <pubDate>Fri, 13 Jan 2012 07:30:41 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9293</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9293</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;xirja&lt;/b&gt;, &lt;em&gt;Tue, 03 Jan 2012 10:03:10 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Trying to sort a gradient based on perceptual brightness and then selecting the darkest color.&lt;br /&gt;&lt;br /&gt;The script included in the attachment does not give the expected result.  Getting values from&lt;br /&gt;the associative table doesn't seem to be working properly, as dark blue should be the result.&lt;br /&gt;&lt;br /&gt;Most likely there is a problem with getting values from the table after the sort.  a nil issue?&lt;br /&gt;&lt;br /&gt;Any other ideas on how to use perceptual(Lab L) values to sort/reorder colors?&lt;br /&gt;&lt;br /&gt;???&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 11 Jan 2012 10:29:41 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;try this replacement:&lt;br /&gt;[CODE]function get_sample(x, y)&lt;br /&gt;	local c = {}&lt;br /&gt;	for i = 1, 4 do&lt;br /&gt;		c[i] = {}&lt;br /&gt;		c[i].li = get_sample_grayscale(x, y, _G[&quot;I&quot;..i])&lt;br /&gt;		c[i].r,c[i].g,c[i].b,c[i].a = get_sample_map(x, y, _G[&quot;C&quot;..i])&lt;br /&gt;	end;&lt;br /&gt;	local function compare(a,b)&lt;br /&gt;		return (a.li &amp;lt; b.li)&lt;br /&gt;	end&lt;br /&gt;	table.sort(c, compare)&lt;br /&gt;	return c[1].r, c[1].g, c[1].b, c[1].a&lt;br /&gt;end;[/CODE]&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;xirja&lt;/b&gt;, &lt;em&gt;Fri, 13 Jan 2012 07:30:41 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Oh great, that _G[&quot;I&quot;..i ] for multiple inputs!  Thank you!  It works, and much more elegantly than my baseball glove hands approach. :D &lt;br /&gt;&lt;br /&gt;If there was a more general case of sorting a spectrum using OUTPUT_WIDTH though?&lt;/p&gt;
</description>
</item>
<item><title>Spirals, Round Two</title> 
		             <dc:creator>Sphinx.</dc:creator> 
		             <category></category> 
		             <pubDate>Thu, 08 Dec 2011 01:10:39 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9179</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9179</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 29 Nov 2011 03:42:26 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Alright - I worked out a new basis for the spiral generation related to these two topics:&lt;br /&gt;&lt;br /&gt;&lt;a href='http://filterforge.com/forum/read.php?FID=11&amp;TID=9142' target='_blank' rel='nofollow'&gt;http://filterforge.com/forum/read.php?FID=11&amp;TID=9142&lt;/a&gt;&lt;br /&gt;and&lt;br /&gt;&lt;a href='http://filterforge.com/forum/read.php?FID=18&amp;TID=9133' target='_blank' rel='nofollow'&gt;http://filterforge.com/forum/read.php?FID=18&amp;TID=9133&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This new codebase supports two additional output modes: perpendicular gradient and division gradient. However it is not 100% complete yet and I need input from someone else. &lt;br /&gt;&lt;br /&gt;There are two problems: &lt;br /&gt;&lt;br /&gt;Output mode 1 is not correct - there is a very annoying split. Ideally this mode will index each &quot;arm&quot; with respect the given Division setting.&lt;br /&gt;&lt;br /&gt;Output mode 2 is not always in 0..1 range, and the gradient is not perfectly perpendicular to mode 3.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All comments are welcome :-)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 29 Nov 2011 03:43:37 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;mode 1&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 29 Nov 2011 03:43:55 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;mode 2&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 29 Nov 2011 03:44:07 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;mode 3&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_473210312');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Tue, 29 Nov 2011 08:20:22 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;img src='http://edn.sphinx-pa.de/images/smilies/Popcorn.gif'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_473210312' border='0' /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Wed, 30 Nov 2011 01:46:20 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;You guys have no idea how happy I am. I just saw this and choked on a olive I just chewed on. :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 30 Nov 2011 12:51:38 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I guess I have to fix this myself if you're just going to sit there and eat popcorn and olives :-D&lt;br /&gt;&lt;br /&gt;Well, erhm, I think I nailed it .. any comments/suggestions?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 30 Nov 2011 12:54:04 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&quot;Pics or it didn't happen!!&quot;... ok then (Divide = 3, i.e. DIV = 3)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Thu, 01 Dec 2011 13:08:10 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Awesome, and versatile! I love that you can do archimedean spirals with this. :D&lt;/p&gt;<script>oForumForm['images_for_resize'].push('popup_1516152751');</script>
<script>oForumForm['images_for_resize'].push('popup_2097735647');</script>
&lt;p&gt;&lt;small&gt;&lt;b&gt;xirja&lt;/b&gt;, &lt;em&gt;Wed, 07 Dec 2011 14:59:20 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Truly!&lt;br /&gt;&lt;br /&gt;I came up with a method that uses three bias curves, self modulated in series...&lt;br /&gt;&lt;br /&gt;&lt;img src='http://www.xirja.com/squidink.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_1516152751' border='0' /&gt;&lt;br /&gt;&lt;br /&gt; ...but this script is much more elegant and leads to many interesting possibilities...&lt;br /&gt;&lt;br /&gt;&lt;img src='http://www.xirja.com/frost.jpg'  alt='Image' onload=&quot;try{window.onForumImageLoad(this, '300', '300', 'FORUM');}catch(e){}&quot;  id='popup_2097735647' border='0' /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 08 Dec 2011 01:10:39 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Cool stuff xirja!&lt;br /&gt;&lt;br /&gt;I am working on improving &quot;mode 2&quot; (green ch. output) - the ramp should ideally be perpendicular to the spiral arm it represents. If you hook up a threshold you can easily see that the &quot;angle&quot; is not persistent...&lt;/p&gt;
</description>
</item>
<item><title>Script example with basic documentation</title> 
		             <dc:creator>bertie</dc:creator> 
		             <category></category> 
		             <pubDate>Tue, 22 Nov 2011 14:33:11 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9145</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=9145</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;bertie&lt;/b&gt;, &lt;em&gt;Tue, 22 Nov 2011 14:33:11 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;a href='http://www.filterforge.com/forum/read.php?FID=11&amp;TID=9104&amp;MID=97209#message97209' target='_blank' rel='nofollow'&gt;This post&lt;/a&gt; might be useful for scripting learners. I've documented how this radial blur script works. There is also a snippet avalable.&lt;br /&gt;&lt;br /&gt;I've also just uploaded a Bokeh filter using a script component. I will document how it works when I get a bit of time. You can find the Bokeh script &lt;a href='http://www.filterforge.com/filters/10119.html' target='_blank' rel='nofollow'&gt;here&lt;/a&gt; and there are examples of what it can do and how to use it &lt;a href='http://balchie.wordpress.com/2011/11/19/filterforge-bokeh-filter/' target='_blank' rel='nofollow'&gt;is here&lt;/a&gt;&lt;/p&gt;
</description>
</item>
<item><title>Help articles on Scripting (work in progress)</title> 
		             <dc:creator>Vladimir Golovin</dc:creator> 
		             <category></category> 
		             <pubDate>Fri, 18 Nov 2011 08:47:18 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7462</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7462</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Mon, 07 Jun 2010 09:31:25 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;We're uploading unfinished Help articles on scripting to the Filter Forge wiki. The articles are incomplete, some text, examples and pictures may be outdated -- but anyway, it's something to start with. We'll update the articles when the new content is written (and when we have time to do that.)&lt;br /&gt;&lt;br /&gt;Here's the list of articles that are currently uploaded:&lt;br /&gt;- &lt;a href='http://www.filterforge.com/wiki/index.php?title=Getting_Started_with_Scripting&amp;rcid=1734' target='_blank' rel='nofollow'&gt;Getting Started with Scripting&lt;/a&gt;&lt;br /&gt;- &lt;a href='http://www.filterforge.com/wiki/index.php?title=Referencing_Inputs&amp;rcid=1735' target='_blank' rel='nofollow'&gt;Referencing Inputs from Scripts&lt;/a&gt;&lt;br /&gt;- &lt;a href='http://www.filterforge.com/wiki/index.php?title=Sample-based_Architecture&amp;rcid=1740' target='_blank' rel='nofollow'&gt;Sample-Based Architecture&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Kraellin&lt;/b&gt;, &lt;em&gt;Mon, 07 Jun 2010 23:13:15 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Create a Map Script component (located in the Scripting category on the Component Bar).&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;ok, what if we have no scripting category on the component bar? &quot;Help Components&quot; doesnt show any such thing either. is this something upcoming or am i missing something here? and yes, this version 2, latest update.&lt;br /&gt;&lt;br /&gt;edit: and in looking further, what happened to the options? i no longer have an &quot;Options&quot; in the menu system.&lt;br /&gt;&lt;br /&gt;edit: never mind, found the options. lol. dont get old ;) but i still cant find anything about scripting within the editor.&lt;br /&gt;&lt;br /&gt;edit yet again: ok, seems i dont have the latest version. lol. stage 4 is out today. ok, forget i posted anything here :) :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Mike Blackney&lt;/b&gt;, &lt;em&gt;Tue, 08 Jun 2010 01:11:31 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Forget?  Impossible!! :D&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One thing that took me a while to realise is that the x and y values are still floats when you're sampling in script.  I thought they would be pixels (for some reason) then checked the wiki and suddenly it made sense that x+1 was returning the same thing.&lt;br /&gt;&lt;br /&gt;Is there any method I can call to get the input image dimensions in script?  Are there methods like this exposed, or are there plans to?  Sorry if asking questions like this are doubling up on wiki work.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Tue, 08 Jun 2010 05:40:21 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Mike Blackney wrote:&lt;/b&gt;&lt;br /&gt;I thought they would be pixels (for some reason)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Thank you for reminding me to upload the article on &quot;Filter Forge's Sample-Based Architecture&quot; :)&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Mike Blackney wrote:&lt;/b&gt;&lt;br /&gt;Sorry if asking questions like this are doubling up on wiki work. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Don't worry. The help file is the #1 priority right now, and within the help file scripting is the most important chunk of work -- though I can't promise that we'll update the Wiki versions often, we're not using them for internal editing.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Tue, 08 Jun 2010 05:48:16 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Mike Blackney wrote:&lt;/b&gt;&lt;br /&gt;Is there any method I can call to get the input image dimensions in script?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yes. They are not documented yet, but here's the list of FF variables available in Lua scripts:&lt;br /&gt;&lt;br /&gt;SIZE - value of the Size slider, available only to scripts that &quot;make use of the global Size setting&quot;.&lt;br /&gt;&lt;br /&gt;VARIATION  - value of the Variation slider, available only to scripts that &quot;make use of the global Variation setting&quot;.&lt;br /&gt;&lt;br /&gt;OUTPUT_WIDTH, OUTPUT_HEIGHT - image width and height, pixels&lt;br /&gt;&lt;br /&gt;SEAMLESS_REGION_WIDTH, SEAMLESS_REGION_HEIGHT - seamless region width and height, available only when the global Seamless Tiling checkbox is turned on.&lt;br /&gt;&lt;br /&gt;SEAMLESS - state of the global Seamless Tiling checkbox, true of false.&lt;br /&gt;&lt;br /&gt;Debugging tip: you can use the Color Inspector to display the value of a variable. Just return it in one of the RGB channels -- remember, FF is fully HDR :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Tue, 08 Jun 2010 07:49:58 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I've updated the original post with a link to a new article on sample-based architecture.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Mike Blackney&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 06:42:24 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks Vlad, that's brilliant! :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;BenBeckwith&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 21:45:53 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Something that might help aspiring scripters (such as me) is if you provided images of how you would create the example scripts out of existing components (if possible). For example, the radial gradient script could be accompanied with the attached image. I understood the explanation, but it took me a few read throughs to match it all up and understand it. Then I confirmed it by rebuilding it with nodes. :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;BenBeckwith&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 21:54:43 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Sorry, I totally forgot something. For added clarity...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Fri, 11 Jun 2010 00:20:23 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Brilliant Ben!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Fri, 18 Nov 2011 08:47:18 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Are the wiki articles on Scripting obsolete? I'm asking because it appears that the finished versions of those articles can be found in the Help section of the website, nicely formatted and all shiny. ;) &lt;br /&gt;&lt;br /&gt;If they are indeed obsolete, shouldn't we replace the wiki articles with links to the Help section? That might make things less confusing as to where to look for the 'definitive' scripting help.&lt;/p&gt;
</description>
</item>
<item><title>Initialization problem</title> 
		             <dc:creator>Sphinx.</dc:creator> 
		             <category></category> 
		             <pubDate>Thu, 17 Nov 2011 05:43:34 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8754</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8754</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 21 Aug 2011 07:41:22 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I'm working on a filter with a rather heavy initialization section. In theory the initialization script part should execute one time (I'm testing with only CPU core), however I counted more than 60 executions :-S&lt;br /&gt;&lt;br /&gt;Here is a dedicated test script that shows the problem (also attached, note it is unsafe due to the os.time() call):&lt;br /&gt;[CODE]&lt;br /&gt;function prepare()&lt;br /&gt;	do_initialize = true&lt;br /&gt;	stamp = os.time()&lt;br /&gt;	print(&quot;prepare (&quot;..stamp..&quot;) ---------------------&quot;);&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	if do_initialize then&lt;br /&gt;		do_initialize = false&lt;br /&gt;		print(&quot;initialize (&quot;..stamp..&quot;); x = &quot; .. x ..&quot;, y = &quot;..y);&lt;br /&gt;	end&lt;br /&gt;	return 0,0,0,0&lt;br /&gt;end;&lt;br /&gt;[/CODE]&lt;br /&gt;&lt;br /&gt;Here is the output (Filter Forge x86.log):&lt;br /&gt;&lt;br /&gt;[CODE]&lt;br /&gt;prepare (1313930290) ---------------------&lt;br /&gt;initialize (1313930290); x = 0,00083333333333333, y = 0,00083333333333333&lt;br /&gt;initialize (1313930290); x = 0,12583333333333, y = 0,00083333333333333&lt;br /&gt;initialize (1313930290); x = 0,25083333333333, y = 0,00083333333333333&lt;br /&gt;initialize (1313930290); x = 0,37583333333333, y = 0,00083333333333333&lt;br /&gt;initialize (1313930290); x = 0,50083333333333, y = 0,00083333333333333&lt;br /&gt;initialize (1313930290); x = 0,62583333333333, y = 0,00083333333333333&lt;br /&gt;initialize (1313930290); x = 0,75083333333333, y = 0,00083333333333333&lt;br /&gt;initialize (1313930290); x = 0,87583333333333, y = 0,00083333333333333&lt;br /&gt;initialize (1313930290); x = 0,00083333333333333, y = 0,12583333333333&lt;br /&gt;initialize (1313930290); x = 0,12583333333333, y = 0,12583333333333&lt;br /&gt;initialize (1313930290); x = 0,25083333333333, y = 0,12583333333333&lt;br /&gt;initialize (1313930290); x = 0,37583333333333, y = 0,12583333333333&lt;br /&gt;initialize (1313930290); x = 0,50083333333333, y = 0,12583333333333&lt;br /&gt;initialize (1313930290); x = 0,62583333333333, y = 0,12583333333333&lt;br /&gt;initialize (1313930290); x = 0,75083333333333, y = 0,12583333333333&lt;br /&gt;initialize (1313930290); x = 0,87583333333333, y = 0,12583333333333&lt;br /&gt;initialize (1313930290); x = 0,00083333333333333, y = 0,25083333333333&lt;br /&gt;initialize (1313930290); x = 0,12583333333333, y = 0,25083333333333&lt;br /&gt;initialize (1313930290); x = 0,25083333333333, y = 0,25083333333333&lt;br /&gt;initialize (1313930290); x = 0,37583333333333, y = 0,25083333333333&lt;br /&gt;initialize (1313930290); x = 0,50083333333333, y = 0,25083333333333&lt;br /&gt;initialize (1313930290); x = 0,62583333333333, y = 0,25083333333333&lt;br /&gt;initialize (1313930290); x = 0,75083333333333, y = 0,25083333333333&lt;br /&gt;initialize (1313930290); x = 0,87583333333333, y = 0,25083333333333&lt;br /&gt;initialize (1313930290); x = 0,00083333333333333, y = 0,37583333333333&lt;br /&gt;initialize (1313930290); x = 0,12583333333333, y = 0,37583333333333&lt;br /&gt;initialize (1313930290); x = 0,25083333333333, y = 0,37583333333333&lt;br /&gt;initialize (1313930290); x = 0,37583333333333, y = 0,37583333333333&lt;br /&gt;initialize (1313930290); x = 0,50083333333333, y = 0,37583333333333&lt;br /&gt;initialize (1313930290); x = 0,62583333333333, y = 0,37583333333333&lt;br /&gt;initialize (1313930290); x = 0,75083333333333, y = 0,37583333333333&lt;br /&gt;initialize (1313930290); x = 0,87583333333333, y = 0,37583333333333&lt;br /&gt;initialize (1313930290); x = 0,00083333333333333, y = 0,50083333333333&lt;br /&gt;initialize (1313930290); x = 0,12583333333333, y = 0,50083333333333&lt;br /&gt;initialize (1313930290); x = 0,25083333333333, y = 0,50083333333333&lt;br /&gt;initialize (1313930290); x = 0,37583333333333, y = 0,50083333333333&lt;br /&gt;initialize (1313930290); x = 0,50083333333333, y = 0,50083333333333&lt;br /&gt;initialize (1313930290); x = 0,62583333333333, y = 0,50083333333333&lt;br /&gt;initialize (1313930290); x = 0,75083333333333, y = 0,50083333333333&lt;br /&gt;initialize (1313930290); x = 0,87583333333333, y = 0,50083333333333&lt;br /&gt;initialize (1313930290); x = 0,00083333333333333, y = 0,62583333333333&lt;br /&gt;initialize (1313930290); x = 0,12583333333333, y = 0,62583333333333&lt;br /&gt;initialize (1313930290); x = 0,25083333333333, y = 0,62583333333333&lt;br /&gt;initialize (1313930290); x = 0,37583333333333, y = 0,62583333333333&lt;br /&gt;initialize (1313930290); x = 0,50083333333333, y = 0,62583333333333&lt;br /&gt;initialize (1313930290); x = 0,62583333333333, y = 0,62583333333333&lt;br /&gt;initialize (1313930290); x = 0,75083333333333, y = 0,62583333333333&lt;br /&gt;initialize (1313930290); x = 0,87583333333333, y = 0,62583333333333&lt;br /&gt;initialize (1313930290); x = 0,00083333333333333, y = 0,75083333333333&lt;br /&gt;initialize (1313930290); x = 0,12583333333333, y = 0,75083333333333&lt;br /&gt;initialize (1313930290); x = 0,25083333333333, y = 0,75083333333333&lt;br /&gt;initialize (1313930290); x = 0,37583333333333, y = 0,75083333333333&lt;br /&gt;initialize (1313930290); x = 0,50083333333333, y = 0,75083333333333&lt;br /&gt;initialize (1313930290); x = 0,62583333333333, y = 0,75083333333333&lt;br /&gt;initialize (1313930290); x = 0,75083333333333, y = 0,75083333333333&lt;br /&gt;initialize (1313930290); x = 0,87583333333333, y = 0,75083333333333&lt;br /&gt;initialize (1313930290); x = 0,00083333333333333, y = 0,87583333333333&lt;br /&gt;initialize (1313930290); x = 0,12583333333333, y = 0,87583333333333&lt;br /&gt;initialize (1313930290); x = 0,25083333333333, y = 0,87583333333333&lt;br /&gt;initialize (1313930290); x = 0,37583333333333, y = 0,87583333333333&lt;br /&gt;initialize (1313930290); x = 0,50083333333333, y = 0,87583333333333&lt;br /&gt;initialize (1313930290); x = 0,62583333333333, y = 0,87583333333333&lt;br /&gt;initialize (1313930290); x = 0,75083333333333, y = 0,87583333333333&lt;br /&gt;initialize (1313930290); x = 0,87583333333333, y = 0,87583333333333&lt;br /&gt;[/CODE]&lt;br /&gt;&lt;br /&gt;Variable &quot;do_initialize&quot; should remain false, but for some reason it doesn't. &quot;Prepare&quot; is only executed once, so what the h*** is going on here? Is this related to the rendering &quot;tiles&quot;?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 21 Aug 2011 08:11:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;This is very annoying :-S I can't prepare the script in function Prepare because get_sample calls are not allowed (I need to analyze multiple image inputs to get average color of the inputs). &lt;br /&gt;&lt;br /&gt;So I'm left with the option to analyze the images in the main get_sample function (with a similar initialization setup as described above). But the extreme overhead caused by the multiple executions (as described above) makes it practically unusable.. :evil: &lt;br /&gt;&lt;br /&gt;We really need a middle way here: some sort of initialization function that allows get_sample calls and can produce data that is shared in all threads/tiles.. &lt;br /&gt;&lt;br /&gt;FF programmers.. any comments?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Igor Lorents&lt;/b&gt;, &lt;em&gt;Mon, 22 Aug 2011 05:27:17 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Sphinx, thank you for reporting the issue.&lt;br /&gt;&lt;br /&gt;The problem seems to be in our architecture. Changes you've made in the Global table which contains definition for all global variables after the first initialization (which is made by calling the prepare() routine) do not propagate properly.&lt;br /&gt;That's why your initialization code in get_sample() function executes each time when the new rendering block is started.&lt;br /&gt;The problem should still persist even if you use single-threaded rendering, and your test sample illustrates it very well.&lt;br /&gt;&lt;br /&gt;So, this issue seems to be a pretty large piece of work, and unfortunately I won't have time for it until the release of version 3.0.&lt;br /&gt;&lt;br /&gt;Sorry for the inconvenience.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 22 Aug 2011 07:16:46 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I see - after Prepare has been called you assume the global table is not changed and simply copy the table... &lt;br /&gt;&lt;br /&gt;Could you possibly add some sort of &quot;super global&quot; table that works across tiles, or allow get_sample calls in prepare?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Igor Lorents&lt;/b&gt;, &lt;em&gt;Mon, 22 Aug 2011 07:42:08 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Could you possibly add some sort of &quot;super global&quot; table that works across tiles, or allow get_sample calls in prepare?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately no, because the behavior of the suggested &quot;super global&quot; table is absolutely equal to the intended behavior of the global table. We'll just have to implement it properly :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 22 Aug 2011 09:06:19 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Sigh... well, that &quot;bug&quot; along with the darn unpersist error blocks several of my projects. Patience..&lt;br /&gt;&lt;br /&gt;Thanks for the explanation anyways.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 17 Nov 2011 05:43:34 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Alright, FF3 released - time to bring this up again :-)&lt;br /&gt;&lt;br /&gt;The problem still persists: &lt;br /&gt;&lt;br /&gt;Global variables are not truly global, but only &quot;global&quot; inside a given rendering block. This will ruin smart logic such as initialization regions. &lt;br /&gt;&lt;br /&gt;A typical scenario: collect a set of samples and use their properties to determine global filtering (e.g. auto levels). This initial sample collection is only necessary to do once.&lt;/p&gt;
</description>
</item>
<item><title>Table memory limit?</title> 
		             <dc:creator>Sphinx.</dc:creator> 
		             <category></category> 
		             <pubDate>Mon, 14 Nov 2011 04:44:08 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7472</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7472</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 08 Jun 2010 07:52:30 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I'm getting some strange results with large tables. Do you have some limit to how large tables can be or memory usage in general for a script?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Tue, 08 Jun 2010 07:54:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Uh, no idea. We'll look into this.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Edit:&lt;/b&gt; Could you post the sample script here?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 08 Jun 2010 07:59:59 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Yep - it may very well be errors in the script though  ;) &lt;br /&gt;&lt;br /&gt;script:&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;function setPixRGBA(buf,cx,cy,r,g,b,a)&lt;br /&gt;	cx = math.floor(cx)&lt;br /&gt;	cy = math.floor(cy)&lt;br /&gt;	--zero indexed!&lt;br /&gt;	if (cx &amp;gt;= 0) and (cx &amp;lt; OUTPUT_WIDTH) and&lt;br /&gt;		(cy &amp;gt;= 0) and (cy &amp;lt; OUTPUT_HEIGHT)then&lt;br /&gt;		i = (cx + cy * OUTPUT_WIDTH) * 4 + 1&lt;br /&gt;		buf[i] = r&lt;br /&gt;		buf[i + 1] = g&lt;br /&gt;		buf[i + 2] = b&lt;br /&gt;		buf[i + 3] = a&lt;br /&gt;	end&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function getPixRGBA(buf,cx,cy)&lt;br /&gt;	cx = math.floor(cx)&lt;br /&gt;	cy = math.floor(cy)&lt;br /&gt;	--zero indexed!&lt;br /&gt;	if (cx &amp;gt;= 0) and (cx &amp;lt; OUTPUT_WIDTH) and&lt;br /&gt;		(cy &amp;gt;= 0) and (cy &amp;lt; OUTPUT_HEIGHT)then&lt;br /&gt;		local i = (cx + cy * OUTPUT_WIDTH) * 4 + 1&lt;br /&gt;		local r = buf[i]&lt;br /&gt;		local g = buf[i + 1]&lt;br /&gt;		local b = buf[i + 2]&lt;br /&gt;		local a = buf[i + 3]&lt;br /&gt;		return r,g,b,a	&lt;br /&gt;	end&lt;br /&gt;	return {0,0,0,0}&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function createBitmap(buf, src)&lt;br /&gt;	local sx = 1 / OUTPUT_WIDTH&lt;br /&gt;	local sy = 1 / OUTPUT_HEIGHT&lt;br /&gt;&lt;br /&gt;	for j=0,OUTPUT_HEIGHT-1 do&lt;br /&gt;		for i=0,OUTPUT_WIDTH-1 do&lt;br /&gt;			local r,g,b,a = get_sample_map(i*sx, j*sy, src)&lt;br /&gt;			setPixRGBA(buf, i, j, r,g,b,a)&lt;br /&gt;		end&lt;br /&gt;	end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function prepare()	&lt;br /&gt;	bitmap = {}&lt;br /&gt;	initialize = true&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	if (initialize == true) then&lt;br /&gt;		createBitmap(bitmap, SOURCE)&lt;br /&gt;		initialize = false&lt;br /&gt;	end&lt;br /&gt;	&lt;br /&gt;	-- do not work:&lt;br /&gt;	--local r,g,b,a = getPixRGBA(bitmap, x * OUTPUT_WIDTH, y * OUTPUT_HEIGHT)&lt;br /&gt;&lt;br /&gt;	-- works, but with error:&lt;br /&gt;	local r,g,b,a = getPixRGBA(bitmap, 300, 300)&lt;br /&gt;&lt;br /&gt;	return r,g,b,a&lt;br /&gt;end;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 08 Jun 2010 08:17:31 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hmm, I think its something else that fails, even a very small bitmap buffer causes the same problem.. still learning this lua stuff&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Dmitry Sapelnikov&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 01:32:28 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Heh, I've fixed this =)&lt;br /&gt;Script code after bug fixing:&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;function setPixRGBA(buf, cx, cy, r, g, b, a)&lt;br /&gt;	local cx = math.floor(cx)&lt;br /&gt;	local cy = math.floor(cy)&lt;br /&gt;	--zero indexed!&lt;br /&gt;	if (cx &amp;gt;= 0) and (cx &amp;lt; OUTPUT_WIDTH) and&lt;br /&gt;		(cy &amp;gt;= 0) and (cy &amp;lt; OUTPUT_HEIGHT)then&lt;br /&gt;		local i = (cx + cy * OUTPUT_WIDTH) * 4 + 1&lt;br /&gt;		buf[i] = r&lt;br /&gt;		buf[i + 1] = g&lt;br /&gt;		buf[i + 2] = b&lt;br /&gt;		buf[i + 3] = a&lt;br /&gt;	end&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function getPixRGBA(buf,cx,cy)&lt;br /&gt;	local cx = math.floor(cx)&lt;br /&gt;	local cy = math.floor(cy)&lt;br /&gt;	--zero indexed!&lt;br /&gt;	if (cx &amp;gt;= 0) and (cx &amp;lt; OUTPUT_WIDTH) and&lt;br /&gt;		(cy &amp;gt;= 0) and (cy &amp;lt; OUTPUT_HEIGHT)then&lt;br /&gt;		local i = (cx + cy * OUTPUT_WIDTH) * 4 + 1&lt;br /&gt;		local r = buf[i]&lt;br /&gt;		local g = buf[i + 1]&lt;br /&gt;		local b = buf[i + 2]&lt;br /&gt;		local a = buf[i + 3]&lt;br /&gt;		return r, g, b, a&lt;br /&gt;	end&lt;br /&gt;--	Fixed(Egret): return {0, 0, 0, 0} is incorrect here&lt;br /&gt;	&lt;b&gt;return 0, 0, 0, 0&lt;/b&gt;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function createBitmap(buf, src)&lt;br /&gt;--	Fixed(Egret): it's a proper conversion from the filter coords to&lt;br /&gt;--      the image coords &lt;br /&gt;	&lt;b&gt;local scale = 1 / SIZE&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;	for j=0, OUTPUT_HEIGHT-1 do&lt;br /&gt;		for i=0, OUTPUT_WIDTH-1 do&lt;br /&gt;			local r,g,b,a = get_sample_map(&lt;b&gt;i*scale, j*scale,&lt;/b&gt; src)&lt;br /&gt;			setPixRGBA(buf, i, j, r, g, b, a)&lt;br /&gt;		end&lt;br /&gt;	end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function prepare()&lt;br /&gt;	bitmap = {}&lt;br /&gt;	initialize = true&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	if (initialize == true) then&lt;br /&gt;		createBitmap(bitmap, SOURCE)&lt;br /&gt;		initialize = false&lt;br /&gt;	end&lt;br /&gt;&lt;br /&gt;--	Fixed(Egret): it's a proper conversion from the filter coords to&lt;br /&gt;--      the image coords &lt;br /&gt;   local r,g,b,a = getPixRGBA(bitmap, &lt;b&gt;x * SIZE, y * SIZE&lt;/b&gt;)&lt;br /&gt;	return r,g,b,a&lt;br /&gt;end;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Dmitry Sapelnikov&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 02:11:07 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;The problem which caused nils was tiny.&lt;br /&gt;&lt;br /&gt;But an approach used in the script makes it good &quot;don't do it!&quot; example (Sphinx, I'm sorry  :( Of course it's not your fault, just lack of info about scripting)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;For all FF script programmers:&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Never create tables or another kind of caches without really serious purpose&lt;/b&gt;. Caches in scripts consumes memory really hard because caches are independently created for each rendering thread. (For exapmle, if you've got double-core processor and &quot;use all CPU(s)&quot; option is enabled in FF options, script component creates at least 3 copies of one cache: 2 for filter preview rendering threads, and 1 for component thumbnail rendering.&lt;br /&gt;BTW, I've got independent infrastructure for components which need caching. And we haven't implemented it in script components yet.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Dmitry Sapelnikov&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 02:15:48 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Another point of discussion is coordinate systems used in FF.&lt;br /&gt;We are going to post an wiki article about it this week.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 02:37:10 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Egret, good point -- we should mention per-thread Lua state duplication in the help articles.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 03:31:08 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Ah, of course! Remains of my first implementation where I tried to store channels in a small table for each rgba pixel/sample, but that didn't work out (maan I wish I could drag off the script tab and maximize it ;) hint hint)&lt;br /&gt;&lt;br /&gt;About the memory consumption - yes I did notice things got slow with the &quot;large&quot; table. I am really just testing/learning things by trying out familiar concepts from earlier projects. &lt;br /&gt;&lt;br /&gt;Are you saying that the complete script is copied for each thread or what is going on? It would be quite useful if you somehow could declare a shared variable cross threads and script components, perhaps in some sort of read only state to avoid changing data problems. Or the other way around: declare that a script is not suitable for multithreaded processing. &lt;br /&gt;&lt;br /&gt;I think that you will see several attempts to implement bitmap filters, perhaps something can be done in this regard (some sort of bitmap filter script component which is wrapped by your general bitmap filter framework, with cache tiles etc).&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Igor Lorents&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 03:45:23 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Also, I'd like to mention an important thing about component sampling.&lt;br /&gt;&lt;br /&gt;Filter Forge core can take samples not only in [0..Size-1] bounds. We have to take some samples outside this area to make the proper supersampling of border pixels.&lt;br /&gt;That's why, your execution path went through the line I marked with bold below.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;function getPixRGBA(buf,cx,cy) &lt;br /&gt;local cx = math.floor(cx) &lt;br /&gt;local cy = math.floor(cy) &lt;br /&gt;--zero indexed! &lt;br /&gt;if (cx &amp;gt;= 0) and (cx &amp;lt; OUTPUT_WIDTH) and &lt;br /&gt;(cy &amp;gt;= 0) and (cy &amp;lt; OUTPUT_HEIGHT)then &lt;br /&gt;-- skipped....&lt;br /&gt;return r, g, b, a &lt;br /&gt;end &lt;br /&gt;&lt;b&gt;return 0, 0, 0, 0 &lt;/b&gt;&lt;br /&gt;end; &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;You can easily check that by adding the following line before the second return statement:&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;error (string.format(&quot;%d, %d&quot;, cx, cy))&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;After that, you'll see something like this in the log window:&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Script error (line 28): -1, -1.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Generally, I agree with Vladimir and Egret. Thanks for your post, Sphinx. Your code sample uncovers a lot of things which must be thoroughly explained in our help articles.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 04:00:05 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;(some sort of bitmap filter script component which is wrapped by your general bitmap filter framework, with cache tiles etc&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;This is planned, but it won't make it into the official release of 2.0.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;xirja&lt;/b&gt;, &lt;em&gt;Mon, 14 Nov 2011 04:44:08 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;:cry:  Perhaps with the official release of version 4.0?&lt;/p&gt;
</description>
</item>
<item><title>Pixel Coordinates</title> 
		             <dc:creator>Sabin</dc:creator> 
		             <category></category> 
		             <pubDate>Wed, 26 Oct 2011 02:54:43 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8961</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8961</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Sabin&lt;/b&gt;, &lt;em&gt;Thu, 20 Oct 2011 07:23:32 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;We know that the arguments (x,y) of get_sample represent number between 0, 1. It is not fully clear for me in which pixel (i,j) of the input image they mapp into. is this given by i = x * OUTPUT_WIDTH and j = y * OUTPUT_HEIGHT?&lt;br /&gt;&lt;br /&gt;Any help with this? &lt;br /&gt;&lt;br /&gt;Have someone writen some function that will transform (x,y) into some polar coords?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sabin&lt;/b&gt;, &lt;em&gt;Thu, 20 Oct 2011 07:26:51 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;One more question on the similar topics?&lt;br /&gt;&lt;br /&gt;For the arguments (x,y), What would the coordinates of the neigbour pixels will be?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 26 Oct 2011 02:54:43 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;The offset you might be looking for could be 1 / SIZE?&lt;/p&gt;
</description>
</item>
<item><title>Selection Width, Height and Center Coordinates</title> 
		             <dc:creator>hd8fdkd</dc:creator> 
		             <category></category> 
		             <pubDate>Mon, 19 Sep 2011 07:52:18 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8835</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8835</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;hd8fdkd&lt;/b&gt;, &lt;em&gt;Thu, 15 Sep 2011 01:37:01 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Is there way to get the size and center coordinates of selection area?&lt;br /&gt;&lt;br /&gt;I want to scale selection area without moving its center coordinates.&lt;br /&gt;In addition, I want to get selection area's width and height pixels.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 15 Sep 2011 03:05:50 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;The selection must be same size as the image loaded. If you use Transform &amp;gt; Scale component, just set the XY Anchor to &quot;Image Bounds&quot;, then 0.5,0.5 will be the center, and you can set any scale you want..&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;hd8fdkd&lt;/b&gt;, &lt;em&gt;Thu, 15 Sep 2011 04:46:16 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;If you use Transform &amp;gt; Scale component, just set the XY Anchor to &quot;Image Bounds&quot;, then 0.5,0.5 will be the center, and you can set any scale you want.. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Sphinx, thank you for your reply.&lt;br /&gt;&lt;br /&gt;In the Selection component, selected area is white square and unselected is black.&lt;br /&gt;I wanted to scale white square (selected area) while keeping the original center coordinates.&lt;br /&gt;&lt;br /&gt;I tried your method, but scale component applied to center of whole image.&lt;br /&gt;(Scale component's parameter set the XY Anchor to &quot;Image Bounds&quot;.&lt;br /&gt;And origin X and origin Y set to 0.5.)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 15 Sep 2011 05:01:33 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Oh! That's a whole different story!&lt;br /&gt;&lt;br /&gt;There is no simple way to do that, because you only have information about the whole selection map as such available. Selection data can also be gradual (i.e. graytones). &lt;br /&gt;&lt;br /&gt;What you need here is some sort of autotrim method that gives you the bounding rect of non zero selection samples. This is somewhat complicated to figure out when you work in a procedural rendering context..&lt;br /&gt;&lt;br /&gt;Maybe it would be better to go at the problem from another perspective: what is your overall idea / goal here?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;hd8fdkd&lt;/b&gt;, &lt;em&gt;Thu, 15 Sep 2011 06:59:08 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;There is no simple way to do that, because you only have information about the whole selection map as such available. Selection data can also be gradual (i.e. graytones).&lt;br /&gt;&lt;br /&gt;What you need here is some sort of autotrim method that gives you the bounding rect of non zero selection samples. This is somewhat complicated to figure out when you work in a procedural rendering context..&lt;br /&gt;&lt;br /&gt;Maybe it would be better to go at the problem from another perspective: what is your overall idea / goal here? &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I think that selection size and center information is useful for creation of new filters. &lt;br /&gt;It is also helpful for updating existing filters.&lt;br /&gt;&lt;br /&gt;For example, my filter &quot;Stamp Maker&quot; needs selection.&lt;br /&gt;And this filter uses Frame components to make frame of stamp.&lt;br /&gt;If I could get the selection size, I would reduce the margin between selection and frame.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I tried two things.&lt;br /&gt;&lt;br /&gt;First, I tried to get these value by using &quot;for loop&quot;.&lt;br /&gt;(from 0 to 1, and step is 1 pixel)&lt;br /&gt;&lt;br /&gt;ex.&lt;br /&gt;[CODE]for i=0, 1, 1/SIZE do&lt;br /&gt;	for j=0, 1, 1/SIZE do&lt;br /&gt;		if get_sample_grayscale(i, j, SOURCE) == 1 then&lt;br /&gt;			...&lt;br /&gt;		end&lt;br /&gt;	end&lt;br /&gt;end[/CODE]&lt;br /&gt;&lt;br /&gt;But this code was too heavy and I couldn't get the result which I wanted.&lt;br /&gt;&lt;br /&gt;Next, I used Blur component as scaling tool.&lt;br /&gt;But this was too difficult for me to got the actual value.(ex.twice the width of selection)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 15 Sep 2011 08:04:29 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Yes, a script is currently the only way to search down the bounding rect, and it can be done in a fairly optimal way IF we just didn't have that darn &lt;a href='http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8754' target='_blank' rel='nofollow'&gt;initialization overhead issue&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;But even with that problem, you could optimize the search using &lt;a href='http://filterforge.com/wiki/index.php?title=Scripting_Tips_and_Tricks&amp;rcid=1915#Creating_an_initialization_section' target='_blank' rel='nofollow'&gt;this method&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Basically you perform the search inside the initialization section. The search must be performed in two steps:&lt;br /&gt;&lt;br /&gt;1. search from top,left and forth to first encounter of a non zero sample (or the sample value of the top, left coordinate). At first encounter break the loop.&lt;br /&gt;&lt;br /&gt;2. like above, but search from bottom, right and back instead.&lt;br /&gt;&lt;br /&gt;you can output the values through r,g,b,a (top, left, bottom, right).&lt;br /&gt;&lt;br /&gt;Btw..alternatively to your blur attempt, try using maximum or median instead of a blur...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;hd8fdkd&lt;/b&gt;, &lt;em&gt;Thu, 15 Sep 2011 23:26:31 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;Basically you perform the search inside the initialization section. The search must be performed in two steps:&lt;br /&gt;&lt;br /&gt;1. search from top,left and forth to first encounter of a non zero sample (or the sample value of the top, left coordinate). At first encounter break the loop.&lt;br /&gt;&lt;br /&gt;2. like above, but search from bottom, right and back instead. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Thanks to your advice, I could scale selection without moving center.&lt;br /&gt;But code is very heavy.&lt;br /&gt;Additionally, the width and height of selection area is slightly different from original.(few pixels)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;Btw..alternatively to your blur attempt, try using maximum or median instead of a blur... &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I tried using Maximum component.&lt;br /&gt;Radius control minimum is 0.01.&lt;br /&gt;When the value set to 0.01, each edge increase 4 pixels.(when whole image size is 512 x 512)&lt;br /&gt;I think detailed control is difficult.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;hd8fdkd&lt;/b&gt;, &lt;em&gt;Sat, 17 Sep 2011 20:53:09 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Sphinx, thanks anyway.&lt;br /&gt;I will try these approachs again until another approach will be found.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sun, 18 Sep 2011 15:07:35 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;A thought on this matter: Not the prettiest of solutions, but you could blur the selection image with directional blur horizontally for the vertical values and vertically for horizontal values (with motion blur component set to radius 100, directional 100, angle 0 or 90, not gaussian). Then perform the seach for non-zero values along x and y-axis from the edges on in. This way you'd only need to seach one row of pixels in each direction. I assume this would be faster than a purely script-based solution.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;hd8fdkd&lt;/b&gt;, &lt;em&gt;Mon, 19 Sep 2011 07:52:18 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;ThreeDee, thank you for your reply.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;ThreeDee wrote:&lt;/b&gt;&lt;br /&gt;A thought on this matter: Not the prettiest of solutions, but you could blur the selection image with directional blur horizontally for the vertical values and vertically for horizontal values (with motion blur component set to radius 100, directional 100, angle 0 or 90, not gaussian). Then perform the seach for non-zero values along x and y-axis from the edges on in. This way you'd only need to seach one row of pixels in each direction. I assume this would be faster than a purely script-based solution. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;You're amazing !&lt;br /&gt;Now I can get the value of selection area width, height and center coordinates.&lt;br /&gt;&lt;br /&gt;I used &quot;Motion&quot; blur instead of &quot;Directional&quot; one.&lt;br /&gt;Because there is no &quot;Directional Blur&quot; Component.&lt;br /&gt;Except it, I used your method.&lt;br /&gt;&lt;br /&gt;If selection area has very long edge, it may need more steps below.&lt;br /&gt;  &quot;Directional Blur&quot; &amp;gt;&amp;gt;&amp;gt; &quot;Threshold&quot; &amp;gt;&amp;gt;&amp;gt; &quot;Directional Blur&quot;...&lt;br /&gt;&lt;br /&gt;I'm going to continue to improve. Thanks.&lt;/p&gt;
</description>
</item>
<item><title>Making the Script panel wider (draggable window sides)</title> 
		             <dc:creator>Vladimir Golovin</dc:creator> 
		             <category></category> 
		             <pubDate>Sat, 20 Aug 2011 13:03:45 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7465</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7465</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Mon, 07 Jun 2010 09:44:10 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;YES, WE KNOW!!!&lt;br /&gt;&lt;br /&gt;(The width of the script editing area is now fixed. We're working on making the side and top separators draggable. Hopefully, we'll release this functionality before the final commercial version is out)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Mon, 07 Jun 2010 12:24:01 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I got a bunch of &quot;comments&quot; on the Mac OS X version.&lt;br /&gt;(On the + side)&lt;br /&gt;(1) Scripts do execute really fast, I made a threshold for testing, could not see any speed differences.&lt;br /&gt;&lt;br /&gt;(On the - side)&lt;br /&gt;(1) Cut/Copy/Paste in the various edit fields work sporadic or not at all.&lt;br /&gt;(2) Cut/Copy/Paste using the akward right click menu works, but is akward on the mac for us who have Apple-X/C/V hardwired in the brain since 25 years back.&lt;br /&gt;&lt;br /&gt;Quick idea:&lt;br /&gt;The possibility to edit the script code in a &quot;popup window&quot; to avoid the resize stuff and the small edit space, the preview doesnt need to be larger, but the text editor really does ;-)&lt;br /&gt;&lt;br /&gt;Otherwise, looks terrific, will play with this and see what will come out. Hopefully I can finally do some of the filter ideas I have in mind,  &lt;br /&gt;&lt;br /&gt;Way To Go FF!!!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Mon, 07 Jun 2010 12:53:20 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Totte wrote:&lt;/b&gt;&lt;br /&gt;(1) Cut/Copy/Paste in the various edit fields work sporadic or not at all. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yes, we recently discovered that. This is because Windows edit fields have copy/paste handlers by default, while Mac OS X edit fields don't. We'll implement this.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Totte wrote:&lt;/b&gt;&lt;br /&gt;The possibility to edit the script code in a &quot;popup window&quot; to avoid the resize stuff and the small edit space, the preview doesnt need to be larger, but the text editor really does &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I have a better idea, but we haven't prototyped it yet.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Mon, 07 Jun 2010 13:49:59 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Yeah, you build using Carbon, Cocoa have it all by default, but Carbon ports better win/mac &lt;br /&gt;&lt;br /&gt;And I would love to see what you have in mind. It's a little nightmare to edit right now   :D  :D &lt;br /&gt;&lt;br /&gt;When you create a new Input, you need to save it and reopen it before you can copy the get function call...&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Mon, 07 Jun 2010 15:32:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Totte wrote:&lt;/b&gt;&lt;br /&gt;When you create a new Input, you need to save it and reopen it before you can copy the get function call... &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Why? No copy-paste menu?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Mon, 07 Jun 2010 15:36:43 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Nope - that textfield is not responding to copy/paste unless it is saved once, and no contextural menu in that field either.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;dmorrill&lt;/b&gt;, &lt;em&gt;Tue, 08 Jun 2010 02:36:53 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I assume that making the script view's top and side draggable means that we'll be able to increase the size of the preview area as well (since it share's a common side with the script view)? If so, then besides adding a really cool new feature (scripting), you'll also be fixing my number one gripe with FF (i.e. limited preview area in the editor). Woohoo!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Tue, 08 Jun 2010 05:39:09 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;dmorrill wrote:&lt;/b&gt;&lt;br /&gt;I assume that making the script view's top and side draggable means that we'll be able to increase the size of the preview area as well&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yes, that's correct.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Tue, 08 Jun 2010 13:12:41 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Just stumbled upon this when I tried to cut everything out to use TextWrangler to edit the script then paste it back..&lt;br /&gt;&lt;br /&gt;The script itself is just a test so far..&lt;br /&gt;&lt;br /&gt;script&lt;br /&gt;function prepare()&lt;br /&gt;	-- This function is called once,&lt;br /&gt;	-- before the rendering begins.&lt;br /&gt;	-- Use it for querying non-mapped&lt;br /&gt;	-- inputs and precalculation.&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	-- Image generation code goes here.&lt;br /&gt;	return get_sample_map(x, y, COLOR)&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My guess is that the clipboard code fails to use character encoding info on paste....&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 03:34:00 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Perhaps you could add a &quot;Scripts&quot; item in the editor view menu, which will open a dedicated window. In this window you have a large editor area, simple search replace tools and what not, but most importantly a list of each script in the filter which you select the script to be edited from.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;James&lt;/b&gt;, &lt;em&gt;Thu, 10 Jun 2010 05:53:41 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Resizing the window was the first thing that i thought to do but i noticed you can't so that would be useful. I also noticed the editors scroll position does not stay when minimizing with show desktop or clicking apply, this makes it annoying to work with. Right now i just code with notepad and then paste it in later and edit, i found that much easier so i second the request for a popup code editor as that would make things much simpler.&lt;br /&gt;&lt;br /&gt;A few other quick suggestions if they are welcome would be -&lt;br /&gt;&lt;br /&gt;Allow re-naming of script modules - I can't find a way to do it, is this possible?&lt;br /&gt;&lt;br /&gt;And for inputs ideas would be -&lt;br /&gt;&lt;br /&gt;Drop-down list controls - Would be much nicer than using a int slider as you could name the values but i don't think this is available in the main version yet though&lt;br /&gt;&lt;br /&gt;Line Separators - Would make it much nicer for organized controls or groups of controls, i know you can order them easily but this would be great also i think.&lt;br /&gt;&lt;br /&gt;Scripting in FF is great :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;SpaceRay&lt;/b&gt;, &lt;em&gt;Sat, 20 Aug 2011 13:03:45 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Vladimir Golovin wrote:&lt;br /&gt;&lt;br /&gt; YES, WE KNOW!!! &lt;br /&gt;&lt;br /&gt;(The width of the script editing area is now fixed. We're working on making the side and top separators draggable. Hopefully, we'll release this functionality before the final commercial version is out) &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Will release this functionality before the final commercial is out ???? This was in June 2010, so I think that he means in FF 2.0 and now that soon will be released 3.0 in 2011 there is no news that this functionality is going to be built in in 3.0. &lt;br /&gt;&lt;br /&gt;In August 2011 is still not added any news that Filter Forge will be resizable or that there could be a way to change the user interface, as there is no way to modify, enlarge, expand or customize any parts of the user interface, all is fix to one block, can´t have a separate preview window or any of the user interface panes and is only a whole window block, and only the whole window can be resized but not able to be dettached, seprate or resize any part. &lt;br /&gt;&lt;br /&gt;And with a big monitor, 24 to 30 inch this is loosing much and is missing many things not being able to customize the user interface and make it bigger to you liking in a resizable options panes.&lt;br /&gt;&lt;br /&gt;The FF team is making a great work with FF 3.0 BUT it seems that the FF team is focused in improving the features but do not care much to improve the user interface.&lt;/p&gt;
</description>
</item>
<item><title>Color averaging script</title> 
		             <dc:creator>George Larsen (Flynn)</dc:creator> 
		             <category></category> 
		             <pubDate>Tue, 19 Jul 2011 08:02:47 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8613</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8613</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;George Larsen (Flynn)&lt;/b&gt;, &lt;em&gt;Wed, 22 Jun 2011 18:02:52 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hi! :) These are a couple of color averaging scrips I wrote, and that I'd like to share.&lt;br /&gt;&lt;br /&gt;Controls:&lt;br /&gt;M: Color map&lt;br /&gt;D: Int slider&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Method One:&lt;br /&gt;&lt;br /&gt;Recursive averaging&lt;br /&gt;&lt;br /&gt;D dictates how many times the image gets slit into quarters. So, for instance: 1 means it will just sample the center of the image and return that.&lt;br /&gt;&lt;br /&gt;2 means it will split the image into quarters and return the average of the centers of those quarters.&lt;br /&gt;&lt;br /&gt;3 means it will split those quarters into MORE quarters, and measure all of the centers of those.&lt;br /&gt;&lt;br /&gt;This goes on until the max value of ten, where, at which point, you are sampling 3.5 hundred thousand points&lt;br /&gt;&lt;br /&gt;All those samples are added up and then averaged. Usually I keep it on D = 5. The code is:&lt;br /&gt;&lt;br /&gt;[CODE]local cr, cg, cb, ca;&lt;br /&gt;local beenDone;&lt;br /&gt;local dd;&lt;br /&gt;function prepare()&lt;br /&gt;	beenDone = -1;&lt;br /&gt;	dd = get_intslider_input(D);&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	local cols = {};&lt;br /&gt;	&lt;br /&gt;	return doAvg(dd);&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function doAvg(detail)&lt;br /&gt;	if (beenDone &amp;lt; 0) then&lt;br /&gt;	local r,g,b,a,c = getAvg(0, detail, 0,1,0,1);&lt;br /&gt;	cr, cg, cb, ca = r/c, g/c, b/c, a/c;&lt;br /&gt;	beenDone = 1;&lt;br /&gt;	end&lt;br /&gt;	return cr, cg, cb, ca;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function getAvg(level, mlevel, minx, maxx, miny, maxy)&lt;br /&gt;&lt;br /&gt;		local midx = midp(minx,maxx);&lt;br /&gt;		local midy = midp(miny,maxy);&lt;br /&gt;		&lt;br /&gt;		local c1 = 0;&lt;br /&gt;		local r1, g1, b1, a1 = get_sample_map(midx,midy,M);&lt;br /&gt;		local r, g, b, a, c = 0, 0, 0, 0, 0;&lt;br /&gt;&lt;br /&gt;		r = r + r1; g = g + g1; b = b + b1; a = a + a1; c = c + 1;&lt;br /&gt;&lt;br /&gt;		if (level ~= mlevel) then&lt;br /&gt;			r1, g1, b1, a1, c1 = getAvg(level+1, mlevel, minx, midx, miny, midy);&lt;br /&gt;			r = r + r1; g = g + g1; b = b + b1; a = a + a1; c = c + c1;&lt;br /&gt;			r1, g1, b1, a1, c1 = getAvg(level+1, mlevel, midx, maxx, miny, midy);&lt;br /&gt;			r = r + r1; g = g + g1; b = b + b1; a = a + a1; c = c + c1;&lt;br /&gt;			r1, g1, b1, a1, c1 = getAvg(level+1, mlevel, minx, midx, midy, maxy);&lt;br /&gt;			r = r + r1; g = g + g1; b = b + b1; a = a + a1; c = c + c1;&lt;br /&gt;			r1, g1, b1, a1, c1 = getAvg(level+1, mlevel, midx, maxx, midy, maxy);&lt;br /&gt;			r = r + r1; g = g + g1; b = b + b1; a = a + a1; c = c + c1;&lt;br /&gt;		end;&lt;br /&gt;		return r, g, b, a, c;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function midp(minn,maxn)&lt;br /&gt;	return ((maxn-minn)/2)+minn;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function merget(a,b)&lt;br /&gt;	for k,v in pairs(b) do a[k] = v end&lt;br /&gt;end;[/CODE]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Method Two:&lt;br /&gt;&lt;br /&gt;This method is simple, faster, but far less reliable for results. It samples D number of random points on the image, and averages those. I recommend keeping d at around 1000 for best results.&lt;br /&gt;&lt;br /&gt;The code is:&lt;br /&gt;[CODE]&lt;br /&gt;local pts = {};&lt;br /&gt;local beenDone;&lt;br /&gt;function prepare()&lt;br /&gt;	beenDone = -1;&lt;br /&gt;	dd = get_intslider_input(D);&lt;br /&gt;	for i = 0, dd*2, 2 do&lt;br /&gt;			pts[i] = math.random();&lt;br /&gt;			pts[i+1] = math.random();&lt;br /&gt;	end;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	return doAvg(dd);&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function doAvg(detail)&lt;br /&gt;	if (beenDone &amp;lt; 0) then&lt;br /&gt;		local r, g, b, a = 0, 0, 0, 1;&lt;br /&gt;			for i = 0, dd * 2, 2 do&lt;br /&gt;				local r1, b1, g1, a1 = get_sample_map(pts[i], pts[i+1], M);&lt;br /&gt;				r, g, b, a = r + r1, g + g1, b + b1, a + a1;&lt;br /&gt;			end;&lt;br /&gt;		beenDone = 1;&lt;br /&gt;		cr, cg, cb, ca = r/dd, g/dd, b/dd, a/dd;&lt;br /&gt;	end;&lt;br /&gt;	return cr, cg, cb, ca;&lt;br /&gt;end;&lt;br /&gt;[/CODE]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Either of these methods are only run ONCE, so it is very scalable, and shouldn't lag at all for decent detail/accuracy.&lt;br /&gt;&lt;br /&gt;Personally, I recommend method 2.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;George Larsen (Flynn)&lt;/b&gt;, &lt;em&gt;Wed, 22 Jun 2011 18:04:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;The lines:&lt;br /&gt;[CODE]local dd;&lt;br /&gt;local cr, cg, cb, ca;[/CODE]&lt;br /&gt;got cut off at the top of the second code block during copy and paste, sorry.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also, in second method, the line:&lt;br /&gt;[CODE]local r1, b1, g1, a1 = get_sample_map(pts[i], pts[i+1], M);[/CODE]&lt;br /&gt;should be:&lt;br /&gt;[CODE]local r1, g1, b1, a1 = get_sample_map(pts[i], pts[i+1], M);[/CODE]&lt;br /&gt;&lt;br /&gt;(Got R, and B confused)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Fri, 24 Jun 2011 02:32:11 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks so much!! I'll be playing with these. ;) Always nice to see code. I basically want to learn lua though have no place to start. I have some experience with Python though.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Ali Baba&lt;/b&gt;, &lt;em&gt;Tue, 19 Jul 2011 08:02:47 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks, thanks, thanks! Very useful script. I use it in now. By the way, the first filter works better and give flat response. Second filter dose not give flat response and on picture I sometimes have dark or light square. &lt;br /&gt;Also, both filters have small difference between Average Color filter in FF.&lt;br /&gt;You can see it on bright pictures. &lt;br /&gt;&lt;br /&gt;Thank you ones again. Very good filters.&lt;/p&gt;
</description>
</item>
<item><title>Attempt to unpersist an external Lua function</title> 
		             <dc:creator>Sphinx.</dc:creator> 
		             <category></category> 
		             <pubDate>Tue, 03 May 2011 07:38:49 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8195</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8195</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 22 Feb 2011 10:16:32 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I was going to continue work on a large script filter (mandelbulb renderer) in the newest filter forge release - now I get a new error I've never seen before:&lt;br /&gt;&lt;br /&gt;Lua Critical Exception: Attempt to unpersist an external Lua function&lt;br /&gt;&lt;br /&gt;My script used to work - was something changed recently related to loading external script files?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 23 Feb 2011 04:48:15 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I tried to look up the error on Google, but it seems to be Filter Forge specific - what does it mean?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 24 Feb 2011 03:22:21 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Anyone? I can't seem to make any of my script filters with external references work due to this error  :cry:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 24 Feb 2011 03:57:51 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Ok - the error is not related to the initial include call:&lt;br /&gt;&lt;br /&gt;in Map Script script I tried:&lt;br /&gt;[CODE]dofile(&quot;C:\\Users\\Sphinx\\test.lua&quot;);[/CODE]&lt;br /&gt;&lt;br /&gt;where &quot;test.lua&quot; contains:&lt;br /&gt;[CODE]&lt;br /&gt;function prepare()&lt;br /&gt;	-- This function is called once,&lt;br /&gt;	-- before the rendering begins.&lt;br /&gt;	-- Use it for querying non-mapped&lt;br /&gt;	-- inputs and precalculation.&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	-- Image generation code goes here.&lt;br /&gt;	local r = x&lt;br /&gt;	local g = y&lt;br /&gt;	local b = (x + y) / 2&lt;br /&gt;	local a = 1&lt;br /&gt;	return r, g, b, a&lt;br /&gt;end;&lt;br /&gt;[/CODE]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This works just fine. I guess the error is related to actual script code in my external files. However the scripts used to work, so I need to know what that (new?) error message is about..&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;GMM&lt;/b&gt;, &lt;em&gt;Thu, 24 Feb 2011 04:36:23 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;So, the above script works? Please attach the one that doesn't work.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 24 Feb 2011 05:17:26 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I can't do that as the whole &quot;application&quot; use several lua libraries .. to much to set up for a simple test case.&lt;br /&gt;&lt;br /&gt;I just want to know what triggers that error message in general (and what it means.. &quot;unpersist&quot; is not very clear to me). Then I can debug the actual problem myself...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;GMM&lt;/b&gt;, &lt;em&gt;Fri, 25 Feb 2011 09:26:27 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;in the newest filter forge release&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Could you let me know the exact FF build which started to show issues? (there have been different builds of 2.009 on the website).&lt;br /&gt;&lt;br /&gt;Now, a story about unpersisting. As you know rendering in Filter Forge is performed in separate passes. When you call prepare(), the Lua subsytem needs to save its results for future passes — for instance, if an unsafe script queries system time it should be consistent for all passes. We employ a third-party lib for that. In Lua jargon saving the result of a function is called persisting, and restoring the saved result is called unpersisting.&lt;br /&gt;&lt;br /&gt;I understand all of the above is of little help to debug your problem, but if you could set up a test base our developers promise to look into it :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sat, 26 Feb 2011 06:01:50 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Alright I located the problem - it is related to a change in global variable visibility..&lt;br /&gt;&lt;br /&gt;The testcase is rather simple:&lt;br /&gt;&lt;br /&gt;1. Create a new lua file, test.lua, with the following content:&lt;br /&gt;[CODE]&lt;br /&gt;function prepare()&lt;br /&gt;	t = 1&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	--t = 0.5&lt;br /&gt;	return t,t,0,1&lt;br /&gt;end;&lt;br /&gt;[/CODE]&lt;br /&gt;&lt;br /&gt;2. Create a new filter and drop a new Map Script, enter:&lt;br /&gt;[CODE]dofile(&quot;C:\\test.lua&quot;)[/CODE]&lt;br /&gt;Or the path to where you put the test.lua file (remember &quot;\\&quot; as directory delimiter format, e.g. &quot;C:\\Users\\GMM\\test.lua&quot;&lt;br /&gt;&lt;br /&gt;FF will now complain because global variable t is not registered properly (this used to work earlier).&lt;br /&gt;&lt;br /&gt;Comment out t assignment in prepare and enable t assignment in get_sample - now it works.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The unpersist error is just a more complex version of this problem. I can send you a testcase for the unpersist error (I can't attach here due to file attachment restrictions), where should I send to?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;GMM&lt;/b&gt;, &lt;em&gt;Mon, 28 Feb 2011 04:59:23 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks for the info, we'll look into it.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;where should I send to&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Please send to info@filterforge&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 28 Feb 2011 10:19:49 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;You should have a complete example in your inbox now  :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 07 Mar 2011 03:13:01 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I'm still unpersisting my *** off here ;) Any news on the issue?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;GMM&lt;/b&gt;, &lt;em&gt;Wed, 09 Mar 2011 07:07:13 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;The developers are still unpersisting your test case :) We'll try to fix this by the release of the 3.0 beta.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 03 May 2011 07:38:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Just tested in FF3B1 .. bug is still there :-(&lt;/p&gt;
</description>
</item>
<item><title>Help with some syntax?</title> 
		             <dc:creator>Betis</dc:creator> 
		             <category></category> 
		             <pubDate>Fri, 29 Apr 2011 18:57:18 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8344</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8344</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Sat, 23 Apr 2011 19:11:53 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Workin on a heavy-sampleage DOF script. Due to the nature of per-pixel scripting this is actually the opposite of how DOF works in reality, but sometimes it looks good anyway. Anyway my point is I'm trying to compile this and all it gives me is &quot;syntax error&quot; at the bottom where it the second-to-last line. I assume it's with all the breaks and loops that I havne't mastered in LUA yet.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;function prepare()&lt;br /&gt;blur = get_slider_input(ASIZE)*16&lt;br /&gt;qual = get_intslider_input(QUAL)&lt;br /&gt;rad  = (2*math.pi)/qual&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	-- Image generation code goes here.&lt;br /&gt;	local r, g, b, a = get_sample_map(x, y, INPUT)&lt;br /&gt;	local d = get_sample_grayscale(x, y, DEPTH)&lt;br /&gt;	local t = get_sample_grayscale(x, y, F_THRESH)&lt;br /&gt;	&lt;br /&gt;	local i, r&lt;br /&gt;	&lt;br /&gt;	for i = 0, qual do&lt;br /&gt;	     for r = 1, 4 do&lt;br /&gt;	           local s = math.sin( rad*i )*(blur/r)*d&lt;br /&gt;             local c = math.cos( rad*i )*(blur/r)*d&lt;br /&gt;             &lt;br /&gt;             if( get_sample_grayscale(x+s, y+c, DEPTH) &amp;lt; d ) then&lt;br /&gt;             break&lt;br /&gt;             end;&lt;br /&gt;             &lt;br /&gt;             if( get_sample_grayscale(x+s, y+c, t) == 0 ) then&lt;br /&gt;             break&lt;br /&gt;             end;&lt;br /&gt;             &lt;br /&gt;       r, g, b, a += get_sample_map(x+s, y+c, INPUT)&lt;br /&gt;       end;&lt;br /&gt;  end;	           &lt;br /&gt;	&lt;br /&gt;	return r, g, b, a&lt;br /&gt;end;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Edit: I took of the semicolons at the end of the if statements/ for loops but I get the same problem&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 26 Apr 2011 02:12:05 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Post the filter and I'll take a look at it :) (I can't determine your input setup)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Tue, 26 Apr 2011 08:39:34 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I would suggest loading an image and it's respective depth map to get a clearer understanding of the previous nodes  :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Tue, 26 Apr 2011 20:38:26 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Okay I've been working on it and this one compiles but gives unexpected results, what am I not seeing?&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;function prepare()&lt;br /&gt;	blur = get_slider_input(ASIZE)*1&lt;br /&gt;	qual = get_intslider_input(QUAL)&lt;br /&gt;	rads  = (2*math.pi)/qual&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	-- Image generation code goes here.&lt;br /&gt;	local r, g, b, a = get_sample_map(x, y, INPUT)&lt;br /&gt;	local d = get_sample_grayscale(x, y, DEPTH)&lt;br /&gt;	&lt;br /&gt;	local i, radius&lt;br /&gt;	&lt;br /&gt;	for i = 0, qual do&lt;br /&gt;	     for radius = 1, 4 do&lt;br /&gt;	          local s = math.sin( rads*i )*(blur/radius)*d&lt;br /&gt;             local c = math.cos( rads*i )*(blur/radius)*d&lt;br /&gt;             &lt;br /&gt;             if( get_sample_grayscale(x+c, y+s, DEPTH) &amp;lt; d ) then&lt;br /&gt;					break&lt;br /&gt;             end&lt;br /&gt;             &lt;br /&gt;				 r, g, b, a = r + get_sample_map(x+c, y+s, INPUT),g + get_sample_map(x+c, y+s, INPUT),b + get_sample_map(x+c, y+s, INPUT),a + get_sample_map(x+c, y+s, INPUT)&lt;br /&gt;				 r, g, b, a = r/(4*qual),g/(4*qual),b/(4*qual),a /(4*qual)&lt;br /&gt;			end&lt;br /&gt;  end           &lt;br /&gt;	&lt;br /&gt;	return r, g, b, a&lt;br /&gt;end;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 27 Apr 2011 02:28:39 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;The problem is in the inner loop - your &quot;normalization&quot; part is not correct, and the conditional exit caused discontinuities, so I removed that. &lt;br /&gt;&lt;br /&gt;I cleaned up the script and moved various calculations to more appropriate places (i.e. out of the the inner loop  :eek: ). I'm sure you'll see the point of it..&lt;br /&gt;&lt;br /&gt;I don't see weird cutoff artifacts now, but the displacement could use some work.&lt;br /&gt;&lt;br /&gt;Note that I bypassed all the threshold stuff as I don't understand its purpose :-D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Wed, 27 Apr 2011 19:41:33 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I've been working on it today and thank you so much for your help sphinx! I'm good with C++ and java but this lua syntax is definitely weird  :D &lt;br /&gt;&lt;br /&gt;Here's a sample image at maximum sampling and maximum macroness 8)&lt;br /&gt;It took 2.5 minutes&lt;br /&gt;(Looks like I can fix up some things)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 28 Apr 2011 03:53:25 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;could you post your photo sample set?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Fri, 29 Apr 2011 18:57:18 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Here is the original :}&lt;/p&gt;
</description>
</item>
<item><title>Hard Shadows</title> 
		             <dc:creator>jitspoe</dc:creator> 
		             <category></category> 
		             <pubDate>Tue, 08 Mar 2011 09:54:10 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8237</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8237</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;jitspoe&lt;/b&gt;, &lt;em&gt;Sat, 05 Mar 2011 23:29:47 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I was kind of disappointed that the ambient occlusion shadows did not include directional shadows, but the FF team made up for that by including scripting, so I took a shot at making hard directional shadows.  Who's up for some rock hard shadows?  Or would it be hard rock shadows (dunanananaaaa!).  This is the default stones component.  I mixed my directional lighting with the Filter Forge lighting so we could have ambient light and AO for more realistic appearances.  Still a work in progress, but I should have a snippet ready for Monday.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;uberzev&lt;/b&gt;, &lt;em&gt;Sat, 05 Mar 2011 23:36:51 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Doesn't it do directional shadows if you use a point light?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;jitspoe&lt;/b&gt;, &lt;em&gt;Sun, 06 Mar 2011 00:42:21 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Math for the normals wasn't quite correct in the previous image.  I think I've fixed that, and I cranked up the ambient light and down the environment light to make it look a little more natural.  Here it is on cells with a circular arc profile.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;jitspoe&lt;/b&gt;, &lt;em&gt;Sun, 06 Mar 2011 01:33:45 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;uberzev: I had hoped that, but as far as I know, the FF lighting system does not support directional shadows.&lt;br /&gt;&lt;br /&gt;Here's the default stone again with more correct lighting:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Betis&lt;/b&gt;, &lt;em&gt;Sun, 06 Mar 2011 16:17:21 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;This is great! Do a human face, that should be a good test too&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 07 Mar 2011 02:49:53 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Cast Shadows! Very cool - do you trace them or is it some smart displacement trick?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;jitspoe&lt;/b&gt;, &lt;em&gt;Mon, 07 Mar 2011 09:17:10 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;They're traced.  It's a little bit slow (requires about 200-300 heightmap lookups per sample), but I think it's worth it.  I submitted the filter this weekend, so it should be available shortly.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 07 Mar 2011 09:27:15 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Cool, I'm looking forward to playing with it. &lt;br /&gt;&lt;br /&gt;About the sample count - you can stick in a blur (very small radius) btwn the heightmap source and your shadowtracer to get some sort of cache like functionality. That should reduce the real sample calculation greatly.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 08 Mar 2011 09:43:45 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hmm.. library server must be down again or something...  perhaps you could post the filter here?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;jitspoe&lt;/b&gt;, &lt;em&gt;Tue, 08 Mar 2011 09:54:10 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I'm not at home right now.&lt;br /&gt;&lt;br /&gt;*pokes the server*&lt;br /&gt;&lt;br /&gt;Hopefully it will be up soon.&lt;/p&gt;
</description>
</item>
<item><title>Number to Integer Conversion</title> 
		             <dc:creator>rjp74</dc:creator> 
		             <category></category> 
		             <pubDate>Sun, 27 Feb 2011 22:58:08 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8200</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8200</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;rjp74&lt;/b&gt;, &lt;em&gt;Thu, 24 Feb 2011 06:15:03 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;In the &quot;Lua Programming Manual&quot; it states &lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;2.3 - Numbers&lt;br /&gt;The number type represents real (double-precision floating-point) numbers. Lua has no integer type, as it does not need it. There is a widespread misconception about floating-point arithmetic errors and some people fear that even a simple increment can go weird with floating-point numbers. The fact is that, when you use a double to represent an integer, there is no rounding error at all (unless the number is greater than 100,000,000,000,000). Specifically, a Lua number can represent any long integer without rounding problems. Moreover, most modern CPUs do floating-point arithmetic as fast as (or even faster than) integer arithmetic. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;I had some troubles with one of my program loops where I wanted to subdivide the picture into discrete cells. Occasionally I would have overlapping cells. As the map input range is scaled in the range [0..1] for the Y axis I needed to change this to an integer value. It took me some time to find that the trouble in my algorithm lay with the maths.floor() function giving incorrect results. Contrary to what the manual says, it may be necessary at times to make allowances for small rounding errors. For example the following code shows how maths.floor() does not give the expected answer.&lt;br /&gt;&lt;br /&gt;[CODE]for i=0,1,0.1 do&lt;br /&gt;     j = i * 10&lt;br /&gt;     k = math.floor(j)&lt;br /&gt;     print(i,j,k)&lt;br /&gt;end&lt;br /&gt;[/CODE]&lt;br /&gt;The output from this is:&lt;br /&gt;[CODE]0       0       0&lt;br /&gt;0.1     1       1&lt;br /&gt;0.2     2       2&lt;br /&gt;0.3     3       3&lt;br /&gt;0.4     4       4&lt;br /&gt;0.5     5       5&lt;br /&gt;0.6     6       6&lt;br /&gt;0.7     7       7&lt;br /&gt;0.8     8       7  &amp;lt;&amp;lt; incorrect&lt;br /&gt;0.9     9       9&lt;br /&gt;1      10       9  &amp;lt;&amp;lt; incorrect[/CODE]&lt;br /&gt;&lt;br /&gt;To ensure you get the correct results you should add a small offset&lt;br /&gt;&lt;br /&gt;[CODE]     k = math.floor(j+0.000001)[/CODE]&lt;br /&gt;&lt;br /&gt;Such a small offset should not affect your application but will ensure that the results are as expected. Using this offset the results are:&lt;br /&gt;&lt;br /&gt;[CODE]0       0       0&lt;br /&gt;0.1     1       1&lt;br /&gt;0.2     2       2&lt;br /&gt;0.3     3       3&lt;br /&gt;0.4     4       4&lt;br /&gt;0.5     5       5&lt;br /&gt;0.6     6       6&lt;br /&gt;0.7     7       7&lt;br /&gt;0.8     8       8  &amp;lt;&amp;lt; correct&lt;br /&gt;0.9     9       9&lt;br /&gt;1      10       10  &amp;lt;&amp;lt; correct&lt;br /&gt;[/CODE]&lt;br /&gt;which is correct.&lt;br /&gt;After I modified my math.floor() functions in this way my algorithm worked correctly.&lt;br /&gt;&lt;br /&gt;I hope this helps someone who has troubles with such logic.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 24 Feb 2011 06:41:04 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Ah - Good to know! &lt;br /&gt;&lt;br /&gt;Floating point numbers can be rather strange in representation - my guess is that 0.8 * 10 actually is represented like 0.7999999.. which is why the floor is 7.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Mike Blackney&lt;/b&gt;, &lt;em&gt;Sun, 27 Feb 2011 22:58:08 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Great info, thanks for that.  I'm using lots of floors in one of my filters and I found it looked better when I added a little, but I couldn't work out why.  I thought maybe it was a pixel sampling issue (like, sampling from the center rather than from the corner but this might have been part of the problem as well.&lt;/p&gt;
</description>
</item>
<item><title>the OUTPUT_WIDTH and OUTPUT_HEIGHT params</title> 
		             <dc:creator>rjp74</dc:creator> 
		             <category></category> 
		             <pubDate>Fri, 25 Feb 2011 11:52:40 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8188</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8188</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;rjp74&lt;/b&gt;, &lt;em&gt;Sat, 19 Feb 2011 06:26:15 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I am trying to use the map script and need to know the the Image size as I need the ratio of width to height. I expected this to be the OUTPUT_WIDTH and OUTPUT_HEIGHT params. The problem I have is that my image is 1229 x 706 pixels but these params return 96 and 96. Anybody any idea how to get the correct image sizes please?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 22 Feb 2011 01:59:55 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;http://www.filterforge.com/more/help/Scripting/ScriptingAPI.html:&lt;br /&gt;&lt;br /&gt;OUTPUT_WIDTH and OUTPUT_HEIGHT – width and height of the image currently loaded into Filter Forge. Measured in pixels.&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;So you are using the correct global variables. The error must be elsewhere in your script..&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;rjp74&lt;/b&gt;, &lt;em&gt;Tue, 22 Feb 2011 04:40:25 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;My script is only one line long:&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;   error(OUTPUT_WIDTH .. &quot;, &quot; .. OUTPUT_HEIGHT)&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;so I don't think the trouble is with the script. The variables simply return the incorrect values.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 22 Feb 2011 09:57:28 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Ah, well thats because you see the error msg from the initial thumbnail rendering pass (change the thumbnail size and the error output values change too).&lt;br /&gt;Perhaps FF should not allow error outputs during thumbnail rendering.&lt;br /&gt;&lt;br /&gt;Try returning the values instead and inspect the large preview with the eyedropper:&lt;br /&gt;&lt;br /&gt;function get_sample(x, y) &lt;br /&gt; return OUTPUT_WIDTH, OUTPUT_HEIGHT, 0, 0&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;Now you should see the correct values.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;rjp74&lt;/b&gt;, &lt;em&gt;Tue, 22 Feb 2011 11:34:54 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;If I change the thumbnails to &quot;large&quot; then the value changes to 128. However, the spec says: &lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&quot;OUTPUT_WIDTH and OUTPUT_HEIGHT – width and height of the image currently loaded into Filter Forge&quot;.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;So I expect these 2 values to reflect the loaded image size. The preview window (upper left) has the correct dimensions. The code does not.&lt;br /&gt;&lt;br /&gt;Thank you for your code idea - but I don't understand how your code helps. You have the alpha set to 0. If I change that to 1 then I get a  pure yellow output. What I don't get to see - either in preview mode or in the final render are the correct values. It seems to be a bug in the implementation. I have not found how to get it to work as documented.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 23 Feb 2011 04:44:20 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I agree it is not very logical that thumbnail rendering steps can trigger error / print messages.&lt;br /&gt;&lt;br /&gt;But it is not a problem really. What I tried to show you is that at the time your script is executed for processing your input image, the OUTPUT_WIDTH and OUTPUT_HEIGHT variables will contain the correct values.&lt;br /&gt;&lt;br /&gt;Think of it this way: before your input image is processed, FF &quot;borrows&quot; your script for rendering the thumbnail. They use their own input image, the thumbnail, and global variables inspected at this point reflects that image.&lt;br /&gt;&lt;br /&gt;When you call error, you interrupt the rendering at the thumbnail rendering pass.&lt;br /&gt;&lt;br /&gt;About my script:&lt;br /&gt;Don't be fooled by the visual output - just try it and then click the eyedropper tool above the preview (in editor mode) and click somewhere on the preview field with the eyedropper. Red channel will show you the value of OUTPUT_WIDTH, green channel will show you the value of OUTPUT_HEIGHT. The values at this point reflects your input image size.&lt;br /&gt;&lt;br /&gt;Returning variables through r,g and b result is recommended for temporary variable inspection.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;GMM&lt;/b&gt;, &lt;em&gt;Thu, 24 Feb 2011 04:49:13 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt; before your input image is processed, FF &quot;borrows&quot; your script for rendering the thumbnail.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Sphinx is right, except that thumbnail rendering is performed simultaneously to the input image processing. The Lua subsystem seems to monitor the thumbnail thread first. I'm afraid there's little you can do to change that, just keep this in mind.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 24 Feb 2011 05:20:46 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Small feature request: It would be a little less confusing if the thumbnail rendering thread ignores error and print messages (I'm not sure if it is possible though).&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;rjp74&lt;/b&gt;, &lt;em&gt;Thu, 24 Feb 2011 06:30:11 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks Sphinx for your help. &lt;br /&gt;&lt;br /&gt;Knowing that there is a pre-pass where the values are set to the thumbnail size rather than the actual image size helps a lot. It means that error() was not appropriate in my case as it applied to the pre-pass not the final pass. &lt;br /&gt;&lt;br /&gt;Also your idea of using the image to store results was something I had not considered and was helpful in finding out some details which would have been almost impossible using the error() function.&lt;br /&gt;&lt;br /&gt;The end result of all this was that I completely rewrote my lua script and it is all the better for it!  :)  Whilst I have submitted it to the snippets it has not been accepted yet but will hopefully be available soon. It will be called &quot;Hello World&quot; where you can define a message and it will be converted to graphics using a 10x12 dot matrix display format. I am just trying to do the regular first coding challenge of &quot;Hello World&quot; which was rather more of a challenge than anticipated! I also have a much higher resolution version which I have not submitted of 14x24 dot matrix grid. If someone wants the higher definition grid I can upload it.&lt;br /&gt;&lt;br /&gt;It was the need to get these dot matrices to have the right aspect ratio irrespective of the original image size which caused me so many problems with the OUTPUT_WIDTH and OUTPUT_HEIGHT values.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;rjp74&lt;/b&gt;, &lt;em&gt;Fri, 25 Feb 2011 11:52:40 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;The &quot;Hello World&quot; was not accepted as it caused a crash in the library renderer even though the submission checks were ok. I have replaced it with something better which incorporates the small and the large fonts, corrects for the math.floor() issue and uses the OUTPUT_WIDTH and OUTPUT_HEIGHT values successfully. My intention is that you use the lua code in your own filters if you need a text module.&lt;br /&gt;The link to this filter is here:&lt;br /&gt;&lt;a href='http://www.filterforge.com/filters/9435.html' target='_blank' rel='nofollow'&gt;Add Text to Image&lt;/a&gt;&lt;/p&gt;
</description>
</item>
<item><title>Value Control for Script Inputs</title> 
		             <dc:creator>jitspoe</dc:creator> 
		             <category></category> 
		             <pubDate>Thu, 10 Feb 2011 23:08:41 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8172</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8172</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;jitspoe&lt;/b&gt;, &lt;em&gt;Thu, 10 Feb 2011 23:08:41 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;When I try to put a value control on a slider input for a map script, it gives me a little warning, and, like the warning suggests, does not behave as a user would expect.  It seems like negative values are actually small values, and large values just get capped.  Is it possible to have a value control that behaves properly?  It would make handling fractal stuff much easier.  I thought of using an HDR map, but it won't let me get values within the prepare() function.&lt;/p&gt;
</description>
</item>
<item><title>Notes node/section</title> 
		             <dc:creator>ronviers</dc:creator> 
		             <category></category> 
		             <pubDate>Sat, 29 Jan 2011 13:56:04 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8088</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8088</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;ronviers&lt;/b&gt;, &lt;em&gt;Sat, 08 Jan 2011 07:19:14 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I do not know anything about ff’s scripting so this may not make sense. Would it be possible to script a notes node? This would be a node that I could add to a filter, where I could just type in it, so it would remind me of what I had going on, or inform someone else of how things work. Also, would it be possible to add a notes section to existing nodes?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sat, 08 Jan 2011 07:52:15 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;yes, you can use the block comment style:&lt;br /&gt;&lt;br /&gt;--[[&lt;br /&gt;notes here&lt;br /&gt;]]&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronviers&lt;/b&gt;, &lt;em&gt;Sat, 08 Jan 2011 07:54:22 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Would you mind posting an example?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronviers&lt;/b&gt;, &lt;em&gt;Sat, 08 Jan 2011 08:01:02 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I was hoping for something like this:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronviers&lt;/b&gt;, &lt;em&gt;Sat, 08 Jan 2011 08:06:25 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Then an arrow would point to a marquee selected node or region of nodes. ;)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 09 Jan 2011 03:08:08 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Ah I see, well that requires some work ;)&lt;br /&gt;&lt;br /&gt;The &quot;simple&quot; way of doing this is to find a character map (preferably with a small monospaced pixel font), convert that to a table that is stored in the script component and then use a look up function that takes lua strings and returns character pixel data...&lt;br /&gt;&lt;br /&gt;An image like this can be used:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 09 Jan 2011 03:28:38 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Here is some related Lua code (it will not work in its current form as it seem to use additional libraries etc. and it need to be converted to FF sampling style)&lt;br /&gt;&lt;br /&gt;[CODE]-- Global Variables&lt;br /&gt;font = Image.load(&quot;bmf02_007.png&quot;)&lt;br /&gt;LetterPixelsWide = 8&lt;br /&gt;LetterPixelsTall = 8&lt;br /&gt;InputString = [[ !&quot;#$%&amp;'()* ,-./0123456789:;&amp;lt;=&amp;gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ]] &lt;br /&gt;&lt;br /&gt;--Functions&lt;br /&gt;function char2font(char_input) &lt;br /&gt;	&lt;br /&gt;	IndexNumber = 0&lt;br /&gt;	for i = 1, string.len(InputString) do&lt;br /&gt;		if string.sub(InputString, i,i) == char_input then&lt;br /&gt;			return IndexNumber&lt;br /&gt;		end -- end if&lt;br /&gt;		IndexNumber = IndexNumber + LetterPixelsWide&lt;br /&gt;	end -- end if&lt;br /&gt;	return 0&lt;br /&gt;end -- char2font&lt;br /&gt;&lt;br /&gt;function blitChar(target, char, posx, posy)&lt;br /&gt;	target:blit(posx,posy, font,char2font(char),0,LetterPixelsWide,LetterPixelsTall,true)&lt;br /&gt;end -- blitChar&lt;br /&gt;&lt;br /&gt;function blitString(myTarget, possx, possy, thestring)&lt;br /&gt;	incX = 0&lt;br /&gt;	for w = 1, string.len(thestring) do&lt;br /&gt;	blitChar(myTarget, string.upper(string.sub(thestring, w,w)), possx + incX, possy)&lt;br /&gt;		incX = incX + LetterPixelsWide&lt;br /&gt;	end -- end for&lt;br /&gt;end -- blitString&lt;br /&gt;&lt;br /&gt;--main program&lt;br /&gt;blitString(screen, 10, 10, &quot;Hello World&quot;)&lt;br /&gt;font = Image.load(&quot;bmf02_003.png&quot;)&lt;br /&gt;LetterPixelsWide = 8&lt;br /&gt;LetterPixelsTall = 15&lt;br /&gt;InputString = [[ () ,/12456:@ABCDEFGHIJKLMNOPQRSTUVWXYZ]] &lt;br /&gt;blitString(screen, 10, 100, &quot;Hello World&quot;)&lt;br /&gt;screen:flip()&lt;br /&gt;screen.waitVblankStart(600)[/CODE]&lt;br /&gt;(source: &lt;a href='http://forums.qj.net/psp-development-forum/19931-lua-tutorial-so-you-wanna-different-font.html)' target='_blank' rel='nofollow'&gt;http://forums.qj.net/psp-development-...font.html)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First of all it seems to use some sort of Image library to load image data to a table, here we need an alternative. I'm thinking about a temporary unsafe script that takes a FF map input and store that to a text file (with the correct table formatting). The content of the text file can then be copied into the main script afterwards.&lt;br /&gt;&lt;br /&gt;Secondly, the whole blitting concept (target:blit) is opposite to how FF works (projection vs. sampling), so this need to be changed (using two imposed grids for lookup, first is for character zones, second is for pixel zones).&lt;br /&gt;&lt;br /&gt;Beside from that, the character lookup stuff should work.&lt;br /&gt;&lt;br /&gt;Note that the character image/table need to contain one line of characters only. And they must be monospaced. The InputString variable should reflect the character layout in the table.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronviers&lt;/b&gt;, &lt;em&gt;Sun, 09 Jan 2011 08:34:38 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Do you think it's practical? The way you are thinking about it; would be be easy enough to use for people to use it?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronviers&lt;/b&gt;, &lt;em&gt;Sun, 09 Jan 2011 09:30:23 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;It would be cool if these notes nodes could be linked to the wiki, and the wiki entries linked to the filters. That combined with a rating system, so the best could propagate to the top, would make ff semi-autodocumenting. :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronviers&lt;/b&gt;, &lt;em&gt;Sun, 09 Jan 2011 09:50:37 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I know this is off topic, but I know you would know; is it possible to put buttons in the descriptions of our filters? See how &lt;b&gt;&lt;a href='http://www.charreed.com/Animorphs/' target='_blank' rel='nofollow'&gt;this&lt;/a&gt;&lt;/b&gt; artist has it set up. You can buy her a cup of coffee, which is actually a solicitation for a 2usd donation via paypal. I would like to do that. :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Sun, 09 Jan 2011 11:24:07 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;ronviers wrote:&lt;/b&gt;&lt;br /&gt;Do you think it's practical? The way you are thinking about it; would be be easy enough to use for people to use it? &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Well, it would work like this: you copy the text script component and change a text string in the source... there is no way to get a real text input in line with the other input/control types.. I guess that rules out a user or two, dunno..&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;ronviers wrote:&lt;/b&gt;&lt;br /&gt;It would be cool if these notes nodes could be linked to the wiki, and the wiki entries linked to the filters. That combined with a rating system, so the best could propagate to the top, would make ff semi-autodocumenting.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;LOL! And make coffee too? Seriously, what you talk about there is a completely different story - I'm not even sure that is possible with Lua (via FF). Even if it is, it requires a lot of coding and for sure some &quot;unsafe&quot; OS specific operations.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Fortunas&lt;/b&gt;, &lt;em&gt;Sun, 09 Jan 2011 16:32:40 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Wouldn't making coffee be more a Java script than it would Lua?  ;)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronviers&lt;/b&gt;, &lt;em&gt;Sun, 09 Jan 2011 19:14:54 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;copy the text script component and change a text string in the source&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;That’s not clear, but it’s because I have not done enough homework. I played around with the script node for the first time today. It’s not a total mystery anymore but I have a lot of reading to do before I can make use of it.&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Sphinx. wrote:&lt;/b&gt;&lt;br /&gt;a completely different story&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;I didn't really think it was practical, just something that came to mind. :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 10 Jan 2011 03:30:27 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;ronviers wrote:&lt;/b&gt;&lt;br /&gt;That’s not clear, but it’s because I have not done enough homework. I played around with the script node for the first time today. It’s not a total mystery anymore but I have a lot of reading to do before I can make use of it. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;If scripting/programming is completely new to you, I can definitely understand why it is a tough subject. I'd like to write a tutorial for people with absolutely no scripting experience. But I need some pointers on what type of problems (even the most simple ones) etc to adress in the tutorial.&lt;br /&gt;&lt;br /&gt;I wrote &lt;a href='http://www.filterforge.com/wiki/index.php?title=Scripting_Tips_and_Tricks&amp;rcid=1911' target='_blank' rel='nofollow'&gt;Scripting Tips and Tricks&lt;/a&gt; in the Wiki, in which I attempt to explain things in detail, but it does not adress very fundamental concepts and questions.. some pointers on what you find hard to understand and such, will be of great help :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronviers&lt;/b&gt;, &lt;em&gt;Mon, 10 Jan 2011 06:45:52 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;It’s been all me. I have not made a systematic effort to learn it. I will, but I have some other things I need to do first.&lt;br /&gt;&lt;br /&gt;Thank you for all the work you have done to make lua accessible. :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Mike Blackney&lt;/b&gt;, &lt;em&gt;Thu, 13 Jan 2011 17:05:28 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;ronviers: I like the original note idea, at the moment a lot of people are getting by by dropping down controls and using the name field to type a comment.  It's not ideal for leaving yourself long notes unless you're ok dropping down dozens of unconnected checkboxes.  You didn't want to actually render the comment out to the filter, did you?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronviers&lt;/b&gt;, &lt;em&gt;Thu, 13 Jan 2011 17:42:17 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Any step up from the checkboxes would be fine with me. :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Dmitry Sapelnikov&lt;/b&gt;, &lt;em&gt;Sat, 29 Jan 2011 13:56:04 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;IMO, the notes via text rendering are absolutely seditios for FF =)&lt;br /&gt;But text descriptions in filter editor can be really useful indeed. I'll note the idea for the future.&lt;/p&gt;
</description>
</item>
<item><title>pixel size</title> 
		             <dc:creator>Mark Pettinelli</dc:creator> 
		             <category></category> 
		             <pubDate>Thu, 09 Dec 2010 08:55:28 -0500</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8003</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=8003</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Mark Pettinelli&lt;/b&gt;, &lt;em&gt;Thu, 09 Dec 2010 08:55:28 -0500&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;what would a map script be in order to duplicate what the size, pixels control setting does only with this you could use multiple scripts and have the pixel size change at different points in the process,&lt;/p&gt;
</description>
</item>
<item><title>Script&gt; Counter/Incrementer</title> 
		             <dc:creator>Burt</dc:creator> 
		             <category></category> 
		             <pubDate>Tue, 26 Oct 2010 09:00:25 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7889</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7889</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Burt&lt;/b&gt;, &lt;em&gt;Thu, 21 Oct 2010 11:53:15 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I'm not sure if it is possible to write components using the Lua scripting but if so I wanted to suggest one for the scripters to consider.&lt;br /&gt;&lt;br /&gt;I know that recursion or looping is high on the list of feature requests. What I was thinking is that the Switch component could be used to create a pseudo looping (or at least incremental sequential processing) of multiple nodes if there was a counter component that allowed you to add 1 to the selector value on each 'loop' so that counter=counter+1.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Fri, 22 Oct 2010 01:15:43 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Could you give a description of how you'd use this? When should the counter increase?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Burt&lt;/b&gt;, &lt;em&gt;Sat, 23 Oct 2010 03:02:46 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;More of a visual guy so not quite sure how to explain. This is liable to sound convoluted.&lt;br /&gt;&lt;br /&gt;I thought if the counter could be attached to a noise filter, and maybe to Variation, Roughness for example, generate a variation with the result going to something like Multiblend, and at the next 'tick' the new result would go to the next layer in Multiblend and so on. However the components like Multiblend (and maybe Bomber and Blend) that could be candidates to 'store' the result fr om each 'tick' (like an array) and have some operation performed, of course don't have a selector that could be used to be able to allow that. I also guess the first pass would run all the way through to the Result.&lt;br /&gt;&lt;br /&gt;Sorry if that sounds confusing. Can't always funnel what I am thinking into coherent speech. Wh ere's the blush emoticon when you need it.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Mike Blackney&lt;/b&gt;, &lt;em&gt;Sat, 23 Oct 2010 21:42:10 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Click 'more smileys' :D&lt;br /&gt;&lt;br /&gt;I kind of think I understand what you're saying.  Let me make sure I've got it. (Picking names out of the air here.)&lt;br /&gt;&lt;br /&gt;You have a setup where there's an Array node, it has two inputs and one output.  The inputs are a map connection called Input and a slider for number of array elements, called Count.  Into the array node you plug in, say, a Perlin Noise.  Into the perlin noise you plug in an ArrayRandomiser node and you can connect it to, say, variation and roughness.  Then the perlin noise gets rendered a couple of times (as determined by the Count input) and stored in the array slots.  Then when you plug the array map output into another element you can pick which array element is used?&lt;br /&gt;&lt;br /&gt;If I've got that right, you can &lt;i&gt;kind of&lt;/i&gt; do some of that, except you can't do the multiple perlin noise renders.  If you're okay plugging a number of different elements into your script node, instead of using a switch or some sort of layers system, you can pack your input images into a grid of smaller images in the output, then use another script node to extract one section of the grid.  The multisampling means you shouldn't lose any image quality that's packed in when you size it up again.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Tue, 26 Oct 2010 02:10:50 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Only one sample is rendered per filter execution. Gray inputs affect components before the sample collection start in the rendering process (i.e. at initialization time). So we can't change gray inputs from sample to sample, only from full rendering to rendering and only manually (or via a batch rendering script). We don't have control scripts either, but even if we get that at some point, they will most likely not support per sample change (their connection context of ins and outs probably remain gray).&lt;br /&gt;&lt;br /&gt;Also you have to consider the difference between inputs and outputs - it is not allowed to create a connection feedback: &lt;br /&gt;&lt;br /&gt; Noise A -&amp;gt; Script A&lt;br /&gt; Script A -&amp;gt; Noise A (input)&lt;br /&gt;&lt;br /&gt;So the script that would take care of looping cannot define properties of one of its sources.&lt;br /&gt;&lt;br /&gt;However some of you describe can be achieved indirectly. Variation can be thought of as different regions in the same source, and roughness can be thought of as scaling the source differently (not 100% correct though). Variation changes can be simulated by offsetting coordinates so each loop fetches from a different region in the source (assumes non seamless mode), and to increase &quot;roughness&quot; you multiply coordinates by a number &amp;gt; 1, to decrease you either divide or multiply by a number in range [0..1[. This assumes that you set roughness to 100 initially and found an initial scale level.&lt;br /&gt;&lt;br /&gt;It gets a bit complicated, and it would be a great deal easier if a parent script component were allowed to configure inputs in its sources (by allocating them at initialization time, thus disabling them for traditional connections).&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Burt&lt;/b&gt;, &lt;em&gt;Tue, 26 Oct 2010 09:00:25 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks for the explanation guys - methinks I have much yet to learn. Nevertheless I got some ideas from what you suggested and take some more baby steps as soon as I get some play time.&lt;/p&gt;
</description>
</item>
<item><title>Script&gt; automate filter?</title> 
		             <dc:creator>Burt</dc:creator> 
		             <category></category> 
		             <pubDate>Wed, 13 Oct 2010 10:12:11 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7844</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7844</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Burt&lt;/b&gt;, &lt;em&gt;Fri, 24 Sep 2010 19:38:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hi. I am sure this must have been asked been searching on the forums there are loads of posts regarding 'automation.' Maybe someone can point to this resource if it exists - a way to automate my script to render say 100 random textures and save them to a folder?&lt;br /&gt;&lt;br /&gt;Thanks for any help.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Kraellin&lt;/b&gt;, &lt;em&gt;Sat, 25 Sep 2010 11:06:18 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;i think you want the command line batch editor thing or sjeiti's web page that does this sort of thing. i've not used the command line thing at all so you'll have to search for info on that one, and a link to sjeiti's web page thing is around here somewhere too. sorry, i dont have the links right off hand, but also check the help files and wiki pages for the command line stuff.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Burt&lt;/b&gt;, &lt;em&gt;Wed, 13 Oct 2010 10:12:11 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Guess I forgot to subscribe to this topic - sorry. Thanks for responding. I'll search the terms you suggested.&lt;/p&gt;
</description>
</item>
<item><title>Multiblend with Modes</title> 
		             <dc:creator>Kraellin</dc:creator> 
		             <category></category> 
		             <pubDate>Tue, 05 Oct 2010 00:39:33 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7854</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7854</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Kraellin&lt;/b&gt;, &lt;em&gt;Wed, 29 Sep 2010 22:25:28 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;could someone build this script, perhaps? it's one of those things we've asked for in components, but with scripting this shld be possible to do ourselves. i just dont know how to script.&lt;br /&gt;&lt;br /&gt;what would be ideal on this is something like that 16 input script, only as a blend instead of a switch and then add in opacity and blend modes for each input. also, it would be great if this was easily changed to any number of inputs instead of the fixed 7 input multiblend we currently have. so, we could have one with 5 inputs or 10 inputs or 500 if we wanted, all with opacity sliders and mode switches. that would be sweet :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Thu, 30 Sep 2010 02:11:52 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Here's a good link for the math used in the different blending modes. &lt;a href='http://www.nathanm.com/photoshop-blending-math/' target='_blank' rel='nofollow'&gt;Photoshop blend modes&lt;/a&gt;. It's got some extra blending modes, too. Needs to be translated to Lua. &lt;br /&gt;&lt;br /&gt;I'd think 10 or so inputs should suffice. Then you can feed the result into another script component and get 9 more, etc.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 30 Sep 2010 06:23:45 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Here's a good link for the math used in the different blending modes. Photoshop blend modes. It's got some extra blending modes, too. Needs to be translated to Lua. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Ah Cool! He included two quadratic blendmodes I made a long time ago :-D (Reflect and Glow) and Jens Gruschels Negation mode. Here is the original article with even more modes and descriptions: &lt;a href='http://www.pegtop.net/delphi/articles/blendmodes/' target='_blank' rel='nofollow'&gt;http://www.pegtop.net/delphi/articles/blendmodes/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The main problem in implementing a multiblend with modes as a script is that we can't make drop down boxes with descriptive texts.. it would have to be an integer slider.. not optimal.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Dmitry Sapelnikov&lt;/b&gt;, &lt;em&gt;Mon, 04 Oct 2010 15:27:27 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;All blending modes for lua scripting are already prototyped ;)&lt;br /&gt;I suppose they will be added as a part of our scripting API in future releases.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Kraellin&lt;/b&gt;, &lt;em&gt;Tue, 05 Oct 2010 00:39:33 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;thanks, egret :)&lt;/p&gt;
</description>
</item>
<item><title>Scripiting Library.</title> 
		             <dc:creator>Lucato</dc:creator> 
		             <category></category> 
		             <pubDate>Tue, 07 Sep 2010 00:15:22 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7474</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7474</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Lucato&lt;/b&gt;, &lt;em&gt;Tue, 08 Jun 2010 12:15:23 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hey FF team, congratulations for the new step. Really interesting this new feature. I'll check it out.&lt;br /&gt;&lt;br /&gt;Do you guys intend to make a library for scripts as for filters? I mean, where members can share theirs scripts? It would be cool for those like me that aren't so good with programming languages. ;0)&lt;br /&gt;&lt;br /&gt;For a while, folks would use this thread for posting their scriptings in case they want to share it with the community. ;0)&lt;br /&gt;&lt;br /&gt;Cheers.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Tue, 08 Jun 2010 12:16:51 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;+1 a searchable script repository would be awesome :D&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 02:38:47 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Awesome.&lt;br /&gt;&lt;br /&gt;Here's my first &quot;Scrippet&quot; (script snippet): &lt;b&gt;Proportional gradient.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Lucato&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 03:17:15 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Great! Thanks ThreeDee for sharing it!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 03:32:29 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hi Lucato, you're welcome!&lt;br /&gt;&lt;br /&gt;Here's another one with pixel-based control.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Pixel-Based Grid&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Carl&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 04:27:02 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Good idea Lucato, I too am script handicapped, thanks ThreeDee  8)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 05:13:38 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;It will be interesting to see whether we can generate some patterns from the &lt;a href='http://www.filterforge.com/forum/read.php?PAGEN_1=1&amp;FID=9&amp;TID=1184&amp;phrase_id=1770177#nav_start' target='_blank' rel='nofollow'&gt;wishlist&lt;/a&gt; now via the new script components. Of course, I'm blissfully (and hopelessly) unencumbered when it comes to scripting, so others will have to give it a shot. :D&lt;br /&gt;&lt;br /&gt;Anyone up for a &lt;a href='http://mathworld.wolfram.com/LogarithmicSpiral.html' target='_blank' rel='nofollow'&gt;Logarithmic Spiral&lt;/a&gt;?  8)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 05:24:56 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;ThreeDee, nice grid!&lt;br /&gt;&lt;br /&gt;(The code could use a little beautification -- e.g. you may drop 'local' for r, g, b and a. Our programmers like to stick it to every variable, while I'm in favor of using it only where it's actually needed because it makes the code less readable.)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Lucato&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 05:27:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Yup, nice one 3D! Thanks again.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronjonnie&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 05:49:07 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Good morning everyone, :) &lt;br /&gt;&lt;br /&gt;Hi ThreeDee,&lt;br /&gt;&lt;br /&gt;I agree with Lucato, a nice one.  ;) &lt;br /&gt;Thank you. &lt;br /&gt;&lt;br /&gt;I wondered if you ever finished your filter? &lt;br /&gt;I need your help please. &lt;br /&gt;&lt;a href='http://www.filterforge.com/forum/read.php?FID=5&amp;TID=7411&amp;MID=84442#message84442' target='_blank' rel='nofollow'&gt;http://www.filterforge.com/forum/read...ssage84442&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;&lt;b&gt;Have a GREAT day. &lt;/b&gt; :) &lt;br /&gt;&lt;br /&gt;Ron&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Crapadilla&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 07:59:07 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I've been playing with ThreeDee's &quot;Proportional Gradient&quot; script, and it appears that the resulting gradient is still affected by &lt;i&gt;Size&lt;/i&gt; even if the flag is turned off. Is there a way to make &lt;i&gt;Map Script&lt;/i&gt; components independent of &lt;i&gt;Size&lt;/i&gt;?&lt;br /&gt;&lt;br /&gt;Speaking of flags, what is their use?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 08:43:36 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Crapadilla wrote:&lt;/b&gt;&lt;br /&gt;Is there a way to make Map Script components independent of Size? &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Yes, but I don't have a code snippet handy -- perhaps Egret can post one. It involves the SIZE variable.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 08:55:39 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Dilla, I think its something along these lines if you want x and y independent of size:&lt;br /&gt;&lt;br /&gt;function prepare()&lt;br /&gt;	SCALE = SIZE / math.min(OUTPUT_WIDTH, OUTPUT_HEIGHT)&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	local x_no_size = x * SCALE&lt;br /&gt;	local y_no_size = y * SCALE&lt;br /&gt;end;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;dmorrill&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 09:09:15 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Vladimir Golovin wrote:&lt;/b&gt;&lt;br /&gt; (The code could use a little beautification -- e.g. you may drop 'local' for r, g, b and a. Our programmers like to stick it to every variable, while I'm in favor of using it only where it's actually needed because it makes the code less readable.) &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Just as an exercise in getting more familiar with Lua, I took the liberty of simplifying the code a bit:&lt;br /&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;function prepare()&lt;br /&gt;&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp;griddistx = get_intslider_input( GRID_DIST_X )&lt;br /&gt;&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp;griddisty = get_intslider_input( GRID_DIST_Y )&lt;br /&gt;&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp;gridthick = get_intslider_input( GRID_LINE_THICKNESS )&lt;br /&gt;&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp;tf = { [true] = 0, [false] = 1 }&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp;local zx = math.mod( math.abs( x ) * OUTPUT_WIDTH,  griddistx )&lt;br /&gt;&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp;local zy = math.mod( math.abs( y ) * OUTPUT_HEIGHT, griddisty )&lt;br /&gt;&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp;local w  = tf[ (zx &amp;lt; gridthick) or (zy &amp;lt; gridthick) ]&lt;br /&gt;&amp;nbsp&amp;nbsp&amp;nbsp&amp;nbsp;return w, w, w, 1&lt;br /&gt;end;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;dmorrill&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 09:34:03 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Following up on my previous post, here's a variation on ThreeDee's scrippet that allows you to set the grid line color and fill to arbitrary color or map values...&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Lucato&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 09:45:14 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Regarding the Grid Script, shouldn't it show on the right and bottom side a thin line too as those shown at the top and left side once it is squared image?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Skybase&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 10:04:31 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hmm... well, I just began playing around with LUA. But aside from the advanced stuff it's really nice how you can throw in any formula and end up with pretty cool stuff.&lt;br /&gt;&lt;br /&gt;Here's a classic and a tribute to my highschool math formula that was saved on a TI-83&lt;br /&gt;&lt;br /&gt;function prepare()&lt;br /&gt;	value1 = get_slider_input(NUMBER)&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;function get_sample(x, y)&lt;br /&gt;	w = (x+(value1)*3*math.sin(y*x))*0.2&lt;br /&gt;	u = (w+(value1)*3*math.sin(y*x))*0.2&lt;br /&gt;	return w, u, w, a&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;dmorrill&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 10:35:01 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Lucato wrote:&lt;/b&gt;&lt;br /&gt;Regarding the Grid Script, shouldn't it show on the right and bottom side a thin line too as those shown at the top and left side once it is squared image?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Probably, but that will require a bit more code than the current one. But on the other hand, it tiles much better the way it is now  :) &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;dmorrill&lt;/b&gt;, &lt;em&gt;Wed, 09 Jun 2010 10:44:33 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Here's the first script component I wrote yesterday (I'm still fairly new to FF, so it took me a while to figure out where the component was being stored). This one takes two input maps and outputs a new map organized as a variable size grid whose cell contents are randomly chosen from matching regions of the input maps (sort of like the game of Concentration). The color of the (optional) grid lines can also be specified using another input map/color.&lt;br /&gt;&lt;br /&gt;For some reason, the script input editor won't allow me to set the lower bound of the line thickness input to 0, so the grid line thickness is 1 less than what you actually specify (i.e. if you set 1, no grid lines are drawn, setting 2 sets a grid line width of 1, ...).&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 03:20:05 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;b&gt;Bubbles Scrippet&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;With random number generator and tables you can do object-type noises, like bubbles.&lt;br /&gt;&lt;br /&gt;The drawback is that you have to sample each pixel as many times as you have objects, so 100 objects takes 10 times as long as 10 objects.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 03:21:25 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Scrippet itself&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 04:14:26 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;b&gt;Random Noise Scrippet&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Lua doesn't allow random numbers in the get_sample(x,y) function, so I wrote this Scrippet to get around that with a pseudorandom number generator function.&lt;br /&gt;&lt;br /&gt;In other words, here's how to make plain random noise.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 04:34:03 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;ThreeDee wrote:&lt;/b&gt;&lt;br /&gt;Lua doesn't allow random numbers in the get_sample(x,y) function, so I wrote this Scrippet to get around that with a pseudorandom number generator function. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;ThreeDeee, this is a very interesting and important topic -- we're thinking about providing an API for randomness that is not prone to patterning artifacts of random number generators seeded by sample coordinates, and, at the same time, don't have the problems associated with Perlin-based noise (e.g. reduced dynamic range.)&lt;br /&gt;&lt;br /&gt;(I haven't checked the snippet yet -- too busy writing the help.)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 04:36:40 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;ThreeDee wrote:&lt;/b&gt;&lt;br /&gt;Random Number Generator Scrippet.ffxml&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Oh, looks good so far. I'll have the guys examine and test it, perhaps we'll go with a similar approach.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 04:38:21 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;b&gt;Drop Ripples&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Variation on Bubbles.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 04:39:06 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Ripples Scrippet&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 04:50:54 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Vladimir Golovin wrote:&lt;/b&gt;&lt;br /&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt; ThreeDee wrote: &lt;/b&gt; Random Number Generator Scrippet.ffxml&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Oh, looks good so far. I'll have the guys examine and test it, perhaps we'll go with a similar approach. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Hi Vladimir,&lt;br /&gt;&lt;br /&gt;Glad you find it useful. Yes, it would be nice to have that functionality, and a way to connect it to the global Variation slider if at all possible.&lt;br /&gt;&lt;br /&gt;TD&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Vladimir Golovin&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 04:54:44 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;ThreeDee wrote:&lt;/b&gt;&lt;br /&gt;and a way to connect it to the global Variation slider if at all possible.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;You can the VARIATION variable, which is visible to scripts that have the &quot;Makes use of the global Variation setting&quot; flag turned on in their Script Settings.&lt;br /&gt;&lt;br /&gt;As for our planned randomness API, we may decide to pre-seed it with VARIATION automatically (while allowing to add a &quot;local&quot; seed.)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 05:45:30 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Vladimir Golovin wrote:&lt;/b&gt;&lt;br /&gt;You can the VARIATION variable, which is visible to scripts that have the &quot;Makes use of the global Variation setting&quot; flag turned on in their Script Settings.&lt;br /&gt;&lt;br /&gt;As for our planned randomness API, we may decide to pre-seed it with VARIATION automatically (while allowing to add a &quot;local&quot; seed.) &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Variation slider: Oh, excellent, got to check that out. Haven't gotten that far in investigating the possibilities.&lt;br /&gt;&lt;br /&gt;Randomness API plan sounds good.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 05:48:09 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;b&gt;Random Lines&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Similar to Bubbles, this Scrippet uses a table to store a number of lines (x-coordinate, y-coordinate, angle and value) and then calculates the distance of the current point to it, using the value that is highest at a given point.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 05:48:34 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Scrippet&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 05:57:34 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Lucato wrote:&lt;/b&gt;&lt;br /&gt;Regarding the Grid Script, shouldn't it show on the right and bottom side a thin line too as those shown at the top and left side once it is squared image?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Hi Lucato,&lt;br /&gt;&lt;br /&gt;Actually, no. The point of the script is to demonstrate using PIXEL values instead of relative values. &lt;br /&gt;&lt;br /&gt;The built-in components use values relative to the size of the image, while the Grid Scrippet uses fixed pixel values that don't change with the image size. Thus you can be sure your gridlines are always (for example) 10 pixels apart, whether the image is 600px or 126px or 6748px square.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 06:01:51 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;An interesting sort of thing happens when you reduce the Size, Pixels with the Lines Scrippet. The lines cross mainly in the original image area, since their coordinates fall there, but do continue in the whole image area. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronjonnie&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 10:25:03 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Good morning Everyone, :) &lt;br /&gt;&lt;br /&gt;Hey ThreeDee,&lt;br /&gt;&lt;br /&gt;Thanks for the Scrippets, they are very cool &amp; most helpful, to help us all learn.&lt;br /&gt;Speaking of learning, reminds me of a project I am having trouble with, I was in great hopes that you would please help me with it? ;) &lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.filterforge.com/forum/read.php?FID=5&amp;TID=7411' target='_blank' rel='nofollow'&gt;http://www.filterforge.com/forum/read...5&amp;TID=7411&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Have a GREAT day.&lt;/b&gt; :) &lt;br /&gt;&lt;br /&gt;Ron&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 10:54:09 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;ronjonnie wrote:&lt;/b&gt;&lt;br /&gt;Speaking of learning, reminds me of a project I am having trouble with, I was in great hopes that you would please help me with it? Wink &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Hi Ronjonnie,&lt;br /&gt;&lt;br /&gt;That Water Splash filter was an unfortunate victim of my operating system upgrade -- it no longer exists.&lt;br /&gt;&lt;br /&gt;But maybe I'll get inspired to rebuild it with 2.0 one of these days.&lt;br /&gt;&lt;br /&gt;TD&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 11:14:24 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Vladimir Golovin wrote:&lt;/b&gt;&lt;br /&gt;You can the VARIATION variable, which is visible to scripts that have the &quot;Makes use of the global Variation setting&quot; flag turned on in their Script Settings. &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Ok, thanks, I got that now. You can control the variations by calling math.randomseed(VARIATION) during prepare.&lt;br /&gt;&lt;br /&gt;Without this, the random numbers were different EVERY time, even when using a stored preset, which is fine if you wanted it to be that way, but if the variation happed to the exact one you wanted to keep...&lt;br /&gt;&lt;br /&gt;TD&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronjonnie&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 11:42:31 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hey ThreeDee,&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Thank you for the reply.&lt;/b&gt; I thought you were mad at me for something &amp; I could not figure out what that would be.  :?: &lt;br /&gt; &lt;br /&gt;&lt;b&gt;I am SO SORRY to hear the bad news about the loss of the Water Splash filter! :cry:  &lt;/b&gt;That has to be one of the most &lt;b&gt;SUPER COOL &amp; Most useful filters &lt;/b&gt;I have seen in a long time! &lt;br /&gt;&lt;b&gt;PLEASE PLEASE find the time to rebuild it, I love it &amp; can make good use of it.&lt;/b&gt; OK. :)  :)  :)  :) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Have a GREAT weekend!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ron&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 14:43:11 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;ThreeDee, real cool stuff you got here ;-)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;StevieJ&lt;/b&gt;, &lt;em&gt;Sat, 12 Jun 2010 19:55:02 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Thanks for sharing, guys.....they are helping me to learn it.....especially like the Lines Scrippet.....   8)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Carl&lt;/b&gt;, &lt;em&gt;Sun, 13 Jun 2010 07:17:13 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;cool ThreeDee &lt;br /&gt;&lt;br /&gt;......... not having a clue on scripting, is it possible to write a script which allows you to bring a second image into the editor? If it is, is any one interested in writing it, I'm sure alot of people would use it  :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Sun, 13 Jun 2010 07:57:18 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Carl, check out the Berestrokia sample from Vlad/Egret. I have an idea of writing a tool to create a bomber particle builder from a png.&lt;br /&gt;&lt;br /&gt;Only problem, I wont make a Windows version, will be Mac OS X only.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ronviers&lt;/b&gt;, &lt;em&gt;Tue, 15 Jun 2010 10:23:41 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Can we embed pastebins?&lt;br /&gt;[paste]&lt;a href='http://www.pastey.net/137711' target='_blank' rel='nofollow'&gt;pastebinTest&lt;/a&gt;[/paste]&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Carl&lt;/b&gt;, &lt;em&gt;Wed, 16 Jun 2010 01:59:49 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Totte wrote:&lt;/b&gt;&lt;br /&gt; Berestrokia sample from Vlad/Egret&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;where was that Totte? your gona have to give up that mac and give windows a go  ;)  :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Kraellin&lt;/b&gt;, &lt;em&gt;Sun, 20 Jun 2010 15:58:52 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;more, more, more!&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Dmitry Sapelnikov&lt;/b&gt;, &lt;em&gt;Mon, 28 Jun 2010 02:19:31 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;ThreeDee, where have you got the noise formula for your RNG snippet?&lt;br /&gt;Could you give me a link?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Wed, 30 Jun 2010 05:25:56 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Egret wrote:&lt;/b&gt;&lt;br /&gt;ThreeDee, where have you got the noise formula for your RNG snippet? Could you give me a link? &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Hi Egret, sent you the link by mail yesterday as the forum was read-only. &lt;br /&gt;&lt;br /&gt;TD&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Wed, 30 Jun 2010 05:43:21 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Carl said something like:&lt;/b&gt; where was that Totte?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;a href='http://www.filterforge.com/download/beta2/lua-scripting.html' target='_blank' rel='nofollow'&gt;http://www.filterforge.com/download/b...pting.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Wed, 30 Jun 2010 05:49:38 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;b&gt;Tech Noise&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Fractal square noise of in sizes from 1/2 to 1/2^n.&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Wed, 30 Jun 2010 05:53:38 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Hmm. That file name changed radically from what I uploaded. Hope it works...&lt;br /&gt;&lt;br /&gt;The basic output is this, iterations and bevel size are adjustable:&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;ThreeDee&lt;/b&gt;, &lt;em&gt;Wed, 30 Jun 2010 05:56:19 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Image sample, using a blend of two Tech Noise components as a height map in a Surface filter.&lt;/p&gt;
</description>
</item>
<item><title>aa zones mystery</title> 
		             <dc:creator>Sphinx.</dc:creator> 
		             <category></category> 
		             <pubDate>Fri, 03 Sep 2010 01:10:35 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7795</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7795</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Thu, 02 Sep 2010 05:32:12 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I'm working on a script that draws several samples from a source via get_sample_grayscale (in a loop), but each call seem to generate a new aa zone value internally - even though the source contains a constant aa zone value (image comp in background mode).&lt;br /&gt;&lt;br /&gt;I tried overridding with my own aa zones, but this is just being combined with the dark under the hood magic aa zones, which ends up being totally AA overkill..&lt;br /&gt;&lt;br /&gt;Is there any way to get around the new aa zone generation for each get sample call?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Dmitry Sapelnikov&lt;/b&gt;, &lt;em&gt;Fri, 03 Sep 2010 01:10:35 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Could you post the source code of the filter, please?&lt;/p&gt;
</description>
</item>
<item><title>print(&quot;message&quot;) alternative</title> 
		             <dc:creator>Sphinx.</dc:creator> 
		             <category></category> 
		             <pubDate>Wed, 01 Sep 2010 03:18:17 -0400</pubDate> 
		             <link>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7525</link> 
		             <guid>http://www.filterforge.com/forum/read.php?FID=18&amp;TID=7525</guid>
		             <description>&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Fri, 18 Jun 2010 05:41:34 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;Calling error(&quot;message&quot;) will stop execution, so how do you output several messages? &lt;br /&gt;&lt;br /&gt;I had hoped print would do the job, but it seems that stdout is not directed to the message log, which is probably a good measure to avoid flooding the message log with samplecount * print(&quot;message&quot;),  :D &lt;br /&gt;&lt;br /&gt;However I'm missing such a feature a lot when debugging a script: could you perhaps add some sort of custom print function that is allowed to output once per execution/rendering? I.e. much like error, only it will not stop execution&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;GMM&lt;/b&gt;, &lt;em&gt;Mon, 21 Jun 2010 05:43:36 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;stdout is directed to the log file located in the TEMP folder. &lt;br /&gt;I agree that it's not very convenient but currently it's better than nothing :)&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Redcap&lt;/b&gt;, &lt;em&gt;Sun, 04 Jul 2010 11:41:48 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I have scoured the help documentation, have looked at others' example code hoping they used this, and still have no idea why my stdout function call gets an error or where the TEMP folder is; do you think you could show an example code when answering questions like this, so if newbies who take the intiative to find the answers themselves don't have to ask the same question twice because the answer is mystically mysterious in their eyes? :)&lt;br /&gt;&lt;br /&gt;P.S. I really don't know how to use stdout or where the TEMP folder is, can you help?&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;GMM&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 04:14:58 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;table class='forum-quote'&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Quote&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Redcap wrote:&lt;/b&gt;&lt;br /&gt;where the TEMP folder is&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;It's the user temporary folder. You can check or modify its location in Windows by selecting System Properties &amp;gt; Advanced &amp;gt; Environment variables: you need the location that the TEMP variable points to. (Alternatively, use the 'set' command from the command line).&lt;br /&gt;&lt;br /&gt;The log file is called Filter Forge x86-SSE2.log or Filter Forge x86.log&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Sphinx.&lt;/b&gt;, &lt;em&gt;Mon, 05 Jul 2010 04:44:24 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;I found my log file here:&lt;br /&gt;&lt;br /&gt;C:\Documents and Settings\&amp;lt;your profile name&amp;gt;\Local Settings\Temp\Filter Forge x86.log&lt;br /&gt;&lt;br /&gt;FF, you should consider adding an option for clearing that logfile when a rendering starts. It seems you just append to that logfile during the whole FF session&lt;br /&gt;&lt;br /&gt;I'm looking at a 233 MB logfile right now  :eek: - Yes I know I shouldn't put print calls inside get_sample .. but it is very helpful when debugging. &lt;br /&gt;&lt;br /&gt;Beside from that &quot;print&quot; is not in the unsafe function category, meaning that it is possible to submit a filter that might fill up the disk with a huge logfile...&lt;/p&gt;&lt;p&gt;&lt;small&gt;&lt;b&gt;Totte&lt;/b&gt;, &lt;em&gt;Wed, 01 Sep 2010 03:18:17 -0400&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;On Mac OS X, the log file is found here:&lt;br /&gt;/private/tmp/Filter Forge universal.log&lt;/p&gt;
</description>
</item>
</channel></rss> 
