slightly better dots

This commit is contained in:
Asuro
2025-02-10 22:57:07 +01:00
parent cbe21bfd78
commit cace7b0ec0
5 changed files with 21 additions and 24 deletions

View File

@@ -44,7 +44,7 @@ namespace Game
double time = TestY <= 5 ? globalTime * 0.1f : 0.0f; double time = TestY <= 5 ? globalTime * 0.1f : 0.0f;
if (TestX == 4 && TestY == 4) if (TestX == 4 && TestY == 4)
{ {
bx::mtxTranslate(Transform.M, 0, 0, bx::lerp(2.0f, -30.0f, bx::sin(globalTime* 0.5f) * 0.5 + 0.5)); bx::mtxTranslate(Transform.M, 0, 0, bx::lerp(-20.0f, -32.0f, bx::sin(globalTime* 0.5f) * 0.5 + 0.5));
} }
else else
{ {

View File

@@ -5,35 +5,32 @@ $input v_uv0
float circle(vec2 uv, float radius) float circle(vec2 uv, float radius)
{ {
radius *= 0.8;
float distSq = uv.x * uv.x + uv.y * uv.y; float distSq = uv.x * uv.x + uv.y * uv.y;
float result = distSq > radius * radius; float result = distSq / (radius * radius);
return 1.0 - result; return result < 1.0;
// return clamp(1.0 - result, 0.0, 1.0);
} }
float circles(vec2 uv, float level, float subLevel) float circles(vec2 uv, float level, float subLevel)
{ {
vec2 offsetUv = uv + (0.5 + level * 0.5); vec2 offsetUv = uv + 0.5;
vec2 bigUv = (offsetUv % 1.0) - 0.5; vec2 baseUv = (offsetUv % 1.0) - 0.5;
float base = 0.0; vec2 step1Uv = ((offsetUv + vec2(0.5, 0.5)) % 1.0) - 0.5;
if (subLevel > 0.25) vec2 step2Uv = ((offsetUv + vec2(0.5, 0.0)) % 1.0) - 0.5;
{ vec2 step3Uv = ((offsetUv + vec2(0.0, 0.5)) % 1.0) - 0.5;
vec2 smallUv = (((offsetUv + 0.25) % 2.0) * 2.0) - 0.5;
base += circle(smallUv, 0.5);
}
if (subLevel > 0.5)
{
vec2 smallUv = (((offsetUv - 0.75) % 2.0) * 2.0) - 0.5;
base += circle(smallUv, 0.5);
}
if (subLevel > 0.75)
{
vec2 smallUv = (((offsetUv + 1.25) % 2.0) * 2.0) - 0.5;
base += circle(smallUv, 0.5);
}
base += circle(bigUv, lerp(0.25, 0.5, 1.0 - subLevel));
return base; float step = subLevel * 3.0;
float step1 = clamp(step, 0.0, 1.0);
float step2 = clamp(step - 1, 0.0, 1.0);
float step3 = clamp(step - 2, 0.0, 1.0);
float sum = 0.0;
sum += circle(baseUv, lerp(0.5, 0.25, subLevel));
sum += circle(step1Uv, 0.25 * step1);
sum += circle(step2Uv, 0.25 * step2);
sum += circle(step3Uv, 0.25 * step3);
return min(sum, 1.0);
} }
void main() void main()