• Hi Guest!

    We are extremely excited to announce the release of our first Beta1.1 and the first release of our Public AddonKit!
    To participate in the Beta, a subscription to the Entertainer or Creator Tier is required. For access to the Public AddonKit you must be a Creator tier member. Once subscribed, download instructions can be found here.

    Click here for information and guides regarding the VaM2 beta. Join our Discord server for more announcements and community discussion about VaM2.
  • Hi Guest!

    VaM2 Resource Categories have now been added to the Hub! For information on posting VaM2 resources and details about VaM2 related changes to our Community Forums, please see our official announcement here.
CustomShaderLoaderAlt

Plugins + Scripts CustomShaderLoaderAlt

Download [<1 MB]
CustomShaderLoaderAlt
Improvements over Regguise/CustomShaderLoader v1.72
✦ How To Use
Please load the CustomShaderLoaderAlt.cslist file to activate the plugin.

For detailed examples, please check out the demo video at the end of this post.

massive shoutout to regguise for the OG plugin, we’re officially in the wizard era now!


✦ New Features



✦ Update



NEW. New Property Type: cubemap — Load Cubemaps from AssetBundle

New version adds the cubemap property type, which automatically scans the AssetBundle for all packaged Cubemap assets and presents them in a dropdown list for the user to select. Supports real-time switching, and selections are automatically saved/restored with the scene. Works across all three modes: Person / Clothing / CUA.

  • Cubemaps are packaged in the same AssetBundle as the shader
  • The dropdown automatically lists all Cubemap assets found in the bundle
  • defaultAssetName (optional): specifies the default Cubemap selection

JSON:
{ "name": "_CubemapTex", "displayName": "Environment Map", "type": "cubemap", "defaultAssetName": "MyCubemap" }







1. Material Slot Limit: 10 → 50

The original plugin hardcoded a limit of 10 material slots for Clothing/CUA mode. Any CUA or clothing item with more than 10 materials could not have its extra slots controlled.

The improved version raises the limit to 50 Clothing/CUA slots (skin slots remain at 30), supporting large CUAs and high-material-count clothing items.



2. New Property Type: vector4

The original only supported 3D vectors (vector = XYZ).
The improved version adds vector4, providing four sliders (X/Y/Z/W) for shader properties that require a Vector4 parameter (e.g. packed tiling+offset, custom parameter groups).

JSON:
{
  "name": "_TilingOffset",
  "displayName": "Tiling & Offset",
  "type": "vector4",
  "defaultVector4": { "x": 1.0, "y": 1.0, "z": 0.0, "w": 0.0 },
  "minVector4":     { "x": 0.1, "y": 0.1, "z": -2.0, "w": -2.0 },
  "maxVector4":     { "x": 10.0, "y": 10.0, "z": 2.0, "w": 2.0 }
}



3. New Property Type: label — Section Headers

The original had no way to group properties visually — everything was stacked without structure.
The improved version introduces the label type, which inserts a colored banner to visually separate property groups.

  • defaultColor: Banner background color (supports #RRGGBB hex or named colors)
  • textColor: Text color; if omitted, black or white is chosen automatically based on background luminance
  • height, fontSize: Control banner dimensions

JSON:
{ "name": "", "displayName": "─── Base Colors ───", "type": "label", "defaultColor": "#1a2a4a", "height": 45, "fontSize": 26 },
{ "name": "", "displayName": "─── Lighting ───",    "type": "label", "defaultColor": "#2a1a1a", "textColor": "#ffcc88", "height": 45, "fontSize": 26 }



4. New Property Type: column — Left/Right Column Toggle

The original placed all shader properties in the right column only (hardcoded rightSide = true), leaving the left column completely empty.
The improved version adds the column type — inserting it switches all subsequent properties to the other column, enabling a balanced two-column layout.

JSON:
{ "name": "_Color",    "displayName": "Base Color", "type": "color", "defaultColor": "white" },
{ "name": "_Emission", "displayName": "Emission",   "type": "color", "defaultColor": "black" },
{ "name": "", "displayName": "", "type": "column" },
{ "name": "_Metallic", "displayName": "Metallic",   "type": "float", "defaultValue": 0.0, "minValue": 0.0, "maxValue": 1.0 },
{ "name": "_Gloss",    "displayName": "Smoothness", "type": "float", "defaultValue": 0.5, "minValue": 0.0, "maxValue": 1.0 }

The two color pickers appear in the right column; after column, the sliders switch to the left column.



5. New Property Type: tab — Tab-Based Layout

The original had no tab support — large property lists required endless scrolling.
The improved version integrates CustomTabUI: placing a tab entry in the JSON creates a tab button at the top of the plugin UI, and all subsequent properties are grouped under that tab.

JSON:
{ "name": "", "displayName": "Basic", "type": "tab", "tabWidth": 100 },
{ "name": "_Color",    "displayName": "Base Color", "type": "color", "defaultColor": "white" },
{ "name": "_Metallic", "displayName": "Metallic",   "type": "float", "defaultValue": 0.0, "minValue": 0.0, "maxValue": 1.0 },

{ "name": "", "displayName": "Textures", "type": "tab", "tabWidth": 100 },
{ "name": "_MainTex",  "displayName": "Albedo",     "type": "texture", "wrapMode": "Repeat" },
{ "name": "_BumpMap",  "displayName": "Normal Map", "type": "texture", "wrapMode": "Repeat" }



toggle: New keyword Field — Shader Keyword Control

The original toggle only set a shader property's float value (0/1), with no ability to control #pragma multi_compile keyword branches.

The improved version adds an optional keyword field — toggling the switch also calls EnableKeyword / DisableKeyword.

JSON:
{ "name": "_UseNormalMap", "displayName": "Enable Normal Map", "type": "toggle", "defaultValueBool": false, "keyword": "USE_NORMAL_MAP" },
{ "name": "_UseEmission",  "displayName": "Enable Emission",   "type": "toggle", "defaultValueBool": false, "keyword": "EMISSION_ON" }

Corresponding shader code:
Code:
#pragma multi_compile_local _ USE_NORMAL_MAP
#pragma multi_compile_local _ EMISSION_ON



texture: New wrapMode Field

The original applied the default wrap mode to all textures with no way to override it. The improved version lets you specify wrap mode per texture:

ValueBehavior
Repeat (default)Tile and repeat
Clamp
MirrorMirrored tiling
[TD]Stretch edges — ideal for masks/gradients[/TD]

JSON:
{ "name": "_MainTex", "displayName": "Albedo",    "type": "texture", "wrapMode": "Repeat" },
{ "name": "_MaskTex", "displayName": "Mask",      "type": "texture", "wrapMode": "Clamp" },
{ "name": "_FlowMap", "displayName": "Flow Map",  "type": "texture", "wrapMode": "Mirror" }



✦ New Features (continued)



8. texture: New Clear Button

The original provided no way to clear a selected texture without reloading the entire shader properties UI.

The improved version adds a Clear button (dark red) next to every texture property:
  • Sets the texture on all active material slots to null via SetTexture(name, null)
  • Simultaneously clears the path display field



9. Toggle Controls: Unified 14mhz Pill Style

The original used VAM's native checkbox (CreateToggle), which looked inconsistent alongside other CustomUI elements.

The improved version replaces all toggle controls — material slot toggles, skin slot toggles, and shader property toggles — with BaseSliderToggleUI (14mhz pill-style). A deferred coroutine calls apply() after Unity layout settles, resolving the sze=0 rendering issue that caused toggles to appear as tiny dots on first load.



10. UI Color Scheme: Dark Sci-Fi Blue-Purple Theme

All section headers and the Tab container now use a consistent dark sci-fi blue-purple palette:

AreaColor
Shader Properties headerDeep navy #1E2860
CUA headerDeep purple #731A8C
Clothing headerDeep blue-violet #381485
Skin headerDeep cyan-blue #006BA6
Tab container backgroundDeep blue-black #121733
Tab inactive textSemi-transparent blue-grey
Tab active textBright cyan-blue



✦ Full Configuration Example: Clothing Shader

Demonstrates label grouping / two-column layout / keyword / time animation / vector4

JSON:
[
  { "name": "", "displayName": "─── Colors ───", "type": "label", "defaultColor": "#1a1a2e", "height": 42 },
  { "name": "_Color",      "displayName": "Base Color",  "type": "color", "defaultColor": "#888888" },
  { "name": "", "displayName": "", "type": "column" },
  { "name": "_Metallic",   "displayName": "Metallic",    "type": "float", "defaultValue": 0.8, "minValue": 0.0, "maxValue": 1.0 },
  { "name": "_Smoothness", "displayName": "Smoothness",  "type": "float", "defaultValue": 0.6, "minValue": 0.0, "maxValue": 1.0 },
  { "name": "", "displayName": "─── Textures ───", "type": "label", "defaultColor": "#1a2e1a", "height": 42 },
  { "name": "_MainTex",    "displayName": "Albedo",      "type": "texture", "wrapMode": "Repeat" },
  { "name": "_BumpMap",    "displayName": "Normal Map",  "type": "texture", "wrapMode": "Repeat" },
  { "name": "_UseNormal",  "displayName": "Enable Normal", "type": "toggle", "defaultValueBool": true, "keyword": "USE_NORMAL_MAP" },
  { "name": "", "displayName": "─── Dynamic ───", "type": "label", "defaultColor": "#2e1a2e", "height": 42 },
  { "name": "_CustomTime", "displayName": "Time Animation", "type": "time" },
  { "name": "_TilingOffset", "displayName": "Tiling/Offset", "type": "vector4",
    "defaultVector4": { "x": 1.0, "y": 1.0, "z": 0.0, "w": 0.0 },
    "minVector4":     { "x": 0.1, "y": 0.1, "z": -2.0, "w": -2.0 },
    "maxVector4":     { "x": 10.0, "y": 10.0, "z": 2.0, "w": 2.0 } }
]

✦ Demo Video

QQ20260308-182046.png
React to this content...

Share this resource

More resources from lulu_c137

Latest updates

  1. Cubemaps support

    New Property Type: cubemap — Load Cubemaps from AssetBundle New version adds the cubemap...
  2. bugs fixed

    Fixed known bugs and optimized the UI.

Latest reviews

Positive
Version: 3.0
This seems powerful. I am not a creator but thank you giving people more abilities to create.
Upvote 0
Positive
Version: 2.0
Posted:
First of all, the original creator of the plug-in
I want to say thank you to reguise
After that, I would like to thank lulu_c137 for modifying and improving the plug-in for our hub user.
There are many key elements of the plug-in
It means that we have increased the resources to apply shaders.
Thank you very much.
Upvote 0
Back
Top Bottom