Animated Movement Color
这节课主要的目的是额外输出的掌握
本课首先延续上节课制作了一个旋转展开,旋转关闭的圆,并且变动了颜色
首先定义了已遮罩模式,不为1的地方也就是黑色区域会透明掉。并且设定了额外输出
float result = 0.0f;
for (int i = 0; i < nSides; i++)
{
for(int j = 0; j < nCopies; j++)
{
float angle = (i * 1.0f / nSides) * 2.0f * sin(time * 2.0f) * (3.14f);
float2 pos = center + (j * 1.0f / nCopies) * radius * float2(sin(1 - angle), cos(1 - angle));
result += length(pos - uv) < size;
}
}
outEmissive = result / float3(sin(time), 0, 0.1);
return float3(result, result, result);
注意到此时中间往外会越来越暗,这是因为中间的采样点离每个pos都很近,就叠加了亮度
继续变化公式
让二维的图像更加3d,修改pos的生成公式
float result = 0.0f;
for (int i = 0; i < nSides; i++)
{
for(int j = 0; j < nCopies; j++)
{
float angle = (i / nSides) * 2.0f * sin(time * 2.0f) * (3.14f);
float2 pos = center + (j / nCopies) * radius * float2(sin(1 - angle) - sin(time), cos(1 - angle) - sin(time));
result += length(pos - uv) < size;
}
}
outEmissive = result / float3(sin(time), 0, 0.1);
return float3(result, result, result);
可以运用在plane上