diff --git a/Assets/Scripts/Slime/Simulation.cs b/Assets/Scripts/Slime/Simulation.cs index 354f9ad..bf8e774 100644 --- a/Assets/Scripts/Slime/Simulation.cs +++ b/Assets/Scripts/Slime/Simulation.cs @@ -139,6 +139,8 @@ void RunSimulation() // Assign textures compute.SetTexture(updateKernel, "TrailMap", trailMap); + compute.SetTexture(updateKernel, "DiffusedTrailMap", diffusedTrailMap); + compute.SetTexture(diffuseMapKernel, "TrailMap", trailMap); compute.SetTexture(diffuseMapKernel, "DiffusedTrailMap", diffusedTrailMap); diff --git a/Assets/Scripts/Slime/SlimeSim.compute b/Assets/Scripts/Slime/SlimeSim.compute index 180e40a..4c7043c 100644 --- a/Assets/Scripts/Slime/SlimeSim.compute +++ b/Assets/Scripts/Slime/SlimeSim.compute @@ -23,6 +23,7 @@ RWStructuredBuffer agents; uint numAgents; RWTexture2D TrailMap; +RWTexture2D DiffusedTrailMap; int width; int height; @@ -65,7 +66,7 @@ float sense(Agent agent, SpeciesSettings settings, float sensorAngleOffset) { for (int offsetY = -settings.sensorSize; offsetY <= settings.sensorSize; offsetY ++) { int sampleX = min(width - 1, max(0, sensorCentreX + offsetX)); int sampleY = min(height - 1, max(0, sensorCentreY + offsetY)); - sum += dot(senseWeight, TrailMap[int2(sampleX,sampleY)]); + sum += dot(senseWeight, DiffusedTrailMap[int2(sampleX,sampleY)]); } } @@ -128,7 +129,7 @@ void Update (uint3 id : SV_DispatchThreadID) agents[id.x].angle = randomAngle; } else { - float4 oldTrail = TrailMap[int2(newPos)]; + float4 oldTrail = DiffusedTrailMap[int2(newPos)]; TrailMap[int2(newPos)] = min(1, oldTrail + agent.speciesMask * trailWeight * deltaTime); } @@ -139,7 +140,6 @@ void Update (uint3 id : SV_DispatchThreadID) float decayRate; float diffuseRate; -RWTexture2D DiffusedTrailMap; [numthreads(8,8,1)] void Diffuse (uint3 id : SV_DispatchThreadID)