     return step(x,min_edge)*step(0,-(max_edge-x));
 }
 
+
+
+float resolve_biome(vec4 biome_pack)
+{
+    float biome = 0.f;
+
+    //only way we could have come out with fire on any sample is if we arent underwater so it must be valid
+    //so prioritize fire
+
+
+    
+
+    float fire1 = in_range(biome_pack.r,4.f,5.f);
+
+
+
+    return biome;
+}
+
 vec4 calc_contribution2(vec4 this_pixel,vec4 other_pixel, float velocity_into_this_pixel)
 {
     float water_height = this_pixel.r;

  other_water_height = other_sample.r;
  other_ground_height = other_sample.g;
  velocity_into_this_pixel_from_other = velocity.a;
  vec4 up = calc_contribution2(ground_height,water_height,other_ground_height,other_water_height,velocity_into_this_pixel_from_other);




    water_height = ground_height;
    velocity = max(velocity,vec4(0));
  }


    float biome = heightmap.b;


    




        //char to dirt [0,1] // very slowly fades to dirt over time
    //dry dirt to wet dirt[1,2] //fades to dry over time
    //light grass to heavy grass[2,3] //grows fairly quickly, spreads only into wet dirt > 1.5f
    //3-4 left blank for boundary
    //light fire to heavy fire[4,5] //
    //heavy fire to char [5,6]

    //dirt values control color
    //grass values control grass coverage/color
    //grass slowly grows from 1 to 2 by default
    //if a dirt pixel is adjacent to a grass pixel, dirt will slowly progress from .5 to 1 and become grass itself

    //progress to catching fire needs to be stored somehow...
    //maybe once a pixel is within fire range, it slowly rng progresses from 3 to 4    
    //grass tile will only catch fire if fire is > 3.5 on the other pixel

    //currently we are limited only to grass growing if the soil is 'very wet'
    //and as we are in the recieve seeds range, the soil gets wetter automatically and only shows grass once it passes the 2.f threshold
    
    

























    //used to mask biome iteration steps
    float is_char_to_dirt = in_range(biome,0.f,1.f);
    float is_soil = in_range(biome,1.f,2.f);
    float is_very_wet_soil = in_range(biome,1.5f,2.f);
    float is_grass = in_range(biome,2.f,3.f);
    float is_heavy_grass = in_range(biome,2.25f,3.f);
    float on_fire = in_range(biome,4.f,5.f);
    float fire_is_fading = in_range(biome,5.f,6.f);
  float low_chance_true = float(random(vec2(time))<0.001f);

  //left
  ivec2 sample_pixel = ivec2(p.x-1,p.y);
