noise meta

This commit is contained in:
dfsek
2021-06-14 13:32:28 -07:00
parent bdce485ca5
commit f0655d1bb9
4 changed files with 23 additions and 19 deletions

View File

@@ -2,6 +2,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates;
import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.api.config.meta.MetaValue;
import com.dfsek.terra.api.math.noise.NoiseSampler; import com.dfsek.terra.api.math.noise.NoiseSampler;
import com.dfsek.terra.api.math.noise.samplers.DomainWarpedSampler; import com.dfsek.terra.api.math.noise.samplers.DomainWarpedSampler;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
@@ -9,21 +10,21 @@ import com.dfsek.terra.api.util.seeded.NoiseSeeded;
@SuppressWarnings({"unused", "FieldMayBeFinal"}) @SuppressWarnings({"unused", "FieldMayBeFinal"})
public class DomainWarpTemplate extends SamplerTemplate<DomainWarpedSampler> { public class DomainWarpTemplate extends SamplerTemplate<DomainWarpedSampler> {
@Value("warp") @Value("warp")
private NoiseSeeded warp; private MetaValue<NoiseSeeded> warp;
@Value("function") @Value("function")
private NoiseSeeded function; private MetaValue<NoiseSeeded> function;
@Value("salt") @Value("salt")
@Default @Default
private int salt = 0; private MetaValue<Integer> salt = MetaValue.of(0);
@Value("amplitude") @Value("amplitude")
@Default @Default
private double amplitude = 1; private MetaValue<Double> amplitude = MetaValue.of(1d);
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler apply(Long seed) {
return new DomainWarpedSampler(function.apply(seed), warp.apply(seed), (int) (seed + salt), amplitude); return new DomainWarpedSampler(function.get().apply(seed), warp.get().apply(seed), (int) (seed + salt.get()), amplitude.get());
} }
} }

View File

@@ -1,6 +1,7 @@
package com.dfsek.terra.config.loaders.config.sampler.templates; package com.dfsek.terra.config.loaders.config.sampler.templates;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.api.config.meta.MetaValue;
import com.dfsek.terra.api.math.noise.NoiseSampler; import com.dfsek.terra.api.math.noise.NoiseSampler;
import com.dfsek.terra.api.math.noise.samplers.ImageSampler; import com.dfsek.terra.api.math.noise.samplers.ImageSampler;
@@ -10,16 +11,16 @@ import java.awt.image.BufferedImage;
public class ImageSamplerTemplate extends SamplerTemplate<ImageSampler> { public class ImageSamplerTemplate extends SamplerTemplate<ImageSampler> {
@Value("image") @Value("image")
private BufferedImage image; private MetaValue<BufferedImage> image;
@Value("frequency") @Value("frequency")
private double frequency; private MetaValue<Double> frequency;
@Value("channel") @Value("channel")
private ImageSampler.Channel channel; private MetaValue<ImageSampler.Channel> channel;
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler apply(Long seed) {
return new ImageSampler(image, channel, frequency); return new ImageSampler(image.get(), channel.get(), frequency.get());
} }
} }

View File

@@ -4,6 +4,7 @@ import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.config.ValidatedConfigTemplate;
import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.exception.ValidationException;
import com.dfsek.terra.api.config.meta.MetaValue;
import com.dfsek.terra.api.math.noise.NoiseSampler; import com.dfsek.terra.api.math.noise.NoiseSampler;
import com.dfsek.terra.api.math.noise.samplers.KernelSampler; import com.dfsek.terra.api.math.noise.samplers.KernelSampler;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
@@ -14,18 +15,18 @@ import java.util.List;
public class KernelTemplate extends SamplerTemplate<KernelSampler> implements ValidatedConfigTemplate { public class KernelTemplate extends SamplerTemplate<KernelSampler> implements ValidatedConfigTemplate {
@Value("kernel") @Value("kernel")
private List<List<Double>> kernel; private List<List<MetaValue<Double>>> kernel;
@Value("factor") @Value("factor")
@Default @Default
private double factor = 1; private MetaValue<Double> factor = MetaValue.of(1d);
@Value("function") @Value("function")
private NoiseSeeded function; private MetaValue<NoiseSeeded> function;
@Value("frequency") @Value("frequency")
@Default @Default
private double frequency = 1; private MetaValue<Double> frequency = MetaValue.of(1d);
@Override @Override
public NoiseSampler apply(Long seed) { public NoiseSampler apply(Long seed) {
@@ -33,12 +34,12 @@ public class KernelTemplate extends SamplerTemplate<KernelSampler> implements Va
for(int x = 0; x < kernel.size(); x++) { for(int x = 0; x < kernel.size(); x++) {
for(int y = 0; y < kernel.get(x).size(); y++) { for(int y = 0; y < kernel.get(x).size(); y++) {
k[x][y] = kernel.get(x).get(y) * factor; k[x][y] = kernel.get(x).get(y).get() * factor.get();
} }
} }
KernelSampler sampler = new KernelSampler(k, function.apply(seed)); KernelSampler sampler = new KernelSampler(k, function.get().apply(seed));
sampler.setFrequency(frequency); sampler.setFrequency(frequency.get());
return sampler; return sampler;
} }

View File

@@ -5,6 +5,7 @@ import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.config.ValidatedConfigTemplate;
import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.exception.ValidationException;
import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.tectonic.loading.object.ObjectTemplate;
import com.dfsek.terra.api.config.meta.MetaValue;
import com.dfsek.terra.api.math.noise.NoiseSampler; import com.dfsek.terra.api.math.noise.NoiseSampler;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
@@ -12,15 +13,15 @@ import com.dfsek.terra.api.util.seeded.NoiseSeeded;
public abstract class SamplerTemplate<T extends NoiseSampler> implements ValidatedConfigTemplate, ObjectTemplate<NoiseSeeded>, NoiseSeeded { public abstract class SamplerTemplate<T extends NoiseSampler> implements ValidatedConfigTemplate, ObjectTemplate<NoiseSeeded>, NoiseSeeded {
@Value("dimensions") @Value("dimensions")
@Default @Default
private int dimensions = 2; private MetaValue<Integer> dimensions = MetaValue.of(2);
public int getDimensions() { public int getDimensions() {
return dimensions; return dimensions.get();
} }
@Override @Override
public boolean validate() throws ValidationException { public boolean validate() throws ValidationException {
if(dimensions != 2 && dimensions != 3) throw new ValidationException("Illegal amount of dimensions: " + dimensions); if(dimensions.get() != 2 && dimensions.get() != 3) throw new ValidationException("Illegal amount of dimensions: " + dimensions);
return true; return true;
} }