View Source
<?xml version="1.0" encoding="utf-8"?>
<scenedata>
<medium>
<name>letchee_medium</name>
<precedence>2</precedence>
<basic>
<ior>1.52</ior>
<cauchy_b_coeff>0.004</cauchy_b_coeff>
<absorption_coefficient_spectrum>
<uniform>
<value>0</value>
</uniform>
</absorption_coefficient_spectrum>
</basic>
</medium>
<material>
<name>letchee</name>
<diffuse>
<albedo>
<shader>
<shader>
<![CDATA[def mypos() vec2:
(getTexCoords(0) +
vec2(
fbm( getTexCoords(0)*14.561984 , 5),
fbm( getTexCoords(0)*26.964191 , 5 )
) * 0.01
)*35.
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 if(bool cond, vec2 rtrue, vec2 rfalse) vec2:
vec2(
if( cond, doti(rtrue), doti(rfalse) ),
if( cond, dotj(rtrue), dotj(rfalse) )
)
def closest(vec2 tile_a, vec2 tile_b, vec2 xy) vec2:
if( lt ( length(node(tile_a) - xy), length(node(tile_b) - xy) ),
tile_a,
tile_b)
def voronoi_(vec2 curtile, vec2 xy) vec2:
closest(
closest(
closest(
closest(
closest(
closest(
closest(
closest( curtile, curtile + vec2(1.,0.) , xy )
, curtile + vec2(1.,1.), xy )
, curtile + vec2(0.,1.), xy )
, curtile + vec2( -1. ,1.), xy )
, curtile + vec2( -1. ,0.), xy )
, curtile + vec2( -1., -1.), xy )
, curtile + vec2( 0., -1. ), xy )
, curtile + vec2( 1., -1. ), xy )
def min3(real a, real b, real c) real:
min(a,min(b,c))
def slope( vec2 bm, vec2 ab ) real:
( dot( bm , ab ) / length( ab ) ) + (0.5 * length(ab))
def crn ( real a, real b ) real :
0.5 * ( a + b - sqrt ( (a - b) * (a - b) + 0.005 ) )
def pyra(vec2 curtile, vec2 xy) real:
crn(
crn(
min(
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( 1. , 0.) ) ),
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( -1. , 0.) ) )
),
min(
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( 0. , 1.) ) ),
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( 0. , -1.) ) )
)
),
crn(
min(
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( -1. , -1. ) ) ),
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( 1. , 1. ) ) )
),
min(
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( -1. , 1. ) ) ),
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( 1. , -1. ) ) )
)
)
)
def shape( real x ) real :
x
def stone() real:
pyra(voronoi_(tile(mypos()), mypos()), mypos())
def eval(vec3 pos) vec3:
lerp(vec3(0.78,0.70,0.25),vec3(0.78,0.26,0.24),stone()*1.5 + 0.1 )]]>
</shader>
</shader>
</albedo>
<bump>
<shader>
<shader>
<![CDATA[def mypos() vec2:
(getTexCoords(0) +
vec2(
noise(getTexCoords(0)*14.561984 ),
noise(getTexCoords(0)*26.964191 )
) * 0.01
)*35.
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 if(bool cond, vec2 rtrue, vec2 rfalse) vec2:
vec2(
if( cond, doti(rtrue), doti(rfalse) ),
if( cond, dotj(rtrue), dotj(rfalse) )
)
def closest(vec2 tile_a, vec2 tile_b, vec2 xy) vec2:
if( lt ( length(node(tile_a) - xy), length(node(tile_b) - xy) ),
tile_a,
tile_b)
def voronoi_(vec2 curtile, vec2 xy) vec2:
closest(
closest(
closest(
closest(
closest(
closest(
closest(
closest( curtile, curtile + vec2(1.,0.) , xy )
, curtile + vec2(1.,1.), xy )
, curtile + vec2(0.,1.), xy )
, curtile + vec2( -1. ,1.), xy )
, curtile + vec2( -1. ,0.), xy )
, curtile + vec2( -1., -1.), xy )
, curtile + vec2( 0., -1. ), xy )
, curtile + vec2( 1., -1. ), xy )
def min3(real a, real b, real c) real:
min(a,min(b,c))
def slope( vec2 bm, vec2 ab ) real:
( dot( bm , ab ) / length( ab ) ) + (0.5 * length(ab))
def crn ( real a, real b ) real :
0.5 * ( a + b - sqrt ( (a - b) * (a - b) + 0.005 ) )
def pyra(vec2 curtile, vec2 xy) real:
crn(
crn(
min(
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( 1. , 0.) ) ),
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( -1. , 0.) ) )
),
min(
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( 0. , 1.) ) ),
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( 0. , -1.) ) )
)
),
crn(
min(
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( -1. , -1. ) ) ),
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( 1. , 1. ) ) )
),
min(
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( -1. , 1. ) ) ),
slope( xy - node( curtile ) , node ( curtile ) - node ( curtile + vec2( 1. , -1. ) ) )
)
)
)
def shape( real x ) real :
x
def stone() real:
pyra(voronoi_(tile(mypos()), mypos()), mypos())
def eval() real:
stone()* 0.003]]></shader>
</shader>
</bump>
<random_triangle_colours>false</random_triangle_colours>
<layer>0</layer>
</diffuse>
</material>
</scenedata>