206 lines
11 KiB
C#
206 lines
11 KiB
C#
using UnityEngine;
|
|
|
|
namespace NiloToon.NiloToonURP
|
|
{
|
|
[CreateAssetMenu(fileName = "NiloToonShaderStrippingSettingSO", menuName = "NiloToon/NiloToonShaderStrippingSettingSO", order = 0)]
|
|
public class NiloToonShaderStrippingSettingSO : ScriptableObject
|
|
{
|
|
// if user didn't assign stripping setting in NiloToonAllInOneRendererFeature, will use C# hardcode per platform settings here
|
|
public Settings DefaultSettings = new Settings();
|
|
|
|
// iOS/Android/WebGL platform will easily out of memory crash, so we strip all shader keywords by default, except _NILOTOON_RECEIVE_SELF_SHADOW
|
|
[Header("Android Override")]
|
|
public bool ShouldOverrideSettingForAndroid = true;
|
|
public Settings AndroidSettings = new Settings(
|
|
include_NILOTOON_DEBUG_SHADING: false,
|
|
include_NILOTOON_FORCE_MINIMUM_SHADER: false,
|
|
include_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE: false,
|
|
include_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE_V2: false,
|
|
include_NILOTOON_RECEIVE_URP_SHADOWMAPPING: false,
|
|
include_NILOTOON_RECEIVE_SELF_SHADOW: true, // enabled
|
|
include_NILOTOON_DITHER_FADEOUT: false,
|
|
include_NILOTOON_DISSOLVE: false,
|
|
include_NILOTOON_PERCHARACTER_BASEMAP_OVERRIDE: false,
|
|
include_STEREO_INSTANCING_ON: false,
|
|
include_STEREO_MULTIVIEW_ON: false,
|
|
include_STEREO_CUBEMAP_RENDER_ON: false,
|
|
include_UNITY_SINGLE_PASS_STEREO: false);
|
|
|
|
[Header("iOS Override")]
|
|
public bool ShouldOverrideSettingForIOS = true;
|
|
public Settings iOSSettings = new Settings(
|
|
include_NILOTOON_DEBUG_SHADING: false,
|
|
include_NILOTOON_FORCE_MINIMUM_SHADER: false,
|
|
include_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE: false,
|
|
include_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE_V2: false,
|
|
include_NILOTOON_RECEIVE_URP_SHADOWMAPPING: false,
|
|
include_NILOTOON_RECEIVE_SELF_SHADOW: true, // enabled
|
|
include_NILOTOON_DITHER_FADEOUT: false,
|
|
include_NILOTOON_DISSOLVE: false,
|
|
include_NILOTOON_PERCHARACTER_BASEMAP_OVERRIDE: false,
|
|
include_STEREO_INSTANCING_ON: false,
|
|
include_STEREO_MULTIVIEW_ON: false,
|
|
include_STEREO_CUBEMAP_RENDER_ON: false,
|
|
include_UNITY_SINGLE_PASS_STEREO: false);
|
|
|
|
[Header("WebGL Override")]
|
|
public bool ShouldOverrideSettingForWebGL = true;
|
|
public Settings WebGLSettings = new Settings(
|
|
include_NILOTOON_DEBUG_SHADING: false,
|
|
include_NILOTOON_FORCE_MINIMUM_SHADER: false,
|
|
include_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE: false,
|
|
include_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE_V2: false,
|
|
include_NILOTOON_RECEIVE_URP_SHADOWMAPPING: false,
|
|
include_NILOTOON_RECEIVE_SELF_SHADOW: true, // enabled
|
|
include_NILOTOON_DITHER_FADEOUT: false,
|
|
include_NILOTOON_DISSOLVE: false,
|
|
include_NILOTOON_PERCHARACTER_BASEMAP_OVERRIDE: false,
|
|
include_STEREO_INSTANCING_ON: false,
|
|
include_STEREO_MULTIVIEW_ON: false,
|
|
include_STEREO_CUBEMAP_RENDER_ON: false,
|
|
include_UNITY_SINGLE_PASS_STEREO: false);
|
|
|
|
[System.Serializable]
|
|
public class Settings
|
|
{
|
|
[HelpBox(
|
|
"If a feature is missing in build, enable it to include it in build.\n" +
|
|
"* Disabling unneeded features can reduce build time, build size and runtime memory usage drastically. (2^n)")]
|
|
|
|
//---------------------------------------------------------------------------------------
|
|
[Header("Character Shadow Mapping")]
|
|
|
|
[OverrideDisplayName("NiloToon character's self shadow map")]
|
|
[Tooltip("Default enable for all platforms, since NiloToon's self shadow map is a core visual feature of NiloToon." +
|
|
"\n\n" +
|
|
"Keyword: _NILOTOON_RECEIVE_SELF_SHADOW\n\n" +
|
|
"Default value:\n" +
|
|
"- All platforms: true")]
|
|
public bool include_NILOTOON_RECEIVE_SELF_SHADOW = true;
|
|
|
|
[OverrideDisplayName("URP's main light shadow map")]
|
|
[Tooltip("Default disable for all platforms, since NiloToon's self shadow map is usually better than URP's main light shadow map in terms of quality" +
|
|
"\n\n" +
|
|
"Keyword: _NILOTOON_RECEIVE_URP_SHADOWMAPPING\n\n" +
|
|
"Default value:\n" +
|
|
"- All platforms: false")]
|
|
public bool include_NILOTOON_RECEIVE_URP_SHADOWMAPPING = false;
|
|
|
|
//---------------------------------------------------------------------------------------
|
|
[Header("NiloToonPerCharacterRenderController features")]
|
|
|
|
[OverrideDisplayName("Dither Fadeout")]
|
|
[Tooltip("It is enabled by default because Warudo (PC Standalone) relies on it." +
|
|
"\n\n" +
|
|
"keyword: _NILOTOON_DITHER_FADEOUT\n\n" +
|
|
"Default value:\n" +
|
|
"- Default: true\n" +
|
|
"- Adnroid/iOS/WebGL: false")]
|
|
public bool include_NILOTOON_DITHER_FADEOUT = true;
|
|
|
|
[OverrideDisplayName("Dissolve")]
|
|
[Tooltip("It is enabled by default because Warudo (PC Standalone) relies on it." +
|
|
"\n\n" +
|
|
"keyword: _NILOTOON_DISSOLVE\n\n" +
|
|
"Default value:\n" +
|
|
"- Default: true\n" +
|
|
"- Adnroid/iOS/WebGL: false")]
|
|
public bool include_NILOTOON_DISSOLVE = true;
|
|
|
|
[OverrideDisplayName("BaseMap Override")]
|
|
[Tooltip("keyword: _NILOTOON_PERCHARACTER_BASEMAP_OVERRIDE\n\n" +
|
|
"Default value:\n" +
|
|
"- All platforms: false")]
|
|
public bool include_NILOTOON_PERCHARACTER_BASEMAP_OVERRIDE = false;
|
|
|
|
//---------------------------------------------------------------------------------------
|
|
[Header("Screen Space Outline")]
|
|
|
|
[OverrideDisplayName("Screen Space Outline V1")]
|
|
[Tooltip("keyword: _NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE\n\n" +
|
|
"Default value:\n" +
|
|
"- All platforms: false")]
|
|
public bool include_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE = false;
|
|
|
|
[OverrideDisplayName("Screen Space Outline V2")]
|
|
[Tooltip("keyword: _NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE_V2\n\n" +
|
|
"Default value:\n" +
|
|
"- All platforms: false")]
|
|
public bool include_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE_V2 = false;
|
|
|
|
//---------------------------------------------------------------------------------------
|
|
[Header("Character Debug")]
|
|
|
|
[OverrideDisplayName("Debug Shading")]
|
|
[Tooltip("keyword: _NILOTOON_DEBUG_SHADING\n\n" +
|
|
"Default value:\n" +
|
|
"- All platforms: false")]
|
|
public bool include_NILOTOON_DEBUG_SHADING = false;
|
|
|
|
[OverrideDisplayName("Force Minimum Shader")]
|
|
[Tooltip("keyword: _NILOTOON_FORCE_MINIMUM_SHADER\n\n" +
|
|
"Default value:\n" +
|
|
"- All platforms: false")]
|
|
public bool include_NILOTOON_FORCE_MINIMUM_SHADER = false;
|
|
|
|
[Header("XR")]
|
|
|
|
[OverrideDisplayName("STEREO_INSTANCING_ON")]
|
|
[Tooltip("keyword: STEREO_INSTANCING_ON\n\n" +
|
|
"Default value:\n" +
|
|
"- All platforms: false")]
|
|
public bool include_STEREO_INSTANCING_ON = false;
|
|
|
|
[OverrideDisplayName("STEREO_MULTIVIEW_ON")]
|
|
[Tooltip("keyword: STEREO_MULTIVIEW_ON\n\n" +
|
|
"Default value:\n" +
|
|
"- All platforms: false")]
|
|
public bool include_STEREO_MULTIVIEW_ON = false;
|
|
|
|
[OverrideDisplayName("STEREO_CUBEMAP_RENDER_ON")]
|
|
[Tooltip("keyword: STEREO_CUBEMAP_RENDER_ON\n\n" +
|
|
"Default value:\n" +
|
|
"- All platforms: false")]
|
|
public bool include_STEREO_CUBEMAP_RENDER_ON = false;
|
|
|
|
[OverrideDisplayName("UNITY_SINGLE_PASS_STEREO")]
|
|
[Tooltip("keyword: UNITY_SINGLE_PASS_STEREO\n\n" +
|
|
"Default value:\n" +
|
|
"- All platforms: false")]
|
|
public bool include_UNITY_SINGLE_PASS_STEREO = false;
|
|
|
|
public Settings() { }
|
|
public Settings(
|
|
bool include_NILOTOON_DEBUG_SHADING,
|
|
bool include_NILOTOON_FORCE_MINIMUM_SHADER,
|
|
bool include_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE,
|
|
bool include_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE_V2,
|
|
bool include_NILOTOON_RECEIVE_URP_SHADOWMAPPING,
|
|
bool include_NILOTOON_RECEIVE_SELF_SHADOW,
|
|
bool include_NILOTOON_DITHER_FADEOUT,
|
|
bool include_NILOTOON_DISSOLVE,
|
|
bool include_NILOTOON_PERCHARACTER_BASEMAP_OVERRIDE,
|
|
bool include_STEREO_INSTANCING_ON,
|
|
bool include_STEREO_MULTIVIEW_ON,
|
|
bool include_STEREO_CUBEMAP_RENDER_ON,
|
|
bool include_UNITY_SINGLE_PASS_STEREO
|
|
)
|
|
{
|
|
this.include_NILOTOON_DEBUG_SHADING = include_NILOTOON_DEBUG_SHADING;
|
|
this.include_NILOTOON_FORCE_MINIMUM_SHADER = include_NILOTOON_FORCE_MINIMUM_SHADER;
|
|
this.include_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE = include_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE;
|
|
this.include_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE_V2 = include_NILOTOON_GLOBAL_ENABLE_SCREENSPACE_OUTLINE_V2;
|
|
this.include_NILOTOON_RECEIVE_URP_SHADOWMAPPING = include_NILOTOON_RECEIVE_URP_SHADOWMAPPING;
|
|
this.include_NILOTOON_RECEIVE_SELF_SHADOW = include_NILOTOON_RECEIVE_SELF_SHADOW;
|
|
this.include_NILOTOON_DITHER_FADEOUT = include_NILOTOON_DITHER_FADEOUT;
|
|
this.include_NILOTOON_DISSOLVE = include_NILOTOON_DISSOLVE;
|
|
this.include_NILOTOON_PERCHARACTER_BASEMAP_OVERRIDE = include_NILOTOON_PERCHARACTER_BASEMAP_OVERRIDE;
|
|
|
|
this.include_STEREO_INSTANCING_ON = include_STEREO_INSTANCING_ON;
|
|
this.include_STEREO_MULTIVIEW_ON = include_STEREO_MULTIVIEW_ON;
|
|
this.include_STEREO_CUBEMAP_RENDER_ON = include_STEREO_CUBEMAP_RENDER_ON;
|
|
this.include_UNITY_SINGLE_PASS_STEREO = include_UNITY_SINGLE_PASS_STEREO;
|
|
}
|
|
}
|
|
}
|
|
} |