74 lines
2.4 KiB
TypeScript
74 lines
2.4 KiB
TypeScript
import { INTERNAL_RENDER_AREA_MEGAPIXEL_LIMITS } from './runtime-setting-bounds';
|
|
import type { GardenAppConfig } from './types';
|
|
|
|
// Mirrors the historical render-scale cap so the default render area stays
|
|
// roughly equivalent to native rendering on high-DPR phones without the
|
|
// pipeline applying its own clamp. The slider can override freely.
|
|
const DEFAULT_DEVICE_PIXEL_RATIO_CAP = 2;
|
|
|
|
const computeDefaultInternalRenderAreaMegapixels = (): number => {
|
|
const rawDpr =
|
|
typeof window !== 'undefined' && Number.isFinite(window.devicePixelRatio)
|
|
? window.devicePixelRatio
|
|
: 1;
|
|
const dpr = Math.min(Math.max(rawDpr, 1), DEFAULT_DEVICE_PIXEL_RATIO_CAP);
|
|
const cssWidth = typeof window !== 'undefined' ? window.innerWidth : 1920;
|
|
const cssHeight = typeof window !== 'undefined' ? window.innerHeight : 1080;
|
|
const cssMegapixels = (Math.max(cssWidth, 1) * Math.max(cssHeight, 1)) / 1_000_000;
|
|
return Math.min(
|
|
INTERNAL_RENDER_AREA_MEGAPIXEL_LIMITS.max,
|
|
Math.max(INTERNAL_RENDER_AREA_MEGAPIXEL_LIMITS.min, dpr * dpr * cssMegapixels)
|
|
);
|
|
};
|
|
|
|
export const defaultSettings: GardenAppConfig['defaultSettings'] = {
|
|
selectedColorIndex: 0,
|
|
|
|
introNearDistanceMin: 28,
|
|
introNearDistanceInner: 4,
|
|
introNearSensorOffsetMultiplier: 0.75,
|
|
introTargetAngleBlend: 0.2,
|
|
introProgressCutoff: 0.999,
|
|
introTurnRateMultiplier: 3.4,
|
|
introRandomTurnMultiplier: 0.18,
|
|
introStepStopDistance: 0.5,
|
|
randomTimeScale: 0.34816,
|
|
|
|
diffusionRateTrails: 0.22,
|
|
decayRateBrush: 18,
|
|
diffusionDecayRateDivisor: 1000,
|
|
diffusionNeighborDivisor: 8,
|
|
brushDecayAlphaOffset: 1.001,
|
|
brushEffectDuration: 8,
|
|
|
|
brushCurveResolution: 12,
|
|
brushCurveMinBrushRadius: 1,
|
|
brushCurveMinSegmentSpacing: 4,
|
|
brushCurveMirrorResolutionExponent: 0.5,
|
|
brushCurveSegmentBrushRadiusRatio: 0.65,
|
|
brushSmoothingMinSampleDistance: 0.5,
|
|
|
|
brushAlpha: 1,
|
|
brushDiscardThreshold: 0.02,
|
|
brushGrainNoiseScale: 22,
|
|
brushGrainNoiseOffsetX: 0.31,
|
|
brushGrainNoiseOffsetY: 0.67,
|
|
brushGrainMinStrength: 0.45,
|
|
brushGrainMaxStrength: 1,
|
|
|
|
eraserClearAlpha: 0,
|
|
eraserClearBlue: 0,
|
|
eraserClearGreen: 0,
|
|
eraserClearRed: 0,
|
|
eraserLineDistanceEpsilon: 0.0001,
|
|
eraserMaskAlphaThreshold: 0.5,
|
|
|
|
adaptiveCapInitial: 1_000_000,
|
|
adaptiveCapMin: 50_000,
|
|
internalRenderAreaMegapixels: computeDefaultInternalRenderAreaMegapixels(),
|
|
maxAgentCount: 1_500_000,
|
|
|
|
renderTraceNormalizationFloor: 1,
|
|
renderBrushColorBase: 1.2,
|
|
renderBrushColorStrengthMultiplier: 1.6,
|
|
};
|