Sort决定方向:

UV:


vector rel = relbbox(0,@P);
float x = rel.x;
float z = rel.z;
int invertu = chi("invertu");
int invertv = chi("invertv");
float scaleu = chf("scaleu");
float scalev = chf("scalev");
float scale = chf("scale");
if(invertu==1) x=1-x;
if(invertv==1) z=1-z;
x *= scaleu * scale;
z *= scalev * scale;
@Cd = texture(chs("tex"),x,z);
拉伸:
1.

int length = chi("length");
float threshold = chf("threshold");
float brightness = 0.299 * @Cd.r + 0.587 * @Cd.g + 0.114 * @Cd.b;
int idx = @primnum;
int seed = chi("seed");
vector mixcolor = prim(0,"Cd",idx+seed);
if(brightness>=threshold)
{
for(int i=0;i<length;++i)
{
if(inprimgroup(0,"border",idx+i)==1) break;
vector color = prim(0,"Cd",idx+i);
float ratio = i*1.0/length;
color = lerp(@Cd,mixcolor,1-ratio);
setprimattrib(0,"Cd",idx+i,color);
}
}
2.
1-ratio会让偏移的最后一个颜色等于拉伸的颜色;替换成ratio则会使偏移的第一个颜色等于拉伸的颜色。

int length = chi("length");
float threshold = chf("threshold");
float brightness = 0.299 * @Cd.r + 0.587 * @Cd.g + 0.114 * @Cd.b;
int idx = @primnum;
int seed = chi("seed");
vector mixcolor = prim(0,"Cd",idx+seed);
if(brightness>=threshold)
{
for(int i=0;i<length;++i)
{
if(inprimgroup(0,"border",idx+i)==1) break;
float ratio = i*1.0/length;
vector color = lerp(@Cd,mixcolor,ratio);
setprimattrib(0,"Cd",idx+i,color);
}
}
3.
不使用mixcolor混合,而使用自己原本的颜色混合,可以使尾部变柔和。

int length = chi("length");
float threshold = chf("threshold");
float brightness = 0.299 * @Cd.r + 0.587 * @Cd.g + 0.114 * @Cd.b;
int idx = @primnum;
int seed = chi("seed");
vector mixcolor = prim(0,"Cd",idx+seed);
if(brightness>=threshold)
{
for(int i=0;i<length;++i)
{
if(inprimgroup(0,"border",idx+i)==1) break;
vector col = prim(0,"Cd",idx+i);
float ratio = i*1.0/length;
vector color = lerp(@Cd,col,ratio);
setprimattrib(0,"Cd",idx+i,color);
}
}
4.
对ratio进行映射。

int length = chi("length");
float threshold = chf("threshold");
float brightness = 0.299 * @Cd.r + 0.587 * @Cd.g + 0.114 * @Cd.b;
int idx = @primnum;
int seed = chi("seed");
vector mixcolor = prim(0,"Cd",idx+seed);
if(brightness>=threshold)
{
for(int i=0;i<length;++i)
{
if(inprimgroup(0,"border",idx+i)==1) break;
vector col = prim(0,"Cd",idx+i);
float ratio = i*1.0/length;
ratio = chramp("ratio",ratio);
vector color = lerp(@Cd,col,ratio);
setprimattrib(0,"Cd",idx+i,color);
}
}
网硕互联帮助中心
![[BJDCTF2020]Cookie is so stable-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2025/08/20250816132954-68a087d283624-220x150.png)



评论前必须登录!
注册