displacement windows
param	float	Ka		1
param	float	Kd		0.5
param	float	Ks		0.5
param	float	roughness		0.1
param	color	specularcolor		1 1 1
param	float	freq		4
param	float	Km		0.005
param	color	window_color		0 0 0
param	float	w_base		0.2
param	float	w_height		0.2
param	float	w_width		0.8
param	float	gap		0.025
param	float	maxT		0.8
param	float	minT		0.2
local	color	surface_color	0 0 0
local	color	surface_opac	0 0 0
local	color	window_opac	0 0 0
local	float	fuzz	0
local	float	base_surface	0
local	float	windows_surface	0
local	float	numOfWindowsPerSquare	0
local	float	ss	0
local	float	tt	0
local	float	col	0
local	color	_2$groove_color	0 0 0
local	normal	Nf	0 0 0
initcode 7
	pushiv	1 1 1 
	popc	window_color 
initcode 13
	return
code
	pushc	Cs 
	popc	surface_color 
	pushc	Os 
	popc	surface_opac 
	pushif	0.0025 
	popf	fuzz 
	pushif	0 
	popf	base_surface 
	pushif	2 
	popf	numOfWindowsPerSquare 
	pushif	1 
	pushf	freq 
	mulF	numOfWindowsPerSquare 
	mulF	s 
	mod
	popf	ss 
	pushif	1 
	pushf	freq 
	mulF	t 
	mod
	popf	tt 
	pushf	freq 
	mulF	numOfWindowsPerSquare 
	mulF	s 
	floor
	popf	col 
	pushif	0 
	pushif	2 
	pushf	col 
	mod
	feqf
	ifz	0
	pushf	ss 
	pushf	gap 
	pushif	2 
	mulff
	pushf	fuzz 
	pushf	gap 
	pushif	2 
	mulff
	subff
	smoothstep
	pushf	ss 
	pushif	0 
	pushf	fuzz 
	pushif	0 
	subff
	smoothstep
	subff
	pushif	1 
	subff
	popf	windows_surface 
	pushf	base_surface 
	pushf	windows_surface 
	fmax
	popf	base_surface 
	pushiv	0 0 0 
	popc	_2$groove_color 
	pushf	ss 
	pushf	gap 
	pushif	2 
	mulff
	pushf	fuzz 
	pushf	gap 
	pushif	2 
	mulff
	subff
	smoothstep
	pushf	ss 
	pushif	0 
	pushf	fuzz 
	pushif	0 
	subff
	smoothstep
	subff
	cset	window_opac 
	pushc	window_opac 
	mulC	_2$groove_color 
	pushc	window_opac 
	pushif	1 
	ftoc
	subcc
	mulC	surface_color 
	addcc
	popc	surface_color 
label 0
label 1
	pushf	minT 
	pushf	t 
	gt
	pushf	maxT 
	pushf	t 
	lt
	and
	ifz	2
	pushf	tt 
	pushf	w_height 
	addF	w_base 
	pushf	fuzz 
	pushf	w_height 
	addF	w_base 
	subff
	smoothstep
	pushf	tt 
	pushf	w_base 
	pushf	fuzz 
	subF	w_base 
	smoothstep
	subff
	popf	windows_surface 
	pushf	base_surface 
	pushf	windows_surface 
	fmax
	popf	base_surface 
	pushf	gap 
	pushf	w_height 
	addF	w_base 
	subff
	pushf	tt 
	lt
	pushf	gap 
	addF	w_base 
	pushf	tt 
	gt
	and
	ifz	4
	pushf	ss 
	pushif	2 
	divF	w_width 
	pushif	0.5 
	addff
	pushf	fuzz 
	pushif	2 
	divF	w_width 
	pushif	0.5 
	addff
	subff
	smoothstep
	pushf	ss 
	pushif	2 
	divF	w_width 
	pushif	0.5 
	subff
	pushf	fuzz 
	pushif	2 
	divF	w_width 
	pushif	0.5 
	subff
	subff
	smoothstep
	subff
	pushif	1 
	subff
	popf	windows_surface 
	pushf	base_surface 
	pushf	windows_surface 
	fmin
	popf	base_surface 
	pushf	ss 
	pushif	2 
	divF	w_width 
	pushif	0.5 
	addff
	pushf	fuzz 
	pushif	2 
	divF	w_width 
	pushif	0.5 
	addff
	subff
	smoothstep
	pushf	ss 
	pushif	2 
	divF	w_width 
	pushif	0.5 
	subff
	pushf	fuzz 
	pushif	2 
	divF	w_width 
	pushif	0.5 
	subff
	subff
	smoothstep
	subff
	cset	window_opac 
	pushc	window_opac 
	mulC	window_color 
	pushc	window_opac 
	pushif	1 
	ftoc
	subcc
	mulC	surface_color 
	addcc
	popc	surface_color 
label 4
label 5
label 2
label 3
	pushv	N 
	normalize
	pushf	base_surface 
	mulF	Km 
	mulfv
	addV	P 
	popv	P 
	pushv	P 
	calculatenormal
	popv	N 
	return_area
	pushv	I 
	pushv	N 
	normalize
	faceforward
	popv	Nf 
	cpCC	surface_opac Oi 
	pushc	window_color 
	pushc	surface_color 
	cnec
	ifz	6
	pushf	roughness 
	pushv	I 
	normalize
	negv
	pushv	Nf 
	specular
	pushf	Ks 
	pushc	specularcolor 
	mulcf
	mulcc
	pushv	Nf 
	diffuse
	mulFv	Kd 
	ambient
	mulFv	Ka 
	addcc
	mulC	surface_color 
	addcc
	mulC	surface_opac 
	popc	Ci 
	jump	7
label 6
	cpCC	window_color Ci 
label 7
	return