diff --git a/src/game/Level.cpp b/src/game/Level.cpp index 4acc0a2..56f1c4f 100644 --- a/src/game/Level.cpp +++ b/src/game/Level.cpp @@ -44,7 +44,7 @@ namespace Game double time = TestY <= 5 ? globalTime * 0.1f : 0.0f; 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 { diff --git a/src/game/compiled-shaders/dx11/frag.bin b/src/game/compiled-shaders/dx11/frag.bin index 940235e..5b62834 100644 Binary files a/src/game/compiled-shaders/dx11/frag.bin and b/src/game/compiled-shaders/dx11/frag.bin differ diff --git a/src/game/compiled-shaders/glsl/frag.bin b/src/game/compiled-shaders/glsl/frag.bin index 4aef9d4..bec58c9 100644 Binary files a/src/game/compiled-shaders/glsl/frag.bin and b/src/game/compiled-shaders/glsl/frag.bin differ diff --git a/src/game/compiled-shaders/spirv/frag.bin b/src/game/compiled-shaders/spirv/frag.bin index 8246dee..41ad20b 100644 Binary files a/src/game/compiled-shaders/spirv/frag.bin and b/src/game/compiled-shaders/spirv/frag.bin differ diff --git a/src/game/shaders/frag.sc b/src/game/shaders/frag.sc index 2b3dfe3..e6b6b39 100644 --- a/src/game/shaders/frag.sc +++ b/src/game/shaders/frag.sc @@ -5,35 +5,32 @@ $input v_uv0 float circle(vec2 uv, float radius) { - radius *= 0.8; float distSq = uv.x * uv.x + uv.y * uv.y; - float result = distSq > radius * radius; - return 1.0 - result; + float result = distSq / (radius * radius); + return result < 1.0; + // return clamp(1.0 - result, 0.0, 1.0); } float circles(vec2 uv, float level, float subLevel) { - vec2 offsetUv = uv + (0.5 + level * 0.5); - vec2 bigUv = (offsetUv % 1.0) - 0.5; - float base = 0.0; - if (subLevel > 0.25) - { - 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)); + vec2 offsetUv = uv + 0.5; + vec2 baseUv = (offsetUv % 1.0) - 0.5; + vec2 step1Uv = ((offsetUv + vec2(0.5, 0.5)) % 1.0) - 0.5; + vec2 step2Uv = ((offsetUv + vec2(0.5, 0.0)) % 1.0) - 0.5; + vec2 step3Uv = ((offsetUv + vec2(0.0, 0.5)) % 1.0) - 0.5; - 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()