откорректированны параметры
This commit is contained in:
@@ -39,6 +39,7 @@ public final class FogEnvironmentContext {
|
||||
|
||||
long timeOfDay = world.getTimeOfDay() % 24000L;
|
||||
long totalDays = world.getTimeOfDay() / 24000L;
|
||||
float timeOfDayNorm = timeOfDay/24000.0F;
|
||||
|
||||
// === 1. Трапеция для EMISSION ===
|
||||
double noiseValue = dayNoise.sample(totalDays * 0.05, 0);
|
||||
@@ -73,10 +74,10 @@ public final class FogEnvironmentContext {
|
||||
double dayNoiseValue = dayNoise.sample(totalDays * 0.1, 100);
|
||||
float rawFogDayRandom = (float)(0.5 + dayNoiseValue * 0.5);
|
||||
|
||||
// === 4. HeightFadeMax (90 ± 10 от дневного шума) ===
|
||||
double heightNoise = dayNoise.sample(totalDays * 0.1, 200);
|
||||
float rawHeightFadeMax = 90.0f + (float)(heightNoise * 10.0);
|
||||
rawHeightFadeMax = Math.max(80.0f, Math.min(100.0f, rawHeightFadeMax));
|
||||
// === 4. HeightFadeMax (110 +15/-20 от дневного шума) ===
|
||||
double heightNoise = dayNoise.sample(totalDays * 0.5, 200)+dayNoise.sample(timeOfDayNorm*2, totalDays)*0.25;
|
||||
float rawHeightFadeMax = 110.0f + (float)(heightNoise * 15.0);
|
||||
rawHeightFadeMax = Math.max(90.0f, Math.min(125.0f, rawHeightFadeMax));
|
||||
|
||||
// === 5. Сглаживание ===
|
||||
float lerpSpeed = 0.08f;
|
||||
|
||||
@@ -30,6 +30,7 @@ const float MIN_Y = -64.0;
|
||||
const float SIZE_Y = 384.0;
|
||||
|
||||
const float UNDERGROUND_TARGET_DENSITY = 0.008; // Подземная дымка (слабее поверхностной)
|
||||
const float UNDERGROUND_EMISSION = 1.0;
|
||||
|
||||
float getEmission(uint magnitude, bool isAbsorber) {
|
||||
if (isAbsorber || magnitude == 0u) return 0.0;
|
||||
@@ -51,8 +52,15 @@ void main() {
|
||||
float biomeHumidity = biomeParams.b;
|
||||
float biomeTimeSensitivity = biomeParams.a;
|
||||
|
||||
// Под землёй и в закрытых местах туман ведёт себя иначе
|
||||
float skyLight = texture(SkyLightSampler, uv).r;
|
||||
float skyLightSmooth = smoothstep(0.2, 0.8, skyLight);
|
||||
|
||||
// === Emission ===
|
||||
float finalEmission = biomeEmission * EmissionMultiplier * GlobalEmissionMultiplier;
|
||||
float emissionTimeFactor = mix(1.0, EmissionMultiplier, biomeTimeSensitivity);
|
||||
|
||||
float surfaceEmission = biomeEmission * emissionTimeFactor;
|
||||
float finalEmission = mix(UNDERGROUND_EMISSION, surfaceEmission, skyLightSmooth) * GlobalEmissionMultiplier;
|
||||
|
||||
// === Target Density ===
|
||||
// 1. Определяем, туманный ли сегодня день
|
||||
@@ -72,10 +80,6 @@ void main() {
|
||||
float worldY = uv.y * SIZE_Y + MIN_Y;
|
||||
float heightFade = 1.0 - clamp((worldY - HEIGHT_FADE_MIN) / (HeightFadeMax - HEIGHT_FADE_MIN), 0.0, 1.0);
|
||||
|
||||
// 4. Под землёй дымка другая
|
||||
float skyLight = texture(SkyLightSampler, uv).r;
|
||||
float skyLightSmooth = smoothstep(0.2, 0.8, skyLight);
|
||||
|
||||
// 4. Итоговая плотность
|
||||
float surfaceTargetDensity = biomeTargetDensityBase * hasFogToday * timeFactor * heightFade;
|
||||
float finalTargetDensity = mix(UNDERGROUND_TARGET_DENSITY, surfaceTargetDensity, skyLightSmooth);
|
||||
|
||||
Reference in New Issue
Block a user