<?xml version="1.0" encoding="utf-8"?>
<scenedata>
	<material>
		<name>wood_2d_02_rc6</name>
		<phong>
		<shared_shader_info>
				<param>
					<real>
						<name>Scale</name>
						<description>Global scale. Set this first for your scene.</description>
						<min>-0</min>
						<max>32</max>
						<value>12</value>
					</real>
				</param>
				<param>
					<real>
						<name>noiseScale</name>
						<description>Secondary perturbation&apos;s scale.</description>
						<min>-0</min>
						<max>1000</max>
						<value>32</value>
					</real>
				</param>
				<param>
					<real>
						<name>noiseAmount</name>
						<description>Amount of secondary perturbation. Zero = noise off.</description>
						<min>-0</min>
						<max>1</max>
						<value>0.1</value>
					</real>
				</param>
				<param>
					<real>
						<name>Ratio</name>
						<description>Length ratio. Set to its reciprocal for a vertical essence (1.0 / value).</description>
						<min>-0</min>
						<max>24</max>
						<value>5</value>
					</real>
				</param>
				<param>
					<real>
						<name>Iterations1</name>
						<description>Number of veins (age).</description>
						<min>-0</min>
						<max>24</max>
						<value>3</value>
					</real>
				</param>
				<param>
					<real>
						<name>Iterations2</name>
						<description>Number of sub-veins (veins per veins).</description>
						<min>-0</min>
						<max>24</max>
						<value>6</value>
					</real>
				</param>
				<param>
					<real>
						<name>Tension</name>
						<description>Distribution of veins. 0.0 -&gt; none (defeats shader). Neutral: 1.0.</description>
						<min>0.005</min>
						<max>6</max>
						<value>0.9</value>
					</real>
				</param>
				<param>
					<int>
						<name>complexity</name>
						<description>Level of intrication of the features.</description>
						<min>1</min>
						<max>12</max>
						<value>8</value>
					</int>
				</param>
				<shader><![CDATA[

def noiseAmount() real :
	paramnoiseAmount()
/	paramScale()

def noiseScale() real :
	paramnoiseScale()
*	paramScale()

def fracNoise(real ratio) real :
	fbm(
		texi() * noiseScale() / ratio,
		texj() * noiseScale(),
		0.0,
		paramcomplexity()
	)

def fracNoise2(real ratio) real :
	pow(
		0.5 + fbm(
			(texi() * paramScale()) / ratio,
			texj() * paramScale(),
			fracNoise(ratio) * noiseAmount(),
			paramcomplexity()
		) / 2.0,
		paramTension()
	) * 2.0 - 1.0

def essence(real iterations, real ratio) real :
	fract(fracNoise2(ratio) * iterations)

def toEval() real:
	(
		(	essence(	paramIterations1(),						paramRatio()	)
		+	essence(	paramIterations1() * paramIterations2(),	paramRatio()	)
		)
										#	+ fracNoise(8.0) * noiseAmount()
										#	+	1.0
	)

				]]></shader>
		</shared_shader_info>
			<diffuse_albedo>
				<shader>
						<param>
							<colour3>
								<name>Col1</name>
								<description></description>
								<value>0.26735806465148926 0.1939721703529358 0.1275297850370407</value>
							</colour3>
						</param>
						<param>
							<colour3>
								<name>Col2</name>
								<description></description>
								<value>0.3537409007549286 0.288815975189209 0.2271365225315094</value>
							</colour3>
						</param>
						<param>
							<int>
								<name>swap</name>
								<description>Color swap.</description>
								<min>0</min>
								<max>1</max>
								<value>0</value>
							</int>
						</param>
						<shader><![CDATA[

def eval(vec3 pos) vec3 :
	lerp(
		paramCol1(),
		paramCol2(),
		toEval() / 2.0
	)
	


]]></shader>
				</shader>
			</diffuse_albedo>
			<exponent>
				<shader>
						<param>
							<real>
								<name>Min</name>
								<description></description>
								<min>-0</min>
								<max>6</max>
								<value>12</value>
							</real>
						</param>
						<param>
							<real>
								<name>Max</name>
								<description></description>
								<min>-0</min>
								<max>1200</max>
								<value>650</value>
							</real>
						</param>
						<shader><![CDATA[

def eval(vec3 pos) real :
	(-toEval() + 2.0) / 2.0 * (paramMax() - paramMin())
+	paramMin()

						]]></shader>
				</shader>
			</exponent>
			<bump>
				<shader>
						<param>
							<real>
								<name>BumpRoughness</name>
								<description>Wood finish/wear. 0.0: no bump (perfect finish). Switch bump mapping off then. 1.0: no finish (rough surface)</description>
								<min>-0</min>
								<max>1</max>
								<value>0.8</value>
							</real>
						</param>
						<param>
							<real>
								<name>Bump</name>
								<description># centimeters. Yes sir, it&apos;s bump value. # again switch bump off if zero.</description>
								<min>-0</min>
								<max>1</max>
								<value>0.01</value>
							</real>
						</param>
						<shader><![CDATA[

# NOTE:
# if either BumpRoughness or Bump is equal to zero
# the material's bump evaluation should be switched off
# for performance concerns

def eval() real :		smootherstep(0.0, paramBumpRoughness() * 2.0, toEval())
	#clamp(	toEval() - 1.0
	#,
	#		- paramBumpRoughness(),
	#		paramBumpRoughness()
	#)
*	paramBump()
# to 1 cm
/	100.
]]></shader>
				</shader>
			</bump>
			<fresnel_scale>
					<constant>1</constant>
			</fresnel_scale>
			<layer>0</layer>
			<ior>1.333999991</ior>
			<nk_data></nk_data>
		</phong>
	</material>
</scenedata>
