Class BorderDistanceFieldGenerator
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:
- Edge Detection: Mark border pixels
- Jump Flooding: Propagate closest border distance (log(n) passes)
- Finalize: Convert positions to distances
Result: Silky smooth borders at any zoom level (CK3/Stellaris quality)
public class BorderDistanceFieldGenerator : MonoBehaviour
- Inheritance
-
objectBorderDistanceFieldGenerator
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
outputTextureRenderTextureTarget 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
managerMapTextureManager
TestGeneration()
[ContextMenu("Test Distance Field Generation")]
public void TestGeneration()