Update world shader to use material IDs
Replace bit-packed cell flags in the R channel with a direct material ID float pass-through. Food clearing now writes MAT_AIR instead of clearing a bit.
This commit is contained in:
parent
0f9c1b47f2
commit
e210ebc72d
1 changed files with 5 additions and 15 deletions
|
|
@ -12,25 +12,15 @@ void main() {
|
||||||
vec4 lastState = texture(tLastState, vUv);
|
vec4 lastState = texture(tLastState, vUv);
|
||||||
vec4 discreteAnts = texture(tDiscreteAnts, vUv);
|
vec4 discreteAnts = texture(tDiscreteAnts, vUv);
|
||||||
|
|
||||||
int cellData = int(lastState.x);
|
float materialId = lastState.x;
|
||||||
int isFood = cellData & 1;
|
|
||||||
int isHome = (cellData & 2) >> 1;
|
|
||||||
int isObstacle = (cellData & 4) >> 2;
|
|
||||||
float scentToHome = min(SCENT_MAX_PER_CELL, lastState.y + discreteAnts.x);
|
float scentToHome = min(SCENT_MAX_PER_CELL, lastState.y + discreteAnts.x);
|
||||||
float scentToFood = min(SCENT_MAX_PER_CELL, lastState.z + discreteAnts.y);
|
float scentToFood = min(SCENT_MAX_PER_CELL, lastState.z + discreteAnts.y);
|
||||||
float repellent = min(REPELLENT_MAX_PER_CELL, lastState.w);
|
float repellent = min(REPELLENT_MAX_PER_CELL, lastState.w);
|
||||||
|
|
||||||
|
// ant picked up food from this cell
|
||||||
if (discreteAnts.z == 1.) {
|
if (discreteAnts.z == 1.) {
|
||||||
isFood = 0;
|
materialId = float(MAT_AIR);
|
||||||
}
|
}
|
||||||
|
|
||||||
int terrainType = (cellData >> TERRAIN_TYPE_SHIFT) & TERRAIN_TYPE_MASK;
|
FragColor = vec4(materialId, scentToHome, scentToFood, repellent);
|
||||||
int foodQuality = (cellData >> FOOD_QUALITY_SHIFT) & FOOD_QUALITY_MASK;
|
|
||||||
|
|
||||||
// reconstruct cell data preserving all bit fields
|
|
||||||
int newCellData = isFood + (isHome << 1) + (isObstacle << 2)
|
|
||||||
+ (terrainType << TERRAIN_TYPE_SHIFT)
|
|
||||||
+ (foodQuality << FOOD_QUALITY_SHIFT);
|
|
||||||
|
|
||||||
FragColor = vec4(float(newCellData), scentToHome, scentToFood, repellent);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue