Table of Contents

Class BorderDistanceFieldGenerator

Namespace
Map.Rendering
Assembly
MapAssembly.dll

Generates distance field textures for modern Paradox-style smooth anti-aliased borders. Uses Jump Flooding Algorithm (JFA) for efficient GPU-based distance field generation.

Algorithm:

  1. Edge Detection: Mark border pixels
  2. Jump Flooding: Propagate closest border distance (log(n) passes)
  3. Finalize: Convert positions to distances

Result: Silky smooth borders at any zoom level (CK3/Stellaris quality)

public class BorderDistanceFieldGenerator : MonoBehaviour
Inheritance
object
BorderDistanceFieldGenerator

Methods

GenerateDistanceField()

Generate distance field for borders (main entry point) Runs dual-channel JFA: once for country borders (R), once for province borders (G)

public void GenerateDistanceField()

GenerateQuarterResolutionDistanceField(RenderTexture)

Generate AAA-quality distance field at 1/4 resolution for multi-tap rendering This is the modern approach used by grand strategy titles - generates distance values at reduced resolution, compensated by 9-tap multi-sampling in fragment shader

Memory: ~1.4MB at 1/4 resolution vs ~46MB full resolution = 97% savings Quality: Indistinguishable from full resolution due to multi-tap + bilinear filtering

public void GenerateQuarterResolutionDistanceField(RenderTexture outputTexture)

Parameters

outputTexture RenderTexture

Target RenderTexture at 1/4 resolution (from DynamicTextureSet)

Initialize()

Initialize compute shader kernels. Called by ArchonEngine.

public void Initialize()

SetTextureManager(MapTextureManager)

public void SetTextureManager(MapTextureManager manager)

Parameters

manager MapTextureManager

TestGeneration()

[ContextMenu("Test Distance Field Generation")]
public void TestGeneration()