OverviewFilesCommitsIssuesDocsReleasesPeers

ifsrenderer-linux / Transforms / Pixel_flow.ifstf

27 lines · ifstf ref:
@Name: Pixel flow
@Version: 1.3
@Description: Best to chain it after thin shapes and do only 1 iteration.

@flow_length: 1
@flow_inclination: 0
@flow_azimuth: 0
@pattern_width: 25
@power: 4
@seed: 42

//should be computed once
float sini = sin(PI * @flow_inclination * DEGTORAD);
float cosi = cos(PI * @flow_inclination * DEGTORAD);
float sina = sin(TWOPI * @flow_azimuth * DEGTORAD);
float cosa = cos(TWOPI * @flow_azimuth * DEGTORAD);
vec3 flow_dir = normalize(vec3(sini*cosa, sini*sina, cosi));

vec3 block = floor(p * @pattern_width);
vec3 vblock = block + vec3(2.0) - 4.0 * vec3(
	f_hash2(@seed, block.x),
	f_hash2(@seed, block.y),
	f_hash2(@seed, block.z));
float fLen = f_hash3(@seed*vblock.x, @seed*vblock.y, @seed*vblock.z);
float fade = pow(random(next), @power) * fLen;
return p + flow_dir * @flow_length * fade;