Save work for now
This commit is contained in:
parent
bc6a7cd5a7
commit
ed57ba18ed
Binary file not shown.
Before Width: | Height: | Size: 573 B After Width: | Height: | Size: 586 B |
@ -30,7 +30,7 @@ void main() async {
|
||||
var H = 16;
|
||||
|
||||
var wfc = Wfc(template, W, H);
|
||||
wfc.run(0, -1);
|
||||
wfc.run(1, -1);
|
||||
var output = wfc.extractPartial();
|
||||
for (var y = 0; y < W; y++) {
|
||||
for (var x = 0; x < H; x++) {
|
||||
|
@ -24,14 +24,7 @@ class Wfc<T> {
|
||||
List<int?> _observed = [];
|
||||
|
||||
// computationally expensive stuff that we keep in an incremental way
|
||||
List<double> _weightLogWeights = [];
|
||||
double _sumOfWeights = 0.0, _sumOfWeightLogWeights = 0.0;
|
||||
double _startingEntropy = 0.0;
|
||||
|
||||
List<int> _sumsOfOnes = [];
|
||||
List<double> _sumsOfWeights = [];
|
||||
List<double> _sumsOfWeightLogWeights = [];
|
||||
List<double> _entropies = [];
|
||||
|
||||
// temporaries
|
||||
List<double> _distribution = [];
|
||||
@ -53,22 +46,7 @@ class Wfc<T> {
|
||||
_distribution = [for (var t = 0; t < _nShingles; t++) 0.0];
|
||||
_observed = [for (var r = 0; r < _n; r++) null];
|
||||
|
||||
_weightLogWeights = [
|
||||
for (var t = 0; t < _nShingles; t++) _weight(t) * math.log(_weight(t))
|
||||
];
|
||||
_sumOfWeights = 0.0;
|
||||
_sumOfWeightLogWeights = 0.0;
|
||||
for (var t = 0; t < _nShingles; t++) {
|
||||
_sumOfWeights += _weight(t);
|
||||
_sumOfWeightLogWeights += _weightLogWeights[t];
|
||||
}
|
||||
_startingEntropy =
|
||||
math.log(_sumOfWeights) - _sumOfWeightLogWeights / _sumOfWeights;
|
||||
|
||||
_sumsOfOnes = [for (var r = 0; r < _n; r++) 0];
|
||||
_sumsOfWeights = [for (var r = 0; r < _n; r++) 0.0];
|
||||
_sumsOfWeightLogWeights = [for (var r = 0; r < _n; r++) 0.0];
|
||||
_entropies = [for (var r = 0; r < _n; r++) 0.0];
|
||||
|
||||
_stack = [for (var r = 0; r < _n * _nShingles; r++) (0, 0)];
|
||||
_stacksize = 0;
|
||||
@ -85,9 +63,6 @@ class Wfc<T> {
|
||||
}
|
||||
|
||||
_sumsOfOnes[i] = _nShingles;
|
||||
_sumsOfWeights[i] = _sumOfWeights;
|
||||
_sumsOfWeightLogWeights[i] = _sumOfWeightLogWeights;
|
||||
_entropies[i] = _startingEntropy;
|
||||
_observed[i] = null;
|
||||
}
|
||||
}
|
||||
@ -164,7 +139,7 @@ class Wfc<T> {
|
||||
continue;
|
||||
}
|
||||
var remainingValues = _sumsOfOnes[i];
|
||||
double entropy = remainingValues.toDouble(); // _entropies[i];
|
||||
double entropy = remainingValues.toDouble();
|
||||
if (remainingValues > 1 && entropy <= min) {
|
||||
double noise = 1E-6 * random.nextDouble();
|
||||
if (entropy + noise < min) {
|
||||
@ -235,11 +210,6 @@ class Wfc<T> {
|
||||
_stacksize++;
|
||||
|
||||
_sumsOfOnes[i] -= 1;
|
||||
_sumsOfWeights[i] -= _weight(t);
|
||||
_sumsOfWeightLogWeights[i] -= _weightLogWeights[t];
|
||||
|
||||
var sum = _sumsOfWeights[i];
|
||||
_entropies[i] = math.log(sum) - _sumsOfWeightLogWeights[i] / sum;
|
||||
}
|
||||
}
|
||||
|
||||
@ -266,7 +236,6 @@ class WfcTemplate<T> {
|
||||
final List<T> bitmap = [];
|
||||
for (var i = 0; i < sx * sy; i++) {
|
||||
var pixel = bytedata.getUint32(i * 4, Endian.little);
|
||||
log("pixel: $pixel");
|
||||
bitmap.add(cb(pixel));
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,7 @@ class Level {
|
||||
}
|
||||
|
||||
Future<WfcTemplate<LevelTile>> loadLevelWfcAsync(String name) async {
|
||||
return WfcTemplate.loadAsync(name, 2, (c) {
|
||||
return WfcTemplate.loadAsync(name, 3, (c) {
|
||||
switch (c) {
|
||||
// ABGR
|
||||
case 0xFF000000:
|
||||
|
Loading…
Reference in New Issue
Block a user