Summary
Blank maps generated via InitBlank=1 + blank_map_* options are not DNTS-capable: no splat
distribution texture, no splat detail-normal textures, and the SSMF shader is compiled without the
splat path. Please let CBlankMapGenerator accept splat texture options so a generated blank map can
render DNTS, the same way an archived SSMF map declares it via mapinfo.resources.
This unblocks runtime map-editor tools that generate a flat map and then paint the splat distribution.
See Map Editor pr for reference: beyond-all-reason/Beyond-All-Reason#7219
Current behavior (verified)
CBlankMapGenerator logs every map option but only acts on blank_map_x/y/height/color_{r,g,b}. With
splat keys injected, infolog shows them arriving:
[MapGen::CBlankMapGenerator] mapOpt<blank_map_splatdetailnormaltex1, luaui/.../Rock_Brown_1k_dnts.dds>
…but they have no effect on the generated map:
$ssmf_splat_normals:0..3 id=0 xsize=0 # detail-normal array never loaded
gl.TextureInfo("$ssmf_splat_distr") -> nil # no distribution to query or paint
Requested behavior
When present, these options should populate the generated map's effective MapInfo (same fields the
archive [RESOURCES]/[SPLATS] blocks fill) so SSMF loads the detail-normal array and compiles the
DNTS shader variant:
| Map option |
MapInfo field |
blank_map_splatdetailnormaltex1..4 |
smf.splatDetailNormalTexNames[0..3] (VFS paths) |
blank_map_splattexscale1..4 |
splats.TexScales[0..3] (default 0.01) |
blank_map_splattexmult1..4 |
splats.TexMults[0..3] (default 1.0) |
blank_map_splatdetailnormaldiffusealpha |
smf.splatDetailNormalDiffuseAlpha (0/1) |
blank_map_splatdistr (optional) |
smf.splatDistrTexName |
If detail-normal textures are supplied but no splatdistr, the generator should synthesize a blank
RGBA distribution (e.g. R=255, G=B=A=0) and bind it as $ssmf_splat_distr, so editor tools can read
its size and paint it via Spring.SetMapShadingTexture("$ssmf_splat_distr", luaTex).
DNTS should activate only when at least one splatdetailnormaltex* is given; otherwise behavior is
unchanged (full backward compatibility).
Notes
Let me know if this is the right approach for blank map generation at all or this should be built a different way.
The game-side already emits these exact keys; this is purely the engine half so can be easily tested with the Terraform Brush pulled.
Summary
Blank maps generated via
InitBlank=1+blank_map_*options are not DNTS-capable: no splatdistribution texture, no splat detail-normal textures, and the SSMF shader is compiled without the
splat path. Please let
CBlankMapGeneratoraccept splat texture options so a generated blank map canrender DNTS, the same way an archived SSMF map declares it via
mapinfo.resources.This unblocks runtime map-editor tools that generate a flat map and then paint the splat distribution.
See Map Editor pr for reference: beyond-all-reason/Beyond-All-Reason#7219
Current behavior (verified)
CBlankMapGeneratorlogs every map option but only acts onblank_map_x/y/height/color_{r,g,b}. Withsplat keys injected, infolog shows them arriving:
…but they have no effect on the generated map:
Requested behavior
When present, these options should populate the generated map's effective
MapInfo(same fields thearchive
[RESOURCES]/[SPLATS]blocks fill) so SSMF loads the detail-normal array and compiles theDNTS shader variant:
blank_map_splatdetailnormaltex1..4smf.splatDetailNormalTexNames[0..3](VFS paths)blank_map_splattexscale1..4splats.TexScales[0..3](default 0.01)blank_map_splattexmult1..4splats.TexMults[0..3](default 1.0)blank_map_splatdetailnormaldiffusealphasmf.splatDetailNormalDiffuseAlpha(0/1)blank_map_splatdistr(optional)smf.splatDistrTexNameIf detail-normal textures are supplied but no
splatdistr, the generator should synthesize a blankRGBA distribution (e.g.
R=255, G=B=A=0) and bind it as$ssmf_splat_distr, so editor tools can readits size and paint it via
Spring.SetMapShadingTexture("$ssmf_splat_distr", luaTex).DNTS should activate only when at least one
splatdetailnormaltex*is given; otherwise behavior isunchanged (full backward compatibility).
Notes
Let me know if this is the right approach for blank map generation at all or this should be built a different way.
The game-side already emits these exact keys; this is purely the engine half so can be easily tested with the Terraform Brush pulled.