TexturesUnlimited
TexturesUnlimited copied to clipboard
KSP 1.6 - The 'UX Rework' update
Goals:
Clean up the user interface and fill in some of the missing features to allow for 'recoloring' to become more of a 'choose your material'. This will be accomplished through a new GUI, a new method for specifying parts to recolor, and supporting of user choice of additional per-region 'detail' textures that will be blended onto the outputs.
New Features (finished features...)
- TUPartVariant
- Might not be able to fix icons, but if the rest works... might as well release with disclaimers.
- Should file stock bug report
- New Recoloring UX
- New recoloring UI - use properly built Unity GO based UI system
- Use mouse to select part to apply colors to and/or apply colors from the GUI
- Add support for mod-specific / grouped texture set/preset color/preset material handling
- Load data from within single mod-specific root nodes
- Preset color system reworked
- Allow mod-specific presets. By default texture-sets will only have available the presets defined by that mod.
- Allow multiple mod-specific groups of preset colors to be defined. Each PresetColor definition can have one (or more?) 'groupName=' and/or have specific group-definition nodes with their own name and a list of color names.
- UI will allow for changing between the 'preset color group' currently displayed, and/or merge all available groups together for display as a single list (separators?)
- Preset colors will also use the mod-name-prefix system if defined inside of a mod-specific root node.
- Per-recoloring-region detail map selection in UI
- Will need multiple additional samplers for the normal maps; can use texture-arrays?
- per-region Adjustable scaling
- New shader keyword?
UI Details
- Create new GUI system using proper Unity UI creation (replace the immediate-mode UI)
- Create the UI in Unity Editor, pack into asset-bundle, load into TU manually (skip stock loading), link up elements to their fields/methods.
- Tabbed UI
- Preset Color Selection
- Manual Color Selection
- Regional Detail Map Selection
- Less of a 'per-section-list' and more of a 'set your colors, click your targets' type setup.
- May still have a list of parts/sections on the vessel that are recolorable, but the main interface for selecting of these should be mouse-based through clicking on a part
- e.g. while GUI is open, clicks onto the vessel will select a part.
- Left click = select part, right click = select part + apply current colors to it?
- Other key-cobo needed to prevent stock functions? How to play nicely with stock/other mods that use
- GUI should have 'color wheel' type selection for colors, slider for smoothness/metal values, text-input boxes for each for manual specification.
Regional Detail Map Details
- Per-recoloring-region detail map selection in UI
- Each recoloring region (main/second/detail) can select a separate detail texture set to mix in with the existing texture
- Will require 'detail texture masks' to determine input mixing -- alpha channel of RGB mask?
- Will need multiple additional samplers for the normal maps; can use texture-arrays?
- per-region Adjustable scaling? (how to pull that off?)
- store data where?
- Will need a full texture reference to restore the proper tex/materials, for each region
- At least normal maps
- Ideally another grayscale texture will be provided with diffuse/metal/smoothness modifications (each in one of the channels)
- Will TU ship with any of these by default? Would anyone else be able to figure out how to create them properly?
Presets System Details
- Preset Colors
- RGB, Smoothness, Metal
- Preset Patterns
- mostly limited to specific parts or sets of parts?
- Preset Materials?
- Preset Color
- Preset Detail Maps (see section above)
- Allow users to permanently save colors, patterns, material presets.
- Where to store data? Per-save, or game-wide?
UI Info
https://assetstore.unity.com/packages/tools/gui/noesisgui-1-2-9282
Tinting Mode
Diffuse Lum | Diff-Norm | Detail | % | User Value | Tint | GUI Correction Factor | % | %D |
---|---|---|---|---|---|---|---|---|
0.549 | 0.471 | 0.078 | 0.143 | 0.500 | 0.583 | 2.125 | 0.134 | -0.008 |
0.800 | 0.900 | -0.100 | -0.125 | 0.500 | 0.500 | 1.250 | -0.200 | -0.075 |
0.200 | 0.100 | 0.100 | 0.500 | 0.500 | 0.500 | 5.000 | 0.200 | -0.300 |
0.500 | 0.600 | -0.100 | -0.200 | 0.700 | 0.700 | 2.000 | -0.143 | 0.057 |
0.500 | 0.400 | 0.100 | 0.200 | 0.300 | 0.300 | 2.000 | 0.333 | 0.133 |
Linear Add Mode
Diffuse Lum | Diff-Norm | Detail | % | User Value | Linear Add | % | %D |
---|---|---|---|---|---|---|---|
0.549 | 0.471 | 0.078 | 0.143 | 0.500 | 0.578 | 0.136 | -0.007 |
0.800 | 0.900 | -0.100 | -0.125 | 0.500 | 0.400 | -0.250 | -0.125 |
0.200 | 0.100 | 0.100 | 0.500 | 0.500 | 0.600 | 0.167 | -0.333 |
0.500 | 0.600 | -0.100 | -0.200 | 0.700 | 0.600 | -0.167 | 0.033 |
0.500 | 0.400 | 0.100 | 0.200 | 0.300 | 0.400 | 0.250 | 0.050 |
Extract then Multiply (Current functionality)
Diffuse Lum | Diff-Norm | Detail | % | User Value | Mult Add | % | %D |
---|---|---|---|---|---|---|---|
0.549 | 0.471 | 0.078 | 0.143 | 0.500 | 0.539 | 0.145 | 0.003 |
0.800 | 0.900 | -0.100 | -0.125 | 0.500 | 0.450 | -0.222 | -0.097 |
0.200 | 0.100 | 0.100 | 0.500 | 0.500 | 0.550 | 0.182 | -0.318 |
0.500 | 0.600 | -0.100 | -0.200 | 0.700 | 0.630 | -0.159 | 0.041 |
0.500 | 0.400 | 0.100 | 0.200 | 0.300 | 0.330 | 0.303 | 0.103 |
Prenormalized (proposed new functionality)
Diffuse Lum | Diff-Norm | Detail | % | User Value | Prenormalize | Detail | Total | % | %D |
---|---|---|---|---|---|---|---|---|---|
0.549 | 0.471 | 0.078 | 0.143 | 0.500 | 0.167 | 0.083 | 0.583 | 0.143 | 0.000 |
0.800 | 0.900 | -0.100 | -0.125 | 0.500 | -0.111 | -0.056 | 0.444 | -0.125 | 0.000 |
0.200 | 0.100 | 0.100 | 0.500 | 0.500 | 1.000 | 0.500 | 1.000 | 0.500 | 0.000 |
0.500 | 0.600 | -0.100 | -0.200 | 0.700 | -0.167 | -0.117 | 0.583 | -0.200 | 0.000 |
0.500 | 0.400 | 0.100 | 0.200 | 0.300 | 0.250 | 0.075 | 0.375 | 0.200 | 0.000 |
Original:
Old Recolored
Prenormalized Recolored
Old Recolored Red
Prenormalized Recolored Red
Where to store data? Per-save, or game-wide?
I suggest game-wide, in a config file inside PluginData.