TexturesUnlimited icon indicating copy to clipboard operation
TexturesUnlimited copied to clipboard

KSP 1.6 - The 'UX Rework' update

Open shadowmage45 opened this issue 6 years ago • 2 comments

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

shadowmage45 avatar Oct 25 '18 16:10 shadowmage45

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: base

Old Recolored old

Prenormalized Recolored new

Old Recolored Red oldred

Prenormalized Recolored Red newred

shadowmage45 avatar Nov 19 '18 18:11 shadowmage45

Where to store data? Per-save, or game-wide?

I suggest game-wide, in a config file inside PluginData.

Gordon-Dry avatar Nov 19 '18 22:11 Gordon-Dry