displacement crater
param	float	Ka		1
param	float	Kd		0.5
param	float	roughness		0.1
param	float	Km		10
param	float	maxoctaves		6
param	float	power		3
param	float	frequency		1
local	string	$_str_0 	"shader"
local	float	size	0
local	float	magnitude	0
local	float	i	0
local	point	PP	0 0 0
local	normal	Nf	0 0 0
initcode 6
	return
code
	pushif	0 
	popf	magnitude 
	pushv	P 
	pushs	$_str_0 
	transforms
	popv	PP 
	cpFF	frequency size 
	pushif	0 
	popf	i 
label 0
	pushf	maxoctaves 
	pushf	i 
	lt
	ifz	2
	pushf	size 
	pushf	size 
	pushv	PP 
	mulvf
	noisev
	pushif	0.5 
	subff
	abs
	divff
	addF	magnitude 
	popf	magnitude 
	pushif	2 
	mulF	size 
	popf	size 
label 1
	pushif	1 
	addF	i 
	popf	i 
	jump	0
label 2
	pushv	N 
	normalize
	pushf	power 
	pushf	magnitude 
	pow
	mulF	Km 
	mulfv
	subV	P 
	popv	P 
	pushv	P 
	calculatenormal
	popv	N 
	return_area
	pushv	I 
	pushv	N 
	normalize
	faceforward
	popv	Nf 
	cpCC	Os Oi 
	pushv	Nf 
	diffuse
	mulFv	Kd 
	ambient
	mulFv	Ka 
	addcc
	mulC	Cs 
	mulC	Os 
	popc	Ci 
	return