- Edited
This is just some miscellaneous shader tricks I found.
First, if you need a circle without adding extra mesh detail, you can do that in a shader:
ALPHA = 1.0-distance(UV,vec2(0.5));
ALPHA_SCISSOR = 0.5;
or if you need alpha:
ALPHA = step(distance(UV,vec2(0.5)),0.5);
This is just a simple quad, but appears to be a circle. Plus, unlike a texture, it has endless detail. The circle is calculated per screen pixel.
If you've ever used a noise texture as a normal map, you might notice some artifacts:
You can smooth out the noise by using textureLod() instead of texture():
NORMALMAP = textureLod(noiseNormal,UV,lod).xyz;
The larger lod is, the smoother(and blurrier) the noise will look.
Masks are great for some things. If you need some noise without edges, you can multiply the circle mask by noise.
float mask = 1.0-distance(UV,vec2(0.5));
float noise = textureLod(noise1,UV,noiseLod).r;
ALPHA = mask*noise;
That could be useful for water/spray particles.
And using a more complicated mask with scrolling noise, you can get some nice fire:
(The fire doesn't look very good in the GIF, though)