Author Topic: prox 2.0  (Read 10409 times)

0 Members and 2 Guests are viewing this topic.

Offline Bobboau

  • Just a MODern kinda guy
    Just MODerately cool
    And MODest too
  • 213
given the... unbelievable reception of the last version, it's obvius that I was going to make a new version.
here it is
please, one at a time. I wouldn't want to crash the TF server with the old BWO account I've been using all these years, probably illegitimately.

for those of you who didn't look last time or have forgotten, prox was a procedural texture generator I first made a few weeks ago, the interface code sucked so I rewrote it and added in a few features, such as layers.

anyway, the syntax is very different, and the interface has been totally rewritten. to start you work in layers, your first step should be to go to the layer menu and selecting new this will bring up a dialog that will allow you to define a new layer, it needs a resolution (the first two editors) and a name, and you can chose one of the available output modes. any of these settings can be changed later, it's usualy a good idea to start off at a low resolution and once you've found something change it to something higher.

general syntax:
the image is drawn via different variables. a variable is defined thusly
@nameofvariable=expression
the @ symbol is used to denote you are defining a variable, everything after that until the = is considered the name of the variable. after that you have the meat of the code, the expression.
expressions are a string of constants and variables, unlike the last version you do not need to suround all variables with ':'s. you can reference other variables simply by useing there names. in addition there are many built in functions, such as sin and cos and abs a mostly complete list of all the built in stuff is here in addition to that I have added in a few more, mostly related to the addition of complex number suport, wich I'll get to later.
you can reference other layers in a similar way as you do variables, simply type there names, but you also need to specify the color component and the pixel, this is done like this;
layername.r(x,y)
layername is the name of a layer (duh) it's followed by a '.' and then the color component, in this case r or red, other available components are g or green, b or blue, h or hue, s or sat (saturation), and l or lum (luminance). in the parentheses you have the 0 to 1 location of the pixel to be sampled, it does not simply pull the pixel closest to that point it does a weighted average of the four closest pixel, this allows a very smooth upscaling, but is quite expensive. as of now complex color values can only be retrieved from RGB. any layer can be referenced as long as it exists (including the current layer it'self).
complex numbers, for those of you who care, I spent a decent amount of effort on allowing the useage of complex numbers, this has to do with i aka sqrt(-1), if you don't know what this is just ignore everything that has anything to do with it, includeing the rest of this paragraph, as it's just a bit of iceing for some people. to make a complex constant type in the real part then the imaginary part seperated by a :. for example 0:1 is the same as the constant i. there is also a set of functions, i() wich returns an imaginary number from the real part of the passed number, and complex_swap() which exchanges the complex and real components of the passed number.

well that's most of the syntax, I think. the rest of the interface... well below the main script editor you have the output controls, here you can change the output mode to one of the available ones, currently there are three available RGB, HSL and B&W (greyscale), I will likely be makeing more (includeing RGBA and CYMB) you can also chose wich variables go to wich chanel. above the script editor you have the evaluate button, that will evaluate the currently selected image pushing f10 has the same effect, above that you have the time controler, there is a maual text editor and a slider, you can use this to test frames of an animation. to the left of all that mess is the later selector this holds thumbnail images of the last evaluation of the diferent layers you have made, with there names below them, you can change there names by clicking on the text. right clicking brings up a popup menu were you can make a new layer, delete the one you just clicked on, change the resolution to anything arbitrary, or 'renormalize' it if you think your image is looking blury try clicking on that, it will change the resolution of the layer to that of the output pane. and speaking of the output pane, that's the big initaly black box on the left side of the window, as you have probly figured out by now it's were the evaluated images are displayed.
main menu;
layer, make a new one or render an exsisting one,
image, save curent image saves the current layer's evaluation, it does not reevaluate it.
save image allows you to specify a new resolution and revaluates, then saves the result
save animation is sort of like save image but it also asks you for a number of frames and will interpolate t between 0 and 1.

anyway... download and use it this time or I will curse you all.
Bobboau, bringing you products that work... in theory
learn to use PCS
creator of the ProXimus Procedural Texture and Effect Generator
My latest build of PCS2, get it while it's hot!
PCS 2.0.3


DEUTERONOMY 22:11
Thou shalt not wear a garment of diverse sorts, [as] of woollen and linen together

 
Awesome again!

I'd love to see a video of something created with this used in a game.

 

Offline neoterran

  • 210
you should give your layer a peroper name ?

Crashed under vista in 10 seconds - unhandled exception.
Official Taylor Fan Club Member.
Chief Grognard.
"How much code could a coder code if a coder could code code?"

 

Offline Bobboau

  • Just a MODern kinda guy
    Just MODerately cool
    And MODest too
  • 213
you need to give it a name, rather than leaving the space to it's default.
and apparently I put an extra e in there....
what did you do that caused a crash?
Bobboau, bringing you products that work... in theory
learn to use PCS
creator of the ProXimus Procedural Texture and Effect Generator
My latest build of PCS2, get it while it's hot!
PCS 2.0.3


DEUTERONOMY 22:11
Thou shalt not wear a garment of diverse sorts, [as] of woollen and linen together

 

Offline Bobboau

  • Just a MODern kinda guy
    Just MODerately cool
    And MODest too
  • 213
I totaly rewrote te parseing code, so if you notice any particular bit of code that does not work, or crashes, please post it.
Bobboau, bringing you products that work... in theory
learn to use PCS
creator of the ProXimus Procedural Texture and Effect Generator
My latest build of PCS2, get it while it's hot!
PCS 2.0.3


DEUTERONOMY 22:11
Thou shalt not wear a garment of diverse sorts, [as] of woollen and linen together

 

Offline neoterran

  • 210
I wasn't doing anything... after i chose a  "peroper" name :D It started to become unresponsive and got faded out (i love this on vista btw) then eventually it popped up a "unhandled execption" window. I haven't run it again.
Official Taylor Fan Club Member.
Chief Grognard.
"How much code could a coder code if a coder could code code?"

 

Offline Water

  • 210
The two inputs above new layer in dialogue box are for what?

I haven't managed to get any output even using some of your code snippets. Have managed to crash it using the  Unbelievably Expensive code.  :)

Edit: must be my machine, get black from ver1 as well. Installed Microsoft visual C++ redistributable package.

Separate question. Normal mapping - is it better to do a full unwrap avoiding mirroring?
« Last Edit: February 11, 2007, 05:49:47 pm by Water »

 

Offline Bobboau

  • Just a MODern kinda guy
    Just MODerately cool
    And MODest too
  • 213
the old scripts do not work due to changes in syntax, namely the whole ':' thing

those two inputs are the x and y resolution.

btw, I have already identified bugs in the parser.
Bobboau, bringing you products that work... in theory
learn to use PCS
creator of the ProXimus Procedural Texture and Effect Generator
My latest build of PCS2, get it while it's hot!
PCS 2.0.3


DEUTERONOMY 22:11
Thou shalt not wear a garment of diverse sorts, [as] of woollen and linen together

 

Offline Bobboau

  • Just a MODern kinda guy
    Just MODerately cool
    And MODest too
  • 213
here is a little explosion/shockwave I just made.

and I updated the zip, with a slightly less buggy parsing code, it also has another color space available HPV, it's similar to HSL, but difrent... seems to be better at getting specific colors, but they don't always look quite as cool.

also I think I forgot to mention a feature in the original post, there is an option for enabling color coding of the input, it's disabled by default because otherwise you'd be getting rainbow colored expressions and that might annoy some people and because I was getting an odd assertion error with it so I decided to just block it off as an option so it could be used at a risk. it's really really useful when you have long expressions and can't keep track of what's what. (lots of parentheses)
Bobboau, bringing you products that work... in theory
learn to use PCS
creator of the ProXimus Procedural Texture and Effect Generator
My latest build of PCS2, get it while it's hot!
PCS 2.0.3


DEUTERONOMY 22:11
Thou shalt not wear a garment of diverse sorts, [as] of woollen and linen together

 

Offline Bobboau

  • Just a MODern kinda guy
    Just MODerately cool
    And MODest too
  • 213
I decided to update the zip as there seems to be one or two people moderately interested in trying it out.  there are a number of improvements since the last build, there is recently added support for saving layers and workspaces (only lightly tested at this point, still could be buggy), I just put constant support back in (PI, E, and PHI are all predefined to the 40th decimal place, NOTE: it will replace any instance of those strings with the numerical value, so if you make a variable called ME it will see it as M2.718...).

cooler stuff

there is now support for temporary/local layers, these are layers that only live inside another layer, there is still a good bit of work to be done on them, they don't update the progress bar (so it might seem like Prox has frozen up until it's done processing the temp layer, wich can be quite a while), you can use this to make a constant noise function wich you can then lookup from (at a diferent resolution) elsewere in the layer, with this and the next big feature you can make an effective perlin noise.
syntax is a bit heavy, but not to hard to get your mind around
Code: [Select]
$name[x_resolution,y_resolution]<TYPE>{
@variable_names=expressions
}<output_variable|output_variable|...>

and example of a 256X256 temporary noise layer

Code: [Select]
$p[256,256]<RGB>{
@A=rand(1)
@B=rand(1)
@C=rand(1)
}<A|B|C>


the next super cool thing, that isn't totaly done yet, is sumation. you can make an effective for loop with as many local variables as you want. the syntax for this is REALY messy, and posably subject to change.
Code: [Select]
sum(test(test_expression),var(variable_name, initial_value, iteration_expression),var(variable_name, initial_value, iteration_expression))

an example

Code: [Select]
sum(test(i<10),var(i,1,i+1))

that will add 1 to i until i is 10 then it will return i (in this simple syntax example this expression will always equal 10), the first variable defined is what is returned (for now)

an example combineing the two to make (basicly) perlin noise (for a 512X512 layer)

Code: [Select]
$N[512,512]<RGB>{
@A=rand(1)
@B=rand(1)
@C=rand(1)
}<A|B|C>


@R=sum(test(i<513),var(l,0,l+N.r(x/i+x/(2*i),y/i+y/(2*i))/(512/i)),var(i,1,i*2))
@G=sum(test(i<513),var(l,0,l+N.g(x/i+x/(2*i),y/i+y/(2*i))/(512/i)),var(i,1,i*2))
@B=sum(test(i<513),var(l,0,l+N.b(x/i+x/(2*i),y/i+y/(2*i))/(512/i)),var(i,1,i*2))


if you can't understand any of that it doesn't matter just copy and paste and make a layer you can reference. note: this will generate a different noise every time it is evaluated.
Bobboau, bringing you products that work... in theory
learn to use PCS
creator of the ProXimus Procedural Texture and Effect Generator
My latest build of PCS2, get it while it's hot!
PCS 2.0.3


DEUTERONOMY 22:11
Thou shalt not wear a garment of diverse sorts, [as] of woollen and linen together

 

Offline Water

  • 210
It may take me a while to understand the maths.

Could you post the code snippit for the terran beams?  :) I'm very interested in the caustic light patterns.


 

Offline Bobboau

  • Just a MODern kinda guy
    Just MODerately cool
    And MODest too
  • 213
I didn't save the code for it exactly, I do emember that noise there was the hard part, the code would have been something to the effect of
Code: [Select]
@H=cos(abs(Y)*PI+PI*WN.l(x,y))/10+Y^2+0.25
@S=sin(abs(Y)+WN.l(x,y))
@L=sin(abs(Y)*PI+PI*WN.l(x,y)^2)*(1-Y^2+WN.l(x,y)*0.1)
were WN is the name of the noise layer

note that the abs(Y) and Y^2 are more related to the shape of the effect, and you have sin(shape + noise) and both of them are put into terms of PI this is what is refered to as terbulence.
« Last Edit: February 21, 2007, 11:13:24 am by Bobboau »
Bobboau, bringing you products that work... in theory
learn to use PCS
creator of the ProXimus Procedural Texture and Effect Generator
My latest build of PCS2, get it while it's hot!
PCS 2.0.3


DEUTERONOMY 22:11
Thou shalt not wear a garment of diverse sorts, [as] of woollen and linen together

 

Offline IPAndrews

  • Disgruntled Customer
  • 212
  • This site stole my work
Can this be used to make the big Anime style fireball? As seen in the screenshot "3rdSpace-Fighter-shot02.jpg" in here?
Be warned: This site's admins stole 100s of hours of my work. They will do it to you.

 

Offline Bobboau

  • Just a MODern kinda guy
    Just MODerately cool
    And MODest too
  • 213
Bobboau, bringing you products that work... in theory
learn to use PCS
creator of the ProXimus Procedural Texture and Effect Generator
My latest build of PCS2, get it while it's hot!
PCS 2.0.3


DEUTERONOMY 22:11
Thou shalt not wear a garment of diverse sorts, [as] of woollen and linen together

 

Offline IPAndrews

  • Disgruntled Customer
  • 212
  • This site stole my work
Clever piece of kit then.
Be warned: This site's admins stole 100s of hours of my work. They will do it to you.

 

Offline Bobboau

  • Just a MODern kinda guy
    Just MODerately cool
    And MODest too
  • 213
your talking about those fiery commet thingys they shot right?
Bobboau, bringing you products that work... in theory
learn to use PCS
creator of the ProXimus Procedural Texture and Effect Generator
My latest build of PCS2, get it while it's hot!
PCS 2.0.3


DEUTERONOMY 22:11
Thou shalt not wear a garment of diverse sorts, [as] of woollen and linen together

 

Offline Vasudan Admiral

  • Member
  • 211
    • Twisted Infinities
Hey Bob, would you be able to write up some tutorials for things like adding turbulence and how the layers system works etc? I've been through the stuff you've posted so far, and made a simplistic beam (@L=-6*y^2+6*y-0.4), but beyond that kinda thing it gets very tricky knowing where to begin. :\

Any help along those lines would be awesome. :)

Edit: Even just a list of all built in functions and an example of their syntax would really help actually. ATM it's kinda just that some are mentioned, some are explained, both in this thread and the first one.
« Last Edit: February 22, 2007, 12:31:45 am by Vasudan Admiral »
Get the 2014 Media VPs and report any bugs you find in them to the FSU Mantis so that we may squish them. || Blender to POF model conversion guide
Twisted Infinities

 

Offline Bobboau

  • Just a MODern kinda guy
    Just MODerately cool
    And MODest too
  • 213
after that I'd say playing with trig functions (sin, cos, tan) and looking up noise layers would be a good next step, all you realy need to know is sin and cos go up and down in a smooth fashion (and the replete based on multiples of PI so multiplying something in the 0-1 range by PI would probably be a good idea) tan tends to go crazy at regular intervals, so it can with some trickery be made to make something that looks sort of like lightning when combined with a noise layer. which I'll explain how to do later in this post.

this isn't so much a tutorial as an explanation of a few techniques I developed, I give example code and you can just copy it. I guess I should start with some reference material.

modifying this old post for some changes in syntax

most variables go in the range of 0-1,

x, y, r, and t go from 0 to 1 (r actualy goes to sqrt(2) in the corners)
X and Y (note capitalisation) go from -1 to 1
ang goes from 0 to 2*PI
note if you find this isn't how things are working it's a bug. I'm looking into something right now that makes me think ang might be between -PI and PI, I might keep it this way though, what do you think?
I figured these would be the most maliable ranges for these, cause if you wanted a function that changed, say, from -2 to  11, along lets say x, you'd just have to set a variable like this
@NEWX=x*13-2
and instead of x you'd use NEWX

all output chanels are in the range of 0 to 1, were 0 is totaly off and 1 is totaly on (exept hue wich wraps around, 0 and 1 are red, 0.5 is green 0.75 is blue/purple, 0.25 is yellow/green, hsl is sort of like polar coordanants with H being equivelent to theta).
so you need to normalise your output to this, on drawing anything greater than 1 is clamped to 1, and less than 0 to 0, now this is after evaluation, so you can have negitive values, it's just that when it's drawn on screen it shows up as black. you can invoke this function in your code if you think it will be usefull (anything with a divide over (aproching) zero in it for instance, like tangent functions) with clamp().

I was also considering adding iterative abilities (wich could allow you to fake diferentiation/integration and do series convergence) but that's going to have to wait untill after I figure out how to get user defined functions to work (and I don't mean those psudo functional variables
[edit]this is in now[/edit]

also a few hidden functions that use non-standard notation (because its a requierment of the odd syntax I started with)
b#x == the b'th root of x
b~x == the log base b of x
comparison opperators (>,<,=) return 1.0 for true and 0.0 for false
and modulus is %

also there are built in constants PI, PHI, and E (case sensitive, I know e is suposed to be lower case but it's my screwy syntax) if there are any others you'd like I'd be happy to include them. there is also a built in variable called srand wich is a static random, it gets changed everytime you evaluate to something between 0 and 1 (it would be diferent in each frame of an animation)

while I'm at it here is a complete list of all unary functions currently supported:
hypsin
hypcos
hyptan
arcsin
arccos
arctan
sin
cos
tan
log
ln
sqrt
deg (degree to radian)
rad  (radian to degree)
!   (factorial, it works a bit oddly !(var) rather than var! as you would expect)
abs
ipart (returns only the whole number)
fpart (strips off whole numbers, leaveing only the less than 1 part)
sign (returns -1 or 1)
not (returns 0 if you pass it 1, zero under all other cases)
clamp (returns 1 if passed over 1, 0 if under 0)


if this starts getting used I'm likely to rework the syntax

oh and if you plan on doing animations here is a tip, evaluate at t=0 and t=1 it the two images look exactly the same it will loop seamlessly.

all functions take one parameter within parentheses, of which the opening one touches the  function name (though white noise is ignored, so if there is a space or tab it would probly still work).
that's a fairly extensive list of the built in functions.

layers work pretty much like variables, once you make a layer it can be referenced any ware, when you reference a layer you do it by looking up color components at a relative point (0-1 for x and y) so if you want to find the luminance of a layer named 'example' it would look like example.l(0.5,0.5), you can look up just about anything about any color component, r is red, g is green, b is blue, l is luminence, h is hue, s is saturation (these last two don't seem to work properly), there's a few others I've never tested for the other color spaces I've made. there is currently no support for reevaluateing at a given point, but I'll probly include that at some point in the near future. in addition to looking up other layers you can define a local layer that gets referenced exactly the same way as normal layers but is only available in the layer it is defined for (I think I described the syntax for this in this thread already). if you want to look up the value of another layer at the exact same point (relitively) in that layer it would look like example.l(x,y), layer lookup works a like like UV map lookup, so if you understand UV mapping, then this should be a peice of cake. you can do distorted lookups for example repeteing another image twice horizontaly (along the x axis) would look like this example.l(2*x,y). distorted lookups are sort of an advanced effect, and you can easily get some stunning results with it, but it usualy needs tiled noise to work properly.

now useing layer lookups you can make all sorts of noise, a layer wich is made just so it can be looked up for noise is what I refer to as a noise layer, Water posted a pic from a turbulence noise layer, so far I have figured out two very nice noise layers the first is simple perlin noise it's omnidirectional cloudy fogy stuff it's good for all sorts of stuf were you just want some variation in color that is random but does not look like static. I posted all this code in the weapon effect thread, but I'll try to consolidate here.


good perlin noise

Code: [Select]
$N[512,512]<RGB>{
@A=rand(1)
@B=rand(1)
@C=rand(1)
}<A|B|C>


@R=sum(test(i<513),var(l,0,l+N.r(x/i+x/(2*i),y/i+y/(2*i))/(512/i)),var(i,1,i*2))
@G=sum(test(i<513),var(l,0,l+N.g(x/i+x/(2*i),y/i+y/(2*i))/(512/i)),var(i,1,i*2))
@B=sum(test(i<513),var(l,0,l+N.b(x/i+x/(2*i),y/i+y/(2*i))/(512/i)),var(i,1,i*2))

this will give you perlin noise that can then be looked up in other layers, you can multiply by it or add it to some other variable and it usually has a pretty significant effect on things, using noise and other variables inside trig functions can have nice effects too. unfortunately this is not in it's current form tillable, and the method I use for making it tillable tends to  cause it to lose resolution so you should start off with noise twice as big as you think you are going to need. but before I go into tileing methods and other stuff I should mention turbulence noise.


good turbulent noise

Code: [Select]
$N[512,512]<RGB>{
@A=rand(1)
@B=rand(1)
@C=rand(1)
}<A|B|C>

@R=sum(test(i<513),var(l,0,l+((N.r(x/i+x/(2*i),y/i+y/(2*i))-0.5)*2)^(1/4)/(1024/i)),var(i,1,i*2))
@G=sum(test(i<513),var(l,0,l+((N.g(x/i+x/(2*i),y/i+y/(2*i))-0.5)*2)^(1/4)/(1024/i)),var(i,1,i*2))
@B=sum(test(i<513),var(l,0,l+((N.b(x/i+x/(2*i),y/i+y/(2*i))-0.5)*2)^(1/4)/(1024/i)),var(i,1,i*2))

this will produce that wispy vainy effect and is the heart of the detail in the terran beams I made (the vasudan beams use perlin noise with a distorted lookup) like the perlin noise it too is non tileable in it's natural state, which leads us to the next topic, tileing layers.


good thing to make stuff seamless along one axis

Code: [Select]
$N[512,512]<RGB>{
@RX=WN.r(x,y)*(1-abs(X))+WN.r(x+0.5,y)*abs(X)
@RY=WN.r(x,y)*(1-abs(Y))+WN.r(x,y+0.5)*abs(Y)

@GX=WN.g(x,y)*(1-abs(X))+WN.g(x+0.5,y)*abs(X)
@GY=WN.g(x,y)*(1-abs(Y))+WN.g(x,y+0.5)*abs(Y)

@BX=WN.b(x,y)*(1-abs(X))+WN.b(x+0.5,y)*abs(X)
@BY=WN.b(x,y)*(1-abs(Y))+WN.b(x,y+0.5)*abs(Y)
}<RX|GX|BX>

@R=N.r(x/2,y)
@G=N.g(x/2,y)
@B=N.b(x/2,y)

this code is a general form for making a non-tiling image tile along one axis, specifically it's set up to tile along the x axis, but it has the variables setup to go along the y axis also (so you can change it easily), it expects another layer called WN that has the source noise, what it does is it looks up the source noise and fades it along the edge, then it adds to that the source noise moved over by half also faded at the edges, but sence it's moved over it cancels out the fading of the other lookup, the big downside is only the detail in the very middle of the image realy survives this process. of course you don't realy need to know how it works to use it, just paste one of the noise layer codes into a layer named WN and then paste this into a separate layer and you'll have noise that tiles along the x axis asymmetrically.

there are some other tileing techniques you can use that work via distorted lookups, my favorite is sin distorted lookup, it works like thus.
rather than looking up your noise directily like this example.l(x,y), you look it up like this example.l(sin(x*PI)*0.5+0.5,sin(y*PI)*0.5+0.5), now you might look at that and go "OH MY GOD HES GOING INTO QUANTUM CALCULUS!!!" no just settle down and look at it for a second, for the two lookup parameters you have basicly the same function of x or y, that function is this "sin(x*PI)*0.5+0.5", now as I mentioned earlier all you need to know about sin and cos is they move smoothly between -1 and 1 and they repete based on multables of PI, so we have x*PI, so it will repete with x now, we have *0.5, now it's in the range of -0.5 to 0.5, then finaly we have +0.5 wich shifts the range to 0 to 1, wich is the whole domane of an image, so this will basicly move back and forth over an image.
but of course just like everything else you don't need to understand how it works to use it, just see how it looks and from now on you can just copy and pase when you want that effect now sinlookup has a problem in that there are periodic places were the sin function barely changes, and so you will get basickly lines  in your output, your can fenegle this out if you play with it enough, but a lot of times you can just hide it.

a similar tequnique for tiling lookup involves inverse sin as well, example.l((arcsin(sin(x*PI))/PI)*0.5+0.5,(arcsin(sin(y*PI))/PI)*0.5+0.5)
as before this looks a lot more complicated than it is, all we do here is multiply the input variable by PI so the function repetes along it, then we take the sin of that, then the inverse of sin, but it's going to be multables of PI so we divide that out, then like before with have something in the -1 to 1 range, so we make the same adjustment. the sesult is it moves back and forth over the image at a constant rate, this get's rid of the line problem in the standard sin lookup, as well as the result is not distorted (wich is unfotunate if you _wanted_ distortion), but mirors every other tile.
and like before all you need to do is copy and paste, not understand the inner workings. when stuf starts to get realy long it might be a good time to start useing other variables to simplify things.
so rather than
@L=(1-r)^4*example.l((arcsin(sin(x*PI))/PI)*0.5+0.5,(arcsin(sin(y*PI))/PI)*0.5+0.5) + example.l((arcsin(sin(x*PI))/PI)*0.5+0.5,(arcsin(sin(y*PI))/PI)*0.5+0.5)

you could have
@N=example.l((arcsin(sin(x*PI))/PI)*0.5+0.5,(arcsin(sin(y*PI))/PI)*0.5+0.5)
@L=(1-r)^4*N+N
//I have no idea what this code would acualy do I just made it up. but it's easier to read, yes?

once you have a tileing noise solution, you can also make use of more interestin lookup distortions, for example
exampl.l(ang/PI,r)
what this does is it wraps the example layer in a circle around the center of the screen, now for a static image this would only need to tile along x (wich is getting looked up via the angle), but if you were going to animate it and have it pull inward then you'd want it tiled along y as well a combination of this and the arcsin lookup was the basis of this effect, the noise used was simple perlin, I made sevral radial lookups with arcsin tilling (of r*PI and ang rather than x*PI and y*PI)

I should probly work out a simple step by step tutorial for makeing something specific...
Bobboau, bringing you products that work... in theory
learn to use PCS
creator of the ProXimus Procedural Texture and Effect Generator
My latest build of PCS2, get it while it's hot!
PCS 2.0.3


DEUTERONOMY 22:11
Thou shalt not wear a garment of diverse sorts, [as] of woollen and linen together

 

Offline Cobra

  • 212
  • Snake on a Cain
    • Skype
    • Steam
    • Twitter
Hmm, I can't even get it to run.

"This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix the problem."

[added note] And I HATE Windows error messages. They always sound so retarded to me.
To consider the Earth as the only populated world in infinite space is as absurd as to assert that in an entire field of millet, only one grain will grow. - Metrodorus of Chios
I wept. Mysterious forces beyond my ken had reached into my beautiful mission and energized its pilots with inhuman bomb-firing abilities. I could only imagine the GTVA warriors giving a mighty KIAAIIIIIII shout as they worked their triggers, their biceps bulging with sinew after years of Ivan Drago-esque steroid therapy and weight training. - General Battuta

 

Offline Bobboau

  • Just a MODern kinda guy
    Just MODerately cool
    And MODest too
  • 213
are you on vista or something?
I'm not doing anything non-standard AFAIK.
Bobboau, bringing you products that work... in theory
learn to use PCS
creator of the ProXimus Procedural Texture and Effect Generator
My latest build of PCS2, get it while it's hot!
PCS 2.0.3


DEUTERONOMY 22:11
Thou shalt not wear a garment of diverse sorts, [as] of woollen and linen together