if (vertexprimindex(0, @vtxnum) == primvertexcount(0, @primnum) - 1) i@group_root = 1;
if (vertexprimindex(0, @vtxnum) < 1) i@group_root = 1;
// Get mirrored value from @curveu
float u = (abs(@curveu * - 2 + 1) * -1 + 1) / 2;
// Feed that value in a ramp that defines half of the resulting curve
f@pscale = chramp("point_scale", u);
float percentage = chf('percentage');
if(rand(@ptnum, 1) % 100 < percentage) removepoint(0, @ptnum);
float scale = chf('scale');
matrix3 trn = primintrinsic(0, "transform", @primnum);
matrix scalem = maketransform(0, 0, {0,0,0}, {0,0,0}, scale, @P);
trn *= matrix3(scalem);
setprimintrinsic(0, "transform", @primnum, trn);
float val = f@surface;
int pt = addpoint(0, @P);
vector dir = chv('dir');
float angle = dot(@N, dir);
float fitangle = fit(angle, -1, 1, 0, 1);
float blend = chramp('blend', fitangle);
@Cd = blend;
vector tmp = cross(@N, dir);
vector cross = cross(@N, tmp);
v@N = lerp(@N, cross, blend);
@rest = v@P;
int vtx = pointvertex(0, @ptnum);
vector uv = vertex(0, 'uv', vtx);
v@P = lerp(@P, uv, chf('blend'));
float val = f@surface;
int pt = addpoint(0, @P);
setpointattrib(0, 'val', pt, val);
float sdf = volumesample(1, 0, v@P);
vector grad = normalize(volumesamplev(2,0, v@P));
vector cd = point(1, 'Cd', @ptnum);
v@P += normalize(v@N) * fit01(cd.r, -0.5, 0.5) * chf('scale');
float sdf_amp = volumesample(1,'surface',@P);
vector sdf_dir = volumegradient(1, 'surface', v@P);
sdf_dir = normalize(sdf_dir);
vector pos = point(2, 'P', 0);
@density = dot(sdf_dir, pos);
float sdf = volumesample(1,0,@P);
if (sdf>0)
{
@density *= fit01(chramp('density', sdf),0,1);
}
float amp = chf("amp");
int matchpt = @ptnum;
string attr = chs("falloff_attr");
float falloff = point(1, attr, @ptnum);
float b = falloff;
float a = point(0, attr, @ptnum);
float out = 0.0;
if(a < .5)
out = 2.0 * a * b;
else
out = 1.0 - 2.0 * (1.0 - a) * (1.0 - b);
f@attr = lerp(f@attr, out, amp);
detail(0,"rotx",1)
vector a = @P;
vector b = point(1,'P',0);
@N = b-a;
int pt = nearpoint(1,@P);
v@vel = point(1,'v',pt);