<?xml version="1.0" encoding="utf-8"?>
<scenedata>
	<material>
		<name>Voronoi</name>
		<diffuse>
			<albedo>
				<shader>
					<shader><![CDATA[def mypos() vec2:
	getTexCoords(0)*10.

def tile(vec2 mypos) vec2:
	vec2(
		floor(doti(mypos)), 
		floor(dotj(mypos))      )

def node(vec2 tile) vec2:
	tile + vec2 ( noise(tile*1.456169584),  noise(tile*1.65465165) )

def closest(vec2 node_a, vec2 node_b, vec2 xy) vec2:
	vec2(
		if(
			lt(
				length(node_a - xy), 
				length(node_b - xy)
			),
			doti(node_a),
			doti(node_b)
		),
		if(
			lt(
				length(node_a - xy), 
				length(node_b - xy)
			),
			dotj(node_a),
			dotj(node_b)
		)
	)

		
def voronoi(vec2 curtile, vec2 xy) vec2:
	closest(
	closest(
	closest(
	closest(
	closest(
	closest(
	closest( 
	closest( node(curtile), node(curtile + vec2(1.,0.)) , xy )
	,  node(curtile + vec2(1.,1.)), xy )
	,  node(curtile + vec2(0.,1.)), xy )
	,  node(curtile + vec2( -1. ,1.)), xy )
	,  node(curtile + vec2( -1. ,0.)), xy )
	,  node(curtile + vec2( -1., -1.)), xy )
	,  node(curtile + vec2( 0., -1. )), xy )
	,  node(curtile + vec2( 1., -1. )), xy )


def color(vec2 pt) vec3:
	vec3(fract(doti(pt)), fract(dotj(pt)), 1.)

def eval(vec3 pos) vec3 :
	color(voronoi(tile(mypos()), mypos()))]]></shader>
				</shader>
			</albedo>
			<random_triangle_colours>false</random_triangle_colours>
			<layer>0</layer>
		</diffuse>
	</material>

</scenedata>
