/* Shader description goes here */
#include "lcl_funlib.h"
surface
pandafloor (float verticleFlip = 1, /* [0 or 1] */
horizontalFlip = 1, /* [0 or 1] */
Ka =0.8 ,
Kd =0.8 ,
Ks =0.5,
srepeat= 1,
trepeat= 1,
roughness =0.1,
s_center = 0.5,
t_center = 0.5,
rad = 0.4,
blur = 1;
color edgecolor = color (0.8,1.0,0.8),
edgecolor2 = color (0.8,0.6,1.0),
incolor = color ( 1.0,0.8,0.8),
outcolor = color (0.8,1.0,0.8),
hilitecolor = 1 )
{
color surfcolor = color (0.8,1.0,0.8) ;
color planecolor = isInCircle( s_center, t_center, rad, blur, incolor, outcolor);
normal n = normalize (N);
vector i = normalize (I);
float tt = 1-t;
if (verticleFlip == 0)
tt=t;
float ss = 1-s;
if (horizontalFlip == 0)
ss = s;
ss=mod(s*srepeat,1);
tt=mod(t*trepeat,1);
/* pattern1*/
float midcircle;
midcircle = (pow ( ss - 0.5, 2) + pow ( tt - 0.5 , 2));
if (midcircle <= 0.5 )
surfcolor = planecolor;
float edgeC1;
edgeC1 = (pow ( ss - 0.05, 2) + pow ( tt - 0.05 , 2));
float edgeC2;
edgeC2 = (pow ( ss - 0.05, 2) + pow ( tt - 0.05 , 2));
if (edgeC1 <= 0.05)
surfcolor = edgecolor;
else if (edgeC1 <= 0.08)
surfcolor = edgecolor2;
/*------------------------------------------------------------*/
float edge2C1;
edge2C1 = (pow ( ss - 0.95, 2) + pow ( tt - 0.05 , 2));
float edge2C2;
edge2C2 = (pow ( ss - 0.95, 2) + pow ( tt - 0.05 , 2));
if (edge2C1 <= 0.05)
surfcolor = edgecolor;
else if (edge2C1 <= 0.08)
surfcolor = edgecolor2;
/*------------------------------------------------------------*/
float edge3C1;
edge3C1 = (pow ( ss - 0.95, 2) + pow ( tt - 0.95 , 2));
float edge3C2;
edge3C2 = (pow ( ss - 0.95, 2) + pow ( tt - 0.95 , 2));
if (edge3C1 <= 0.05)
surfcolor = edgecolor;
else if (edge3C1 <= 0.08)
surfcolor = edgecolor2;
/*------------------------------------------------------------*/
float edge4C1;
edge4C1 = (pow ( ss - 0.05, 2) + pow ( tt - 0.95 , 2));
float edge4C2;
edge4C2 = (pow ( ss - 0.05, 2) + pow ( tt - 0.95 , 2));
if (edge4C1 <= 0.05)
surfcolor = edgecolor;
else if (edge4C1 <= 0.08)
surfcolor = edgecolor2;
/*------------------------------------------------------------*/
color ambientColor = ambient() * Ka;
color diffuseColor = diffuse(n) * Kd;
color specColor = specular (n, -i, roughness) * hilitecolor * Ks;
/* STEP 1 - set the apparent surface opacity */
Oi = Os;
/* STEP 2 - calculate the apparent surface color */
Ci = Oi * Cs * surfcolor * (ambientColor + diffuseColor + specColor);
}