From c26fd93087fac8ba163eb5901b92d15cb7cd012c Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Thu, 1 Jun 2023 08:21:39 +0100 Subject: [PATCH] Minor fixes --- src/game-loop/game-rules.ts | 6 ++++-- src/page/set-up-settings-page.ts | 5 +++++ src/pipelines/agents/agent.wgsl | 4 ++-- src/pipelines/diffusion/diffuse.wgsl | 2 +- src/pipelines/render/render.wgsl | 5 +++-- src/settings.ts | 22 +++++++++++----------- 6 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/game-loop/game-rules.ts b/src/game-loop/game-rules.ts index 6097c32..5d922ee 100644 --- a/src/game-loop/game-rules.ts +++ b/src/game-loop/game-rules.ts @@ -28,7 +28,7 @@ export class GameRules { nextGenerationCount: number; } = { currentGenerationCount: 0, - nextGenerationCount: 0, + nextGenerationCount: 1, }; public constructor(startingTimeInSeconds: number) { @@ -94,7 +94,9 @@ export class GameRules { const currentGenerationCount = this.nextGenerationId % 2 === 1 ? evenGenerationCount : oddGenerationCount; - if (currentGenerationCount <= 100) { + const q = currentGenerationCount / settings.agentCount; + + if (currentGenerationCount <= 100 && q < 0.05) { this.nextGenerationId++; this.lastGenerationChangeTimeInSeconds = performance.now() / 1000; } diff --git a/src/page/set-up-settings-page.ts b/src/page/set-up-settings-page.ts index b15898f..71680f2 100644 --- a/src/page/set-up-settings-page.ts +++ b/src/page/set-up-settings-page.ts @@ -93,6 +93,11 @@ export const setUpSettingsPage = ( min: 1, max: 30, }), + + new SettingsSlider(settings, 'clarity', { + min: 0.00001, + max: 1, + }), ]; const sliderContainerElement = document.createElement('div'); diff --git a/src/pipelines/agents/agent.wgsl b/src/pipelines/agents/agent.wgsl index 586cc02..576b3cc 100644 --- a/src/pipelines/agents/agent.wgsl +++ b/src/pipelines/agents/agent.wgsl @@ -112,10 +112,10 @@ fn main( // trailBelow.g = settings.isNextGenerationOdd * (trailBelow.r + trailBelow.g); } else { let relativeWeight = mix(trailBelow.g - trailBelow.r, trailBelow.r - trailBelow.g, isFromOddGeneration); - if relativeWeight > 0 && ( + if (relativeWeight > 0 && ( (isFromCurrentGeneration == 1.0 && trailBelow.a == 0 && random.b < settings.infectionProbability) || (isFromCurrentGeneration == 0.0 && trailBelow.a > 0) - ) { + )) || (trailBelow.a > 0 && isFromCurrentGeneration == 0.0){ // trailBelow.r = isFromOddGeneration * (trailBelow.r + trailBelow.g); // trailBelow.g = (1 - isFromOddGeneration) * (trailBelow.r + trailBelow.g); agent.generation = (agent.generation + 1) % 2; diff --git a/src/pipelines/diffusion/diffuse.wgsl b/src/pipelines/diffusion/diffuse.wgsl index 83eb43b..8ae9dee 100644 --- a/src/pipelines/diffusion/diffuse.wgsl +++ b/src/pipelines/diffusion/diffuse.wgsl @@ -28,7 +28,7 @@ fn fragment(@location(0) uv: vec2) -> @location(0) vec4 { ) / 8; let decayed = clamp(vec4( - clamp(current.rgb + (current.rgb - 1.001) * settings.decayRateTrails, vec3(0), vec3(1)), + current.rgb * settings.decayRateTrails, max(0, current.a + (current.a - 1.001) * settings.decayRateBrush) ), vec4(0), vec4(1)); diff --git a/src/pipelines/render/render.wgsl b/src/pipelines/render/render.wgsl index 1fed28c..8607d7c 100644 --- a/src/pipelines/render/render.wgsl +++ b/src/pipelines/render/render.wgsl @@ -26,7 +26,8 @@ fn fragment(@location(0) uv: vec2) -> @location(0) vec4 { oddGenerationStrength * settings.oddGenerationColor, oddGenerationStrength / (evenGenerationStrength + oddGenerationStrength + 0.000001) ), - brushStrength * settings.brushColor); + brushStrength * settings.brushColor + ); let strength = max(evenGenerationStrength, max(oddGenerationStrength, brushStrength)); @@ -34,5 +35,5 @@ fn fragment(@location(0) uv: vec2) -> @location(0) vec4 { } fn clarity(strength: f32) -> f32 { - return sign(strength); + return pow(strength, settings.clarity); } diff --git a/src/settings.ts b/src/settings.ts index 42347d1..4715928 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -15,22 +15,22 @@ const initialValues: GameLoopSettings & currentGenerationAggression: -5, nextGenerationAggression: 0.2, - moveSpeed: 90, - turnSpeed: 53, - sensorOffsetAngle: 40, + moveSpeed: 74, + turnSpeed: 45, + sensorOffsetAngle: 31, sensorOffsetDistance: 43, - turnWhenLost: 0.08, + turnWhenLost: 0.01, brushTrailWeight: 500, - individualTrailWeight: 0.78, + individualTrailWeight: 0.05, - diffusionRateTrails: 1.11, - decayRateTrails: 718, - diffusionRateBrush: 0.25, - decayRateBrush: 15, + diffusionRateTrails: 0, + decayRateTrails: 944, + diffusionRateBrush: 0.35, + decayRateBrush: 18, - clarity: 0, - brushSize: 16, + clarity: 0.7, + brushSize: 12, brushSizeVariation: 0.5, // hidden on the UI