feat(ugc): opt-in metal and glow shader groups in made models

Player models are multishader (RenderComponent shader 100): the client
wraps each NiLODNode and draws it with the mapShaders id in its name.
With shader_metal, shader_brushed or shader_glow set, the opaque bricks
are split by look into S<id>_Metal_Model, S<id>_Brushed_Model and
S<id>_Glow_Model beside S01_Opaque_Model and S01_Alpha_Model, each with
every LOD level. Metal is LU Toolbox's metallic colors plus Materials.xml
types (shinySteel; brushedSteel and matteSteel for brushed), glow its
glow colors. Glow shapes get an emissive material (glow_emissive) and
their plain color, not the baked one. Transparent glow stays in S01_Alpha.

All off by default, which writes the same bytes as before (tested). Not
how live looked; models already made change only when made again.

The icon renderer reads the groups back by tag and draws glow at its
plain color and metal with a tinted reflection and highlight.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-28 09:55:00 -05:00
parent b65220b446
commit c39b7ee935
16 changed files with 560 additions and 45 deletions

View File

@@ -64,6 +64,24 @@ lod_cull=10000
shader_opaque=01
combine_transparent=0
# Metal and glow colors in NiLODNodes of their own, drawn with the client's metal and emissive shaders. Not how live
# looked: live's models were all LEGO plastic (S01), which is what 0 (off, the default) keeps, byte for byte.
# shader_metal: mapShaders id for metal colors (Materials.xml types in metal_material_types and LU Toolbox's metallic
# colors), S<id>_Metal_Model: 88 is Polished Metal.
# shader_brushed: for brushed steel colors (brushed_material_types; the client's Materials.xml has none): 89 is
# Brushed Steel.
# shader_glow: for opaque glowing colors (LU Toolbox's glow colors), with their plain color and an emissive material:
# 46 is LEGO-Emissive. Transparent glow stays with the transparent bricks.
# glow_emissive: the glow shapes' material emissive (how far the shader goes from lit to the plain color, 1 fully).
# *_material_types: Materials.xml MaterialTypes, comma separated (empty: the default, none: no types).
# Models already made keep their look until they're made again (the dashboard's Make everything again, or Reprocess).
shader_metal=0
shader_brushed=0
shader_glow=0
glow_emissive=1
metal_material_types=shinySteel
brushed_material_types=brushedSteel,matteSteel
# Remove faces that can't be seen from anywhere (optimize_resolution: detail of the renders that decide it;
# hsr_ground_plane: 1 also removes what can only be seen from below the model)
remove_hidden_faces=1