/**
 * Custom depth material attached to terrain tile meshes as
 * `mesh.customDepthMaterial`. Used during the shadow-caster pass to inset
 * the recorded depth into the terrain surface.
 *
 * In the vertex shader, each vertex is sunk along its negative geometric
 * normal by `shadowBias` units (object space) before projection into the
 * shadow camera. The resulting shadow map stores the terrain at depths
 * slightly beyond the true surface, so when the terrain shader samples its
 * own shadow at a crease the receiver depth is strictly less than the
 * stored occluder depth and the surface does not self-shadow — sidestepping
 * VSM over-darkening at depth discontinuities.
 *
 * Trade-off: other meshes that *receive* the terrain's cast shadow see the
 * terrain silhouette shrunk inward by `shadowBias`. For terrain that mostly
 * self-shadows (hills, cliffs, valleys) this is invisible. For objects
 * resting on the surface, contact shadows from the terrain become very
 * slightly smaller. This is the explicit trade-off this material exists
 * to make.
 *
 * Bias is in OBJECT space. If the terrain mesh is scaled non-uniformly the
 * caller is responsible for scaling the value accordingly.
 *
 * The bias is exposed on `material.userData.shadowBias` so callers can
 * mutate it without reaching into uniforms directly:
 *     material.userData.shadowBias.value = newBias;
 *
 * @param {number} [initialBias=0.1] starting shadowBias, object-space units.
 *   Chosen as a conservative default that clears typical VSM crease artifacts
 *   at common shadow-map resolutions while keeping caster-side shrinkage on
 *   other receivers visually negligible.
 * @returns {MeshDepthMaterial}
 */
export function makeTerrainDepthMaterial(initialBias?: number): MeshDepthMaterial;
import { MeshDepthMaterial } from 'three';
//# sourceMappingURL=TerrainDepthMaterial.d.ts.map