diff --git a/Assets/External/BioIK/Demo/Materials/Blue.mat b/Assets/External/BioIK/Demo/Materials/Blue.mat index 1055ceb5..aac93ce6 100644 --- a/Assets/External/BioIK/Demo/Materials/Blue.mat +++ b/Assets/External/BioIK/Demo/Materials/Blue.mat @@ -14,7 +14,7 @@ Material: m_ValidKeywords: - _EMISSION m_InvalidKeywords: [] - m_LightmapFlags: 1 + m_LightmapFlags: 7 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 @@ -136,4 +136,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/BioIK/Demo/Materials/Box.mat b/Assets/External/BioIK/Demo/Materials/Box.mat index 328895d9..b8dc679a 100644 --- a/Assets/External/BioIK/Demo/Materials/Box.mat +++ b/Assets/External/BioIK/Demo/Materials/Box.mat @@ -14,7 +14,7 @@ Material: m_ValidKeywords: - _EMISSION m_InvalidKeywords: [] - m_LightmapFlags: 1 + m_LightmapFlags: 7 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 @@ -136,4 +136,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/BioIK/Demo/Materials/Green.mat b/Assets/External/BioIK/Demo/Materials/Green.mat index 645a410d..b5420ade 100644 --- a/Assets/External/BioIK/Demo/Materials/Green.mat +++ b/Assets/External/BioIK/Demo/Materials/Green.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/BioIK/Demo/Materials/Ground.mat b/Assets/External/BioIK/Demo/Materials/Ground.mat index 175853c6..37aa6b70 100644 --- a/Assets/External/BioIK/Demo/Materials/Ground.mat +++ b/Assets/External/BioIK/Demo/Materials/Ground.mat @@ -14,7 +14,7 @@ Material: m_ValidKeywords: - _EMISSION m_InvalidKeywords: [] - m_LightmapFlags: 1 + m_LightmapFlags: 7 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 @@ -136,4 +136,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/BioIK/Demo/Materials/Red.mat b/Assets/External/BioIK/Demo/Materials/Red.mat index a330d680..6e539c54 100644 --- a/Assets/External/BioIK/Demo/Materials/Red.mat +++ b/Assets/External/BioIK/Demo/Materials/Red.mat @@ -14,7 +14,7 @@ Material: m_ValidKeywords: - _EMISSION m_InvalidKeywords: [] - m_LightmapFlags: 1 + m_LightmapFlags: 7 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 @@ -136,4 +136,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/BioIK/Demo/Materials/Target.mat b/Assets/External/BioIK/Demo/Materials/Target.mat index 84de9c58..240471a8 100644 --- a/Assets/External/BioIK/Demo/Materials/Target.mat +++ b/Assets/External/BioIK/Demo/Materials/Target.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -27,7 +27,7 @@ Material: m_ValidKeywords: - _EMISSION m_InvalidKeywords: [] - m_LightmapFlags: 0 + m_LightmapFlags: 6 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 diff --git a/Assets/External/BioIK/Demo/Materials/Wall.mat b/Assets/External/BioIK/Demo/Materials/Wall.mat index 4924d7df..74fa43b0 100644 --- a/Assets/External/BioIK/Demo/Materials/Wall.mat +++ b/Assets/External/BioIK/Demo/Materials/Wall.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -27,7 +27,7 @@ Material: m_ValidKeywords: - _EMISSION m_InvalidKeywords: [] - m_LightmapFlags: 1 + m_LightmapFlags: 7 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 diff --git a/Assets/External/BioIK/Demo/Robot Kyle/Materials/Robot_Color.mat b/Assets/External/BioIK/Demo/Robot Kyle/Materials/Robot_Color.mat index 86074c4c..cfb3d2ba 100644 --- a/Assets/External/BioIK/Demo/Robot Kyle/Materials/Robot_Color.mat +++ b/Assets/External/BioIK/Demo/Robot Kyle/Materials/Robot_Color.mat @@ -15,7 +15,7 @@ Material: - _EMISSION - _NORMALMAP m_InvalidKeywords: [] - m_LightmapFlags: 1 + m_LightmapFlags: 7 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 @@ -137,4 +137,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/Horizon Based Ambient Occlusion/SRP/URP/Demo/Materials/Dragons.mat b/Assets/External/Horizon Based Ambient Occlusion/SRP/URP/Demo/Materials/Dragons.mat index 2c5db591..ed7737df 100644 --- a/Assets/External/Horizon Based Ambient Occlusion/SRP/URP/Demo/Materials/Dragons.mat +++ b/Assets/External/Horizon Based Ambient Occlusion/SRP/URP/Demo/Materials/Dragons.mat @@ -133,4 +133,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/LEDScreenShader/Materials/LEDScreenAlpha.mat b/Assets/External/LEDScreenShader/Materials/LEDScreenAlpha.mat index 880b4b12..9bd2c180 100644 --- a/Assets/External/LEDScreenShader/Materials/LEDScreenAlpha.mat +++ b/Assets/External/LEDScreenShader/Materials/LEDScreenAlpha.mat @@ -108,4 +108,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/LEDScreenShader/Materials/LEDScreenDetailedURP.mat b/Assets/External/LEDScreenShader/Materials/LEDScreenDetailedURP.mat index c480db09..1c4870b7 100644 --- a/Assets/External/LEDScreenShader/Materials/LEDScreenDetailedURP.mat +++ b/Assets/External/LEDScreenShader/Materials/LEDScreenDetailedURP.mat @@ -120,4 +120,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/LEDScreenShader/Materials/LEDScreenSimple.mat b/Assets/External/LEDScreenShader/Materials/LEDScreenSimple.mat index 5bc44297..47471501 100644 --- a/Assets/External/LEDScreenShader/Materials/LEDScreenSimple.mat +++ b/Assets/External/LEDScreenShader/Materials/LEDScreenSimple.mat @@ -119,4 +119,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_Floor.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_Floor.mat index 814314c1..e75b1e12 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_Floor.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_Floor.mat @@ -28,7 +28,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!114 &-2537191031519904044 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_Test_Back.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_Test_Back.mat index ce64f2fe..ae68f77d 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_Test_Back.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_Test_Back.mat @@ -199,4 +199,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_Test_Front.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_Test_Front.mat index 322d5b7e..d606521c 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_Test_Front.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_Test_Front.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_White.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_White.mat index 4fd42517..75309715 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_White.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Materials/MC2_White.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Model/Materials/Arrow.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Model/Materials/Arrow.mat index 0c11b764..b1e3909b 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Model/Materials/Arrow.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/Common/Model/Materials/Arrow.mat @@ -135,7 +135,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!114 &8771852287512767389 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/SB_def_mat.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/SB_def_mat.mat index ea8eb507..c1138f16 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/SB_def_mat.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/SB_def_mat.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!114 &-5755898939291106094 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/SB_nol_mat.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/SB_nol_mat.mat index c4a77e53..0dc73c45 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/SB_nol_mat.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/SB_nol_mat.mat @@ -117,7 +117,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!114 &5988364977265673585 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/SB_skin_mat.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/SB_skin_mat.mat index b6ee7216..7ca1a6ee 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/SB_skin_mat.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/SB_skin_mat.mat @@ -130,4 +130,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/def_mat.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/def_mat.mat index c3117e86..8b14002c 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/def_mat.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/def_mat.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!114 &-1839986918002453301 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/hair_mat.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/hair_mat.mat index 07c138ae..48b84cb1 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/hair_mat.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/hair_mat.mat @@ -130,4 +130,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/mouth_mat.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/mouth_mat.mat index 882236d6..59044bee 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/mouth_mat.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/mouth_mat.mat @@ -130,4 +130,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/nol_mat.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/nol_mat.mat index 91aa22f0..26dd958b 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/nol_mat.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/nol_mat.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/skin_mat.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/skin_mat.mat index cb43925d..c4dc4bab 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/skin_mat.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/SD_Kohaku_chanz/Materials/skin_mat.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Body Back.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Body Back.mat index a9cd7ed3..3f7c374e 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Body Back.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Body Back.mat @@ -373,7 +373,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!114 &5151949587641123878 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Body.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Body.mat index c2095291..bde3aeb3 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Body.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Body.mat @@ -389,7 +389,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!114 &7694048184109273949 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Eyes.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Eyes.mat index f66b2e09..3109cd38 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Eyes.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Eyes.mat @@ -402,4 +402,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Eyes_HL.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Eyes_HL.mat index 5678df5b..47462ca8 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Eyes_HL.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Eyes_HL.mat @@ -407,4 +407,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Face.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Face.mat index 42b8ad38..ad919034 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Face.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Face.mat @@ -25,7 +25,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Hair.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Hair.mat index b9caa920..bc323c93 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Hair.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Hair.mat @@ -386,7 +386,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!114 &6202150226457244543 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/HairPony.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/HairPony.mat index 8b616304..b784c4d1 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/HairPony.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/HairPony.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!114 &-7482000731104837112 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Headgear.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Headgear.mat index 4360070f..30426bb6 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Headgear.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Headgear.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/LongSleeve Back.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/LongSleeve Back.mat index 11f86b3f..36abf9be 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/LongSleeve Back.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/LongSleeve Back.mat @@ -373,7 +373,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!114 &1781190763146025199 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/LongSleeve.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/LongSleeve.mat index 11392b41..cf100497 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/LongSleeve.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/LongSleeve.mat @@ -389,7 +389,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!114 &6621973610829896646 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Skin.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Skin.mat index 42559980..4e8a1e47 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Skin.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/Skin.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!114 &-2976717314438926610 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/face3_main.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/face3_main.mat index 8f4c48a5..a257a470 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/face3_main.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/face3_main.mat @@ -198,4 +198,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/headExt.mat b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/headExt.mat index 5c016f5f..0285fc0c 100644 --- a/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/headExt.mat +++ b/Assets/External/MagicaCloth2/Example (Can be deleted)/UnityChan/UnityChanKAGURA/Materials/headExt.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!114 &-8324562969990519675 MonoBehaviour: m_ObjectHideFlags: 11 diff --git a/Assets/External/NiloToonURP/CHANGELOG.md b/Assets/External/NiloToonURP/CHANGELOG.md index 8de0b731..f00eb2df 100644 --- a/Assets/External/NiloToonURP/CHANGELOG.md +++ b/Assets/External/NiloToonURP/CHANGELOG.md @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3cf6a64a7edebcf281192cf6bb4893c2c362bc1e752843fe482f055d53ad1fd1 -size 245229 +oid sha256:214e2f9b7ccbca93ec03be1f96388de8593fa29ca3e91ddae78eeaf4acff86e8 +size 247233 diff --git a/Assets/External/NiloToonURP/Editor/MaterialConvertor/NiloToonMaterialConvertor.cs b/Assets/External/NiloToonURP/Editor/MaterialConvertor/NiloToonMaterialConvertor.cs index a2999e37..6019df4b 100644 --- a/Assets/External/NiloToonURP/Editor/MaterialConvertor/NiloToonMaterialConvertor.cs +++ b/Assets/External/NiloToonURP/Editor/MaterialConvertor/NiloToonMaterialConvertor.cs @@ -22,7 +22,7 @@ namespace NiloToon.NiloToonURP private static readonly int PerMaterialEnableDepthTextureRimLightAndShadow = Shader.PropertyToID("_PerMaterialEnableDepthTextureRimLightAndShadow"); - enum NiloToonSurfaceTypePreset + public enum NiloToonSurfaceTypePreset { Opaque_Outline = 0, Opaque = 1, @@ -552,7 +552,7 @@ namespace NiloToon.NiloToonURP string[] IsSkinFinalBanNames = new string[] { }; IsSkinFinalBanNames = IsSkinFinalBanNames.Concat(IsSkinBanNames).ToArray(); - //IsSkinFinalBanNames = IsSkinFinalBanNames.Concat(IsFaceBanNames).ToArray(); + IsSkinFinalBanNames = IsSkinFinalBanNames.Concat(IsFaceBanNames).ToArray(); //IsSkinFinalBanNames = IsSkinFinalBanNames.Concat(IsMouthBanNames).ToArray(); //---------------------------------------------------- List IsNoOutlineFinalTargetNames = @@ -1476,7 +1476,7 @@ namespace NiloToon.NiloToonURP // ... } - static void SetMaterialNiloToonSurfaceTypeAndProperties(Material m, + public static void SetMaterialNiloToonSurfaceTypeAndProperties(Material m, NiloToonSurfaceTypePreset niloToonSurfaceTypePreset) { // fix render queue when it is out of expected range diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/AssetProcessor/ShaderModifyListener.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/AssetProcessor/ShaderModifyListener.cs index f9df3338..7b019d84 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/AssetProcessor/ShaderModifyListener.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/AssetProcessor/ShaderModifyListener.cs @@ -19,6 +19,7 @@ namespace LWGUI { var shader = AssetDatabase.LoadAssetAtPath(assetPath); MetaDataHelper.ReleaseShaderMetadataCache(shader); + ReflectionHelper.InvalidatePropertyCache(shader); } } } diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/CustomGUISample/CustomMaterialAssetFinder.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/CustomGUISample/CustomMaterialAssetFinder.cs index 5be4e654..169af7f8 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/CustomGUISample/CustomMaterialAssetFinder.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/CustomGUISample/CustomMaterialAssetFinder.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using UnityEngine; using UnityEditor; diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/Helper.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/Helper.cs index 97266c62..01d5824c 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/Helper.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/Helper.cs @@ -4,8 +4,10 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; +using LWGUI.Timeline; using UnityEditor; using UnityEngine; +using UnityEngine.Rendering; using Object = UnityEngine.Object; namespace LWGUI @@ -13,81 +15,68 @@ namespace LWGUI /// /// Misc Function /// - public class Helper + public static class Helper { - #region Engine Misc - - public static void ObsoleteWarning(string obsoleteStr, string newStr) - { - Debug.LogWarning("LWGUI: '" + obsoleteStr + "' is Obsolete! Please use '" + newStr + "'!"); - } - - public static bool PropertyValueEquals(MaterialProperty prop1, MaterialProperty prop2) - { - if (prop1.textureValue == prop2.textureValue - && prop1.vectorValue == prop2.vectorValue - && prop1.colorValue == prop2.colorValue - && prop1.floatValue == prop2.floatValue - && prop1.intValue == prop2.intValue - ) - return true; - else - return false; - } + + #region Misc + + public static readonly string ProjectPath = Application.dataPath.Substring(0, Application.dataPath.Length - 6); public static bool IsPropertyHideInInspector(MaterialProperty prop) { - return (prop.flags & MaterialProperty.PropFlags.HideInInspector) != 0; + return (prop.GetPropertyFlags() & ShaderPropertyFlags.HideInInspector) != 0; } - public static string GetKeyWord(string keyWord, string propName) + public static bool StringToBool(string str) => str?.ToLower() is "on" or "true"; + + public static string GetKeywordName(string keyword, string propName) { string k; - if (string.IsNullOrEmpty(keyWord) || keyWord == "__") + if (string.IsNullOrEmpty(keyword) || keyword == "__") { k = propName.ToUpperInvariant() + "_ON"; } else { - k = keyWord.ToUpperInvariant(); + k = keyword.ToUpperInvariant(); } return k; } - public static void SetShaderKeyWord(Object[] materials, string keyWord, bool isEnable) + public static void SetShaderKeywordEnabled(Object[] materials, string keywordName, bool isEnable) { - if (string.IsNullOrEmpty(keyWord) || string.IsNullOrEmpty(keyWord)) return; + if (string.IsNullOrEmpty(keywordName) || string.IsNullOrEmpty(keywordName)) return; foreach (Material m in materials) { // delete "_" keywords - if (keyWord == "_") + if (keywordName == "_") { - if (m.IsKeywordEnabled(keyWord)) + if (m.IsKeywordEnabled(keywordName)) { - m.DisableKeyword(keyWord); + m.DisableKeyword(keywordName); } continue; } - if (m.IsKeywordEnabled(keyWord)) + if (m.IsKeywordEnabled(keywordName)) { - if (!isEnable) m.DisableKeyword(keyWord); + if (!isEnable) m.DisableKeyword(keywordName); } else { - if (isEnable) m.EnableKeyword(keyWord); + if (isEnable) m.EnableKeyword(keywordName); } } } - public static void SetShaderKeyWord(Object[] materials, string[] keyWords, int index) + public static void SelectShaderKeyword(Object[] materials, string[] keywordNames, int index) { - Debug.Assert(keyWords.Length >= 1 && index < keyWords.Length && index >= 0, - "KeyWords Length: " + keyWords.Length + " or Index: " + index + " Error! "); - for (int i = 0; i < keyWords.Length; i++) + Debug.Assert(keywordNames.Length >= 1 && index < keywordNames.Length && index >= 0, + "KeyWords Length: " + keywordNames.Length + " or Index: " + index + " Error! "); + for (int i = 0; i < keywordNames.Length; i++) { - SetShaderKeyWord(materials, keyWords[i], index == i); + SetShaderKeywordEnabled(materials, keywordNames[i], index == i); } } @@ -161,6 +150,23 @@ namespace LWGUI #region Math + public const double Float_Epsilon = 1e-10; + + public static bool Approximately(float a, float b) => Mathf.Abs(a - b) < Float_Epsilon; + + public static bool PropertyValueEquals(MaterialProperty prop1, MaterialProperty prop2) + { + if (prop1.textureValue == prop2.textureValue + && prop1.vectorValue == prop2.vectorValue + && prop1.colorValue == prop2.colorValue + && Approximately(prop1.floatValue, prop2.floatValue) + && prop1.intValue == prop2.intValue + ) + return true; + else + return false; + } + public static float PowPreserveSign(float f, float p) { float num = Mathf.Pow(Mathf.Abs(f), p); @@ -191,6 +197,9 @@ namespace LWGUI private static GUIStyle _guiStyle_Helpbox; public static GUIStyle guiStyle_Helpbox => _guiStyle_Helpbox ?? new GUIStyle(EditorStyles.helpBox) { fontSize = 12 }; + + private static GUIStyle _guiStyle_RampSelectButton; + public static GUIStyle guiStyle_RampSelectButton => _guiStyle_RampSelectButton ?? new GUIStyle(EditorStyles.miniButton) { alignment = TextAnchor.MiddleLeft }; private static GUIStyle _guiStyles_ToolbarSearchTextFieldPopup; public static GUIStyle guiStyles_ToolbarSearchTextFieldPopup @@ -223,7 +232,7 @@ namespace LWGUI #endregion - #region Draw GUI for Drawer + #region Draw GUI for Drawers // TODO: use Reflection // copy and edit of https://github.com/GucioDevs/SimpleMinMaxSlider/blob/master/Assets/SimpleMinMaxSlider/Scripts/Editor/MinMaxSliderDrawer.cs @@ -294,10 +303,34 @@ namespace LWGUI return toggleValue; } + public static bool ToggleButton(Rect position, GUIContent label, bool on, GUIStyle style = null, float padding = 0) + { + var paddedRect = new Rect(position.x + padding, position.y, position.width - padding * 2, position.height); + style ??= EditorStyles.miniButton; + + bool flag = GUI.Button(paddedRect, label, style); + if (Event.current.type == EventType.Repaint) + { + bool isHover = paddedRect.Contains(Event.current.mousePosition); + style.Draw(position, label, isHover, false, on, false); + } + + return flag; + } + + public static void DrawShaderPropertyWithErrorLabel(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor, string message) + { + var c = GUI.color; + GUI.color = Color.red; + var newLabel = $"{ label.text } ({ message })"; + editor.DefaultShaderProperty(position, prop, newLabel); + GUI.color = c; + } + #endregion - #region Draw GUI for Material + #region Draw GUI for Materials public static void DrawSplitLine() { @@ -431,10 +464,10 @@ namespace LWGUI Undo.RecordObjects(targetMaterials, "LWGUI: Paste Material Properties"); foreach (Material material in targetMaterials) { - for (int i = 0; i < ShaderUtil.GetPropertyCount(_copiedMaterial.shader); i++) + for (int i = 0; i < _copiedMaterial.shader.GetPropertyCount(); i++) { - var name = ShaderUtil.GetPropertyName(_copiedMaterial.shader, i); - var type = ShaderUtil.GetPropertyType(_copiedMaterial.shader, i); + var name = _copiedMaterial.shader.GetPropertyName(i); + var type = _copiedMaterial.shader.GetPropertyType(i); PastePropertyValueToMaterial(material, name, name, type, valueMask); } if ((valueMask & (uint)CopyMaterialValueMask.Keyword) != 0) @@ -446,31 +479,31 @@ namespace LWGUI private static void PastePropertyValueToMaterial(Material material, string srcName, string dstName) { - for (int i = 0; i < ShaderUtil.GetPropertyCount(_copiedMaterial.shader); i++) + for (int i = 0; i < _copiedMaterial.shader.GetPropertyCount(); i++) { - var name = ShaderUtil.GetPropertyName(_copiedMaterial.shader, i); + var name = _copiedMaterial.shader.GetPropertyName(i); if (name == srcName) { - var type = ShaderUtil.GetPropertyType(_copiedMaterial.shader, i); + var type = _copiedMaterial.shader.GetPropertyType(i); PastePropertyValueToMaterial(material, srcName, dstName, type); return; } } } - private static void PastePropertyValueToMaterial(Material material, string srcName, string dstName, ShaderUtil.ShaderPropertyType type, uint valueMask = (uint)CopyMaterialValueMask.All) + private static void PastePropertyValueToMaterial(Material material, string srcName, string dstName, ShaderPropertyType type, uint valueMask = (uint)CopyMaterialValueMask.All) { switch (type) { - case ShaderUtil.ShaderPropertyType.Color: + case ShaderPropertyType.Color: if ((valueMask & (uint)CopyMaterialValueMask.Vector) != 0) material.SetColor(dstName, _copiedMaterial.GetColor(srcName)); break; - case ShaderUtil.ShaderPropertyType.Vector: + case ShaderPropertyType.Vector: if ((valueMask & (uint)CopyMaterialValueMask.Vector) != 0) material.SetVector(dstName, _copiedMaterial.GetVector(srcName)); break; - case ShaderUtil.ShaderPropertyType.TexEnv: + case ShaderPropertyType.Texture: if ((valueMask & (uint)CopyMaterialValueMask.Texture) != 0) material.SetTexture(dstName, _copiedMaterial.GetTexture(srcName)); break; @@ -580,10 +613,10 @@ namespace LWGUI // Build Display Mode Menu Items var displayModeMenus = new[] { - "Show All Advanced Properties (" + displayModeData.advancedCount + " of " + perShaderData.propStaticDatas.Count + ")", - "Show All Hidden Properties (" + displayModeData.hiddenCount + " of " + perShaderData.propStaticDatas.Count + ")", - "Show Only Modified Properties (" + perMaterialData.modifiedCount + " of " + perShaderData.propStaticDatas.Count + ")", - "Show Only Modified Properties by Group (" + perMaterialData.modifiedCount + " of " + perShaderData.propStaticDatas.Count + ")", + $"Show All Advanced Properties ({ displayModeData.advancedCount } - { perShaderData.propStaticDatas.Count })", + $"Show All Hidden Properties ({ displayModeData.hiddenCount } - { perShaderData.propStaticDatas.Count })", + $"Show Only Modified Properties ({ perMaterialData.modifiedCount } - { perShaderData.propStaticDatas.Count })", + $"Show Only Modified Properties by Group ({ perMaterialData.modifiedCount } - { perShaderData.propStaticDatas.Count })", }; var enabled = new[] { true, true, true, true }; var separator = new bool[4]; @@ -740,7 +773,7 @@ namespace LWGUI #region Context Menu - private static void EditPresetEvent(string mode, ShaderPropertyPreset presetAsset, List targetPresets, MaterialProperty prop, LWGUIMetaDatas metaDatas) + private static void EditPresetEvent(string mode, LwguiShaderPropertyPreset presetAsset, List targetPresets, MaterialProperty prop, LWGUIMetaDatas metaDatas) { if (!VersionControlHelper.Checkout(presetAsset)) { @@ -772,15 +805,15 @@ namespace LWGUI var (perShaderData, perMaterialData, perInspectorData) = metaDatas.GetDatas(); var (propStaticData, propDynamicData) = metaDatas.GetPropDatas(prop); - var menus = new GenericMenu(); + var menu = new GenericMenu(); // 2022+ Material Varant Menus #if UNITY_2022_1_OR_NEWER - ReflectionHelper.HandleApplyRevert(menus, prop); + ReflectionHelper.HandleApplyRevert(menu, prop); #endif // Copy - menus.AddItem(new GUIContent("Copy"), false, () => + menu.AddItem(new GUIContent("Copy"), false, () => { _copiedMaterial = UnityEngine.Object.Instantiate(metaDatas.GetMaterial()); _copiedProps.Clear(); @@ -859,20 +892,20 @@ namespace LWGUI }; if (_copiedMaterial != null && _copiedProps.Count > 0 && GUI.enabled) - menus.AddItem(new GUIContent("Paste"), false, pasteAction); + menu.AddItem(new GUIContent("Paste"), false, pasteAction); else - menus.AddDisabledItem(new GUIContent("Paste")); + menu.AddDisabledItem(new GUIContent("Paste")); - menus.AddSeparator(""); + menu.AddSeparator(""); // Copy Display Name - menus.AddItem(new GUIContent("Copy Display Name"), false, () => + menu.AddItem(new GUIContent("Copy Display Name"), false, () => { EditorGUIUtility.systemCopyBuffer = propStaticData.displayName; }); // Copy Property Names - menus.AddItem(new GUIContent("Copy Property Names"), false, () => + menu.AddItem(new GUIContent("Copy Property Names"), false, () => { EditorGUIUtility.systemCopyBuffer = prop.name; foreach (var extraPropName in propStaticData.extraPropNames) @@ -896,7 +929,7 @@ namespace LWGUI // Preset if (GUI.enabled) { - menus.AddSeparator(""); + menu.AddSeparator(""); foreach (var activePresetData in perMaterialData.activePresetDatas) { // Cull self @@ -912,22 +945,38 @@ namespace LWGUI if (activePreset.GetPropertyValue(prop.name) != null) { - menus.AddItem(new GUIContent("Update to Preset/" + presetPropDisplayName + "/" + "All"), false, () => EditPresetEvent("Update", presetAsset, presetAsset.presets, prop, metaDatas)); - menus.AddItem(new GUIContent("Update to Preset/" + presetPropDisplayName + "/" + activePreset.presetName), false, () => EditPresetEvent("Update", presetAsset, new List(){activePreset}, prop, metaDatas)); - menus.AddItem(new GUIContent("Remove from Preset/" + presetPropDisplayName + "/" + "All"), false, () => EditPresetEvent("Remove", presetAsset, presetAsset.presets, prop, metaDatas)); - menus.AddItem(new GUIContent("Remove from Preset/" + presetPropDisplayName + "/" + activePreset.presetName), false, () => EditPresetEvent("Remove", presetAsset, new List(){activePreset}, prop, metaDatas)); + menu.AddItem(new GUIContent("Update to Preset/" + presetPropDisplayName + "/" + "All"), false, () => EditPresetEvent("Update", presetAsset, presetAsset.GetPresets(), prop, metaDatas)); + menu.AddItem(new GUIContent("Update to Preset/" + presetPropDisplayName + "/" + activePreset.presetName), false, () => EditPresetEvent("Update", presetAsset, new List(){activePreset}, prop, metaDatas)); + menu.AddItem(new GUIContent("Remove from Preset/" + presetPropDisplayName + "/" + "All"), false, () => EditPresetEvent("Remove", presetAsset, presetAsset.GetPresets(), prop, metaDatas)); + menu.AddItem(new GUIContent("Remove from Preset/" + presetPropDisplayName + "/" + activePreset.presetName), false, () => EditPresetEvent("Remove", presetAsset, new List(){activePreset}, prop, metaDatas)); } else { - menus.AddItem(new GUIContent("Add to Preset/" + presetPropDisplayName + "/" + "All"), false, () => EditPresetEvent("Add", presetAsset, presetAsset.presets, prop, metaDatas)); - menus.AddItem(new GUIContent("Add to Preset/" + presetPropDisplayName + "/" + activePreset.presetName), false, () => EditPresetEvent("Add", presetAsset, new List(){activePreset}, prop, metaDatas)); + menu.AddItem(new GUIContent("Add to Preset/" + presetPropDisplayName + "/" + "All"), false, () => EditPresetEvent("Add", presetAsset, presetAsset.GetPresets(), prop, metaDatas)); + menu.AddItem(new GUIContent("Add to Preset/" + presetPropDisplayName + "/" + activePreset.presetName), false, () => EditPresetEvent("Add", presetAsset, new List(){activePreset}, prop, metaDatas)); } } } + + // Custom + if (propStaticData.baseDrawers != null) + { + foreach (var baseDrawer in propStaticData.baseDrawers) + { + baseDrawer.GetCustomContextMenus(menu, rect, prop, metaDatas); + } + } - menus.ShowAsContext(); + menu.ShowAsContext(); } #endregion + + #region Importer + + // https://docs.unity3d.com/ScriptReference/TextureImporter.GetPlatformTextureSettings.html + public static string[] platformNamesForTextureSettings => new[] { "DefaultTexturePlatform", "Standalone", "Web", "iPhone", "Android", "WebGL", "Windows Store Apps", "PS4", "XboxOne", "Nintendo Switch", "tvOS" }; + + #endregion } } \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/MetaDataHelper.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/MetaDataHelper.cs index db9ea187..5275ade3 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/MetaDataHelper.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/MetaDataHelper.cs @@ -77,7 +77,7 @@ namespace LWGUI private static Dictionary _perShaderCachesDic = new Dictionary(); - public static LWGUIMetaDatas BuildMetaDatas(Shader shader, Material material, MaterialEditor materialEditor, LWGUI lwgui, MaterialProperty[] props) + public static LWGUIMetaDatas BuildMetaDatas(Shader shader, Material material, MaterialEditor editor, LWGUI lwgui, MaterialProperty[] props) { var outDatas = new LWGUIMetaDatas(); @@ -90,18 +90,18 @@ namespace LWGUI // perMaterialData if (!perShaderCache.perMaterialDataCachesDic.ContainsKey(material)) - perShaderCache.perMaterialDataCachesDic.Add(material, new PerMaterialCache() { perMaterialData = new PerMaterialData(shader, material, props, outDatas.perShaderData) }); + perShaderCache.perMaterialDataCachesDic.Add(material, new PerMaterialCache() { perMaterialData = new PerMaterialData(shader, material, editor, props, outDatas.perShaderData) }); var perMaterialCache = perShaderCache.perMaterialDataCachesDic[material]; outDatas.perMaterialData = perMaterialCache.perMaterialData; - outDatas.perMaterialData.Update(shader, material, props, outDatas.perShaderData); + outDatas.perMaterialData.Update(shader, material, editor, props, outDatas.perShaderData); // perInspectorData if (!perMaterialCache.perInspectorDataCachesDic.ContainsKey(lwgui)) perMaterialCache.perInspectorDataCachesDic.Add(lwgui, new PerInspectorData()); outDatas.perInspectorData = perMaterialCache.perInspectorDataCachesDic[lwgui]; - outDatas.perInspectorData.Update(materialEditor); + outDatas.perInspectorData.Update(editor); return outDatas; } diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/PresetHelper.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/PresetHelper.cs index 68d79c2f..44eeb3bb 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/PresetHelper.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/PresetHelper.cs @@ -7,7 +7,7 @@ namespace LWGUI { public class PresetHelper { - private static Dictionary _loadedPresets = new Dictionary(); + private static Dictionary _loadedPresets = new Dictionary(); private static bool _isInitComplete; @@ -25,16 +25,16 @@ namespace LWGUI { _loadedPresets.Clear(); _isInitComplete = false; - var GUIDs = AssetDatabase.FindAssets("t:" + typeof(ShaderPropertyPreset)); + var GUIDs = AssetDatabase.FindAssets("t:" + typeof(LwguiShaderPropertyPreset)); foreach (var GUID in GUIDs) { - var preset = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(GUID)); + var preset = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(GUID)); AddPreset(preset); } _isInitComplete = true; } - public static void AddPreset(ShaderPropertyPreset preset) + public static void AddPreset(LwguiShaderPropertyPreset preset) { if (!preset) return; if (!_loadedPresets.ContainsKey(preset.name)) @@ -43,7 +43,7 @@ namespace LWGUI } } - public static ShaderPropertyPreset GetPresetFile(string presetFileName) + public static LwguiShaderPropertyPreset GetPresetAsset(string presetFileName) { if (string.IsNullOrEmpty(presetFileName)) return null; @@ -53,7 +53,7 @@ namespace LWGUI if (!_loadedPresets.ContainsKey(presetFileName) || !_loadedPresets[presetFileName]) { - Debug.LogError("LWGUI: Invalid ShaderPropertyPreset: ‘" + presetFileName + "’ !"); + Debug.LogError("LWGUI: Invalid ShaderPropertyPreset path: ‘" + presetFileName + "’ !"); return null; } @@ -69,9 +69,9 @@ namespace LWGUI var drawer = ReflectionHelper.GetPropertyDrawer(material.shader, prop, out _); // Apply active preset - if (drawer != null && drawer is IBasePresetDrawer) + if (drawer != null && drawer is IPresetDrawer) { - var activePreset = (drawer as IBasePresetDrawer).GetActivePreset(prop, PresetHelper.GetPresetFile((drawer as PresetDrawer).presetFileName)); + var activePreset = (drawer as IPresetDrawer).GetActivePreset(prop, PresetHelper.GetPresetAsset((drawer as PresetDrawer).presetFileName)); if (activePreset != null) activePreset.ApplyToDefaultMaterial(material); } diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/RampHelper.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/RampHelper.cs index 4558b47a..a17678b6 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/RampHelper.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/RampHelper.cs @@ -14,35 +14,29 @@ namespace LWGUI { #region RampEditor - public static readonly string projectPath = Application.dataPath.Substring(0, Application.dataPath.Length - 6); - - private static readonly GUIContent _iconAdd = new GUIContent(EditorGUIUtility.IconContent("d_Toolbar Plus").image, "Add"), _iconEdit = new GUIContent(EditorGUIUtility.IconContent("editicon.sml").image, "Edit"), _iconDiscard = new GUIContent(EditorGUIUtility.IconContent("d_TreeEditor.Refresh").image, "Discard"), _iconSave = new GUIContent(EditorGUIUtility.IconContent("SaveActive").image, "Save"); - public static bool RampEditor( + public static void RampEditor( Rect buttonRect, - MaterialProperty prop, ref LwguiGradient gradient, ColorSpace colorSpace, LwguiGradient.ChannelMask viewChannelMask, LwguiGradient.GradientTimeRange timeRange, bool isDirty, - string defaultFileName, - string rootPath, - int defaultWidth, - int defaultHeight, + out bool hasChange, + out bool doEditWhenNoGradient, out bool doRegisterUndo, - out Texture2D newTexture, + out bool doCreate, out bool doSave, - out bool doDiscard + out bool doDiscard, + LwguiGradientWindow.ChangeGradientCallback onChangeGradient = null ) { - newTexture = null; - var hasChange = false; - var shouldCreate = false; + var hasNoGradient = gradient == null; + var _doEditWhenNoGradient = false; var doOpenWindow = false; var singleButtonWidth = buttonRect.width * 0.25f; var editRect = new Rect(buttonRect.x + singleButtonWidth * 0, buttonRect.y, singleButtonWidth, buttonRect.height); @@ -51,14 +45,15 @@ namespace LWGUI var discardRect = new Rect(buttonRect.x + singleButtonWidth * 3, buttonRect.y, singleButtonWidth, buttonRect.height); // Edit button event + hasChange = false; { EditorGUI.BeginChangeCheck(); LwguiGradientEditorHelper.GradientEditButton(editRect, _iconEdit, gradient, colorSpace, viewChannelMask, timeRange, () => { // if the current edited texture is null, create new one - if (prop.textureValue == null) + if (hasNoGradient) { - shouldCreate = true; + _doEditWhenNoGradient = true; Event.current.Use(); return false; } @@ -67,47 +62,23 @@ namespace LWGUI doOpenWindow = true; return true; } - }); + }, onChangeGradient); if (EditorGUI.EndChangeCheck()) { hasChange = true; - gradient = LwguiGradientWindow.instance.lwguiGradient; + if (LwguiGradientWindow.instance) + { + gradient = LwguiGradientWindow.instance.lwguiGradient; + } } doRegisterUndo = doOpenWindow; } + doEditWhenNoGradient = _doEditWhenNoGradient; + // Create button - if (GUI.Button(addRect, _iconAdd) || shouldCreate) - { - while (true) - { - if (!Directory.Exists(projectPath + rootPath)) - Directory.CreateDirectory(projectPath + rootPath); - - var absPath = EditorUtility.SaveFilePanel("Create New Ramp Texture", rootPath, defaultFileName, "png"); - - if (absPath.StartsWith(projectPath + rootPath)) - { - //Create texture and save PNG - var saveUnityPath = absPath.Replace(projectPath, String.Empty); - CreateAndSaveNewGradientTexture(defaultWidth, defaultHeight, saveUnityPath, colorSpace == ColorSpace.Linear); - // VersionControlHelper.Add(saveUnityPath); - //Load created texture - newTexture = AssetDatabase.LoadAssetAtPath(saveUnityPath); - break; - } - else if (absPath != String.Empty) - { - var retry = EditorUtility.DisplayDialog("Invalid Path", "Please select the subdirectory of '" + projectPath + rootPath + "'", "Retry", "Cancel"); - if (!retry) break; - } - else - { - break; - } - } - } + doCreate = GUI.Button(addRect, _iconAdd); // Save button { @@ -119,8 +90,6 @@ namespace LWGUI // Discard button doDiscard = GUI.Button(discardRect, _iconDiscard); - - return hasChange; } public static bool HasGradient(AssetImporter assetImporter) { return assetImporter.userData.Contains("#");} @@ -174,7 +143,7 @@ namespace LWGUI // Save texture to disk if (doSaveToDisk) { - var systemPath = projectPath + path; + var systemPath = Helper.ProjectPath + path; VersionControlHelper.Checkout(path); File.WriteAllBytes(systemPath, texture2D.EncodeToPNG()); assetImporter.SaveAndReimport(); @@ -228,28 +197,42 @@ namespace LWGUI var ramp = gradient.GetPreviewRampTexture(width, height, ColorSpace.Linear); var png = ramp.EncodeToPNG(); - var systemPath = projectPath + unityPath; + var systemPath = Helper.ProjectPath + unityPath; File.WriteAllBytes(systemPath, png); AssetDatabase.ImportAsset(unityPath); + SetRampTextureImporter(unityPath, true, isLinear, EncodeGradientToJSON(gradient, gradient)); + + return true; + } + + public static void SetRampTextureImporter(string unityPath, bool isReadable = true, bool isLinear = false, string userData = null) + { var textureImporter = AssetImporter.GetAtPath(unityPath) as TextureImporter; + if (!textureImporter) + { + Debug.LogError($"LWGUI: Can NOT get TextureImporter at path: { unityPath }"); + return; + } + textureImporter.wrapMode = TextureWrapMode.Clamp; - textureImporter.isReadable = true; + textureImporter.isReadable = isReadable; textureImporter.textureCompression = TextureImporterCompression.Uncompressed; textureImporter.alphaSource = TextureImporterAlphaSource.FromInput; textureImporter.mipmapEnabled = false; textureImporter.sRGBTexture = !isLinear; - var platformTextureSettings = textureImporter.GetDefaultPlatformTextureSettings(); - platformTextureSettings.format = TextureImporterFormat.RGBA32; - platformTextureSettings.textureCompression = TextureImporterCompression.Uncompressed; - textureImporter.SetPlatformTextureSettings(platformTextureSettings); + foreach (var platformName in Helper.platformNamesForTextureSettings) + { + var platformTextureSettings = textureImporter.GetPlatformTextureSettings(platformName); + platformTextureSettings.format = TextureImporterFormat.RGBA32; + textureImporter.SetPlatformTextureSettings(platformTextureSettings); + } - //Gradient data embedded in userData - textureImporter.userData = EncodeGradientToJSON(gradient, gradient); + if (userData != null) + textureImporter.userData = userData; + textureImporter.SaveAndReimport(); - - return true; } #endregion @@ -257,7 +240,7 @@ namespace LWGUI #region RampSelector - public static void RampSelector(Rect rect, string rootPath, Action switchRampMapEvent) + public static void RampMapSelectorOverride(Rect rect, MaterialProperty prop, string rootPath, RampSelectorWindow.SwitchRampMapCallback switchRampMapEvent) { var e = Event.current; if (e.type == UnityEngine.EventType.MouseDown && rect.Contains(e.mousePosition)) @@ -275,7 +258,20 @@ namespace LWGUI else return null; }).ToArray(); - RampSelectorWindow.ShowWindow(rect, rampMaps, switchRampMapEvent); + RampSelectorWindow.ShowWindow(prop, rampMaps, switchRampMapEvent); + } + } + + public static void RampIndexSelectorOverride(Rect rect, MaterialProperty prop, LwguiRampAtlas rampAtlas, RampSelectorWindow.SwitchRampMapCallback switchRampMapEvent) + { + if (!rampAtlas) + return; + + var e = Event.current; + if (e.type == UnityEngine.EventType.MouseDown && rect.Contains(e.mousePosition)) + { + e.Use(); + RampSelectorWindow.ShowWindow(prop, rampAtlas.GetTexture2Ds(LwguiGradient.ChannelMask.RGB), switchRampMapEvent); } } #endregion @@ -283,16 +279,20 @@ namespace LWGUI public class RampSelectorWindow : EditorWindow { + public delegate void SwitchRampMapCallback(MaterialProperty prop, Texture2D newRampMap, int index); + private Texture2D[] _rampMaps; private Vector2 _scrollPosition; - private Action _switchRampMapEvent; + private MaterialProperty _prop; + private SwitchRampMapCallback _switchRampMapEvent; - public static void ShowWindow(Rect rect, Texture2D[] rampMaps, Action switchRampMapEvent) + public static void ShowWindow(MaterialProperty prop, Texture2D[] rampMaps, SwitchRampMapCallback switchRampMapEvent) { RampSelectorWindow window = ScriptableObject.CreateInstance(); window.titleContent = new GUIContent("Ramp Selector"); window.minSize = new Vector2(400, 500); window._rampMaps = rampMaps; + window._prop = prop; window._switchRampMapEvent = switchRampMapEvent; window.ShowAuxWindow(); } @@ -302,19 +302,22 @@ namespace LWGUI EditorGUILayout.BeginVertical(); _scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition); - foreach (Texture2D rampMap in _rampMaps) + for (int i = 0; i < _rampMaps.Length; i++) { + var rampMap = _rampMaps[i]; EditorGUILayout.BeginHorizontal(); if (rampMap != null) { - var guiContent = new GUIContent(rampMap.name); + var guiContent = new GUIContent($"{ i }. { rampMap.name }"); var rect = EditorGUILayout.GetControlRect(); var buttonWidth = Mathf.Min(300f, Mathf.Max(GUI.skin.button.CalcSize(guiContent).x, rect.width * 0.35f)); var buttonRect = new Rect(rect.x + rect.width - buttonWidth, rect.y, buttonWidth, rect.height); var previewRect = new Rect(rect.x, rect.y, rect.width - buttonWidth - 3.0f, rect.height); - if (GUI.Button(buttonRect, guiContent) && _switchRampMapEvent != null) + + if (GUI.Button(buttonRect, guiContent, Helper.guiStyle_RampSelectButton) && _switchRampMapEvent != null) { - _switchRampMapEvent(rampMap); + _switchRampMapEvent(_prop, rampMap, i); + LwguiGradientWindow.CloseWindow(); Close(); } EditorGUI.DrawPreviewTexture(previewRect, rampMap); diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/RevertableHelper.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/RevertableHelper.cs index 908cc01b..0a923226 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/RevertableHelper.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/RevertableHelper.cs @@ -4,6 +4,7 @@ using System; using System.Linq; using UnityEditor; using UnityEngine; +using UnityEngine.Rendering; namespace LWGUI { @@ -57,12 +58,12 @@ namespace LWGUI EditorGUIUtility.labelWidth = RevertableHelper.labelWidth; } - public static void FixGUIWidthMismatch(MaterialProperty.PropType propType, MaterialEditor materialEditor) + public static void FixGUIWidthMismatch(ShaderPropertyType propType, MaterialEditor materialEditor) { switch (propType) { - case MaterialProperty.PropType.Texture: - case MaterialProperty.PropType.Range: + case ShaderPropertyType.Texture: + case ShaderPropertyType.Range: materialEditor.SetDefaultGUIWidths(); break; default: @@ -88,22 +89,22 @@ namespace LWGUI public static string GetPropertyDefaultValueText(MaterialProperty defaultProp) { string defaultText = String.Empty; - switch (defaultProp.type) + switch (defaultProp.GetPropertyType()) { - case MaterialProperty.PropType.Color: + case ShaderPropertyType.Color: defaultText = defaultProp.colorValue.ToString(); break; - case MaterialProperty.PropType.Float: - case MaterialProperty.PropType.Range: + case ShaderPropertyType.Float: + case ShaderPropertyType.Range: defaultText = defaultProp.floatValue.ToString(); break; - case MaterialProperty.PropType.Int: + case ShaderPropertyType.Int: defaultText = defaultProp.intValue.ToString(); break; - case MaterialProperty.PropType.Texture: + case ShaderPropertyType.Texture: defaultText = defaultProp.textureValue != null ? defaultProp.textureValue.name : "None"; break; - case MaterialProperty.PropType.Vector: + case ShaderPropertyType.Vector: defaultText = defaultProp.vectorValue.ToString(); break; } @@ -130,6 +131,7 @@ namespace LWGUI if (DrawRevertButton(rect)) { GUI.changed = true; + EditorGUI.FocusTextInControl(string.Empty); DoRevertProperty(prop, metaDatas); if (isHeader) diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/VersionControlHelper.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/VersionControlHelper.cs index 80f20cab..03fd8c79 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/VersionControlHelper.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Helper/VersionControlHelper.cs @@ -1,7 +1,6 @@ // Copyright (c) Jason Ma using System.Collections.Generic; -using System.Linq; using System.Text; using UnityEditor; using UnityEditor.VersionControl; @@ -9,7 +8,7 @@ using UnityEngine; namespace LWGUI { - public class VersionControlHelper + public static class VersionControlHelper { public static bool isVCEnabled => Provider.enabled && Provider.isActive; @@ -99,5 +98,31 @@ namespace LWGUI return true; } + + public static bool IsWriteable(UnityEngine.Object obj) => IsWriteable(new[] { obj }); + + public static bool IsWriteable(UnityEngine.Object[] objs) + { + if (objs == null) + return false; + + bool isWriteable = true; + + foreach (var obj in objs) + { + if (!obj) + continue; + + if (!AssetDatabase.Contains(obj)) + continue; + + isWriteable &= AssetDatabase.IsOpenForEdit(obj); + + if (!isWriteable) + break; + } + + return isWriteable; + } } } \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/LWGUI.asmdef b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/LWGUI.asmdef index c2c32c8c..16cf9138 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/LWGUI.asmdef +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/LWGUI.asmdef @@ -3,6 +3,7 @@ "rootNamespace": "", "references": [ "LWGUI.Runtime", + "LWGUI.Timeline", "Unity.InternalAPIEditorBridge.020" ], "includePlatforms": [ diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/LWGUI.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/LWGUI.cs index 7cede9ac..4e603a6e 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/LWGUI.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/LWGUI.cs @@ -1,4 +1,5 @@ // Copyright (c) Jason Ma + using UnityEditor; using UnityEngine; using UnityEngine.Rendering; @@ -9,7 +10,8 @@ namespace LWGUI public class LWGUI : ShaderGUI { - public LWGUIMetaDatas metaDatas; + public LWGUIMetaDatas metaDatas; + public bool hasChange; public static LWGUICustomGUIEvent onDrawCustomHeader; public static LWGUICustomGUIEvent onDrawCustomFooter; @@ -22,13 +24,18 @@ namespace LWGUI /// /// Called every frame when the content is updated, such as the mouse moving in the material editor /// - public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] props) + public override void OnGUI(MaterialEditor editor, MaterialProperty[] props) { //----------------------------------------------------------------------------- // Init Datas - var material = materialEditor.target as Material; + var material = editor.target as Material; var shader = material.shader; - this.metaDatas = MetaDataHelper.BuildMetaDatas(shader, material, materialEditor, this, props); + if (hasChange) + { + OnValidate(editor.targets); + hasChange = false; + } + this.metaDatas = MetaDataHelper.BuildMetaDatas(shader, material, editor, this, props); //----------------------------------------------------------------------------- @@ -55,7 +62,7 @@ namespace LWGUI // Draw Properties { // move fields left to make rect for Revert Button - materialEditor.SetDefaultGUIWidths(); + editor.SetDefaultGUIWidths(); RevertableHelper.InitRevertableGUIWidths(); // start drawing properties @@ -104,7 +111,7 @@ namespace LWGUI EditorGUI.indentLevel = indentLevel; } - materialEditor.SetDefaultGUIWidths(); + editor.SetDefaultGUIWidths(); } @@ -116,10 +123,10 @@ namespace LWGUI // Render settings if (SupportedRenderingFeatures.active.editableMaterialRenderQueue) - materialEditor.RenderQueueField(); - materialEditor.EnableInstancingField(); - materialEditor.LightmapEmissionProperty(); - materialEditor.DoubleSidedGIField(); + editor.RenderQueueField(); + editor.EnableInstancingField(); + editor.LightmapEmissionProperty(); + editor.DoubleSidedGIField(); // Custom Footer if (onDrawCustomFooter != null) @@ -163,11 +170,14 @@ namespace LWGUI if (propStaticData.isReadOnly) GUI.enabled = false; Helper.BeginProperty(rect, prop, metaDatas); Helper.DoPropertyContextMenus(rect, prop, metaDatas); - RevertableHelper.FixGUIWidthMismatch(prop.type, materialEditor); + + RevertableHelper.FixGUIWidthMismatch(prop.GetPropertyType(), materialEditor); if (propStaticData.isAdvancedHeaderProperty) propStaticData.isExpanding = EditorGUI.Foldout(rect, propStaticData.isExpanding, string.Empty); + RevertableHelper.DrawRevertableProperty(revertButtonRect, prop, metaDatas, propStaticData.isMain || propStaticData.isAdvancedHeaderProperty); materialEditor.ShaderProperty(rect, prop, label); + Helper.EndProperty(metaDatas, prop); GUI.enabled = enabled; } @@ -187,6 +197,7 @@ namespace LWGUI public static void OnValidate(Object[] materials) { + VersionControlHelper.Checkout(materials); UnityEditorExtension.ApplyMaterialPropertyAndDecoratorDrawers(materials); MetaDataHelper.ForceUpdateMaterialsMetadataCache(materials); } @@ -197,20 +208,26 @@ namespace LWGUI OnValidate(metaDatas?.GetMaterialEditor()?.targets); } - // Called after edit or undo public override void ValidateMaterial(Material material) { - base.ValidateMaterial(material); - // Undo - if (metaDatas == null) + // Debug.Log($"ValidateMaterial {material.name}, {metaDatas}, {Event.current?.type}"); + + // Validate a Faked Material when select/edit a Material + if (metaDatas == null && (Event.current == null || Event.current.type == EventType.Layout)) { - OnValidate(new Object[] { material }); + // Skip to avoid lag when editing large amounts of materials + } + // Undo/Edit in Timeline (EventType.Repaint) + // Note: When modifying the material in Timeline in Unity 2022, this function cannot correctly obtain the modified value. + else if (metaDatas == null) + { + MetaDataHelper.ForceUpdateMaterialMetadataCache(material); } // Edit else { - OnValidate(metaDatas); + if (!hasChange) hasChange = true; } } } -} //namespace LWGUI \ No newline at end of file +} \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/MetaData/PerMaterialData.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/MetaData/PerMaterialData.cs index c8d5ca02..3b6eccee 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/MetaData/PerMaterialData.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/MetaData/PerMaterialData.cs @@ -10,10 +10,10 @@ namespace LWGUI { public class PersetDynamicData { - public ShaderPropertyPreset.Preset preset; + public LwguiShaderPropertyPreset.Preset preset; public MaterialProperty property; - public PersetDynamicData(ShaderPropertyPreset.Preset preset, MaterialProperty property) + public PersetDynamicData(LwguiShaderPropertyPreset.Preset preset, MaterialProperty property) { this.preset = preset; this.property = property; @@ -30,6 +30,7 @@ namespace LWGUI public bool hasChildrenModified = false; // Are Children properties modified in the material? public bool hasRevertChanged = false; // Used to call property EndChangeCheck() public bool isShowing = true; // ShowIf() result + public bool isAnimated = false; // Material Parameter Animation preview in Timeline is activated } /// @@ -37,21 +38,25 @@ namespace LWGUI /// public class PerMaterialData { - public Dictionary propDynamicDatas = new Dictionary(); - public MaterialProperty[] props = null; - public Material material = null; - public List activePresetDatas = new List(); - public int modifiedCount = 0; - public Dictionary cachedModifiedProperties = null; - public bool forceInit = true; + public Dictionary propDynamicDatas = new Dictionary(); + public MaterialProperty[] props = null; + public Material material = null; + public Material defaultMaterialWithPresetOverride = null; + public MaterialProperty[] defaultPropertiesWithPresetOverride = null; + public List activePresetDatas = new List(); + public int modifiedCount = 0; + public Dictionary cachedModifiedProperties = null; + public bool forceInit = true; - public PerMaterialData(Shader shader, Material material, MaterialProperty[] props, PerShaderData perShaderData) + public PerMaterialData(Shader shader, Material material, MaterialEditor editor, MaterialProperty[] props, PerShaderData perShaderData) { - Init(shader, material, props, perShaderData); + Init(shader, material, editor, props, perShaderData); } - public void Init(Shader shader, Material material, MaterialProperty[] props, PerShaderData perShaderData) + public void Init(Shader shader, Material material, MaterialEditor editor, MaterialProperty[] props, PerShaderData perShaderData) { + forceInit = false; + // Reset Datas this.props = props; this.material = material; @@ -75,7 +80,7 @@ namespace LWGUI { // Apply presets to default material - var defaultMaterial = UnityEngine.Object.Instantiate( + defaultMaterialWithPresetOverride = UnityEngine.Object.Instantiate( #if UNITY_2022_1_OR_NEWER material.parent ? material.parent @@ -85,20 +90,20 @@ namespace LWGUI ); foreach (var activePresetData in activePresetDatas) - activePresetData.preset.ApplyToDefaultMaterial(defaultMaterial); + activePresetData.preset.ApplyToDefaultMaterial(defaultMaterialWithPresetOverride); - var defaultProperties = MaterialEditor.GetMaterialProperties(new[] { defaultMaterial }); - Debug.Assert(defaultProperties.Length == props.Length); + defaultPropertiesWithPresetOverride = MaterialEditor.GetMaterialProperties(new[] { defaultMaterialWithPresetOverride }); + Debug.Assert(defaultPropertiesWithPresetOverride.Length == props.Length); // Init propDynamicDatas for (int i = 0; i < props.Length; i++) { - var hasModified = !Helper.PropertyValueEquals(props[i], defaultProperties[i]); + var hasModified = !Helper.PropertyValueEquals(props[i], defaultPropertiesWithPresetOverride[i]); if (hasModified) modifiedCount++; propDynamicDatas.Add(props[i].name, new PropertyDynamicData() { property = props[i], - defualtProperty = defaultProperties[i], + defualtProperty = defaultPropertiesWithPresetOverride[i], hasModified = hasModified }); } @@ -158,21 +163,33 @@ namespace LWGUI // Get ShowIf() results ShowIfDecorator.GetShowIfResult(propStaticData, propDynamicData, this); } - - forceInit = false; } - public void Update(Shader shader, Material material, MaterialProperty[] props, PerShaderData perShaderData) + public void Update(Shader shader, Material material, MaterialEditor editor, MaterialProperty[] props, PerShaderData perShaderData) { if (forceInit) { - Init(shader, material, props, perShaderData); - return; + Init(shader, material, editor, props, perShaderData); } - - foreach (var prop in props) + else { - propDynamicDatas[prop.name].property = prop; + foreach (var prop in props) + { + propDynamicDatas[prop.name].property = prop; + } + } + + // Check animated + var renderer = editor.GetRendererForAnimationMode(); + if (renderer != null) + { + forceInit = true; + foreach (var prop in props) + { + ReflectionHelper.MaterialAnimationUtility_OverridePropertyColor(prop, renderer, out var color); + if (color != Color.white) + propDynamicDatas[prop.name].isAnimated = true; + } } } diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/MetaData/PerShaderData.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/MetaData/PerShaderData.cs index 04318c40..e48ad877 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/MetaData/PerShaderData.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/MetaData/PerShaderData.cs @@ -31,6 +31,9 @@ namespace LWGUI public bool IsDefaultDisplayMode() { return !(showAllAdvancedProperties || showAllHiddenProperties || showOnlyModifiedProperties || showOnlyModifiedGroups); } } + /// + /// The static metadata of Material Property is only related to Shader. + /// public partial class PropertyStaticData { public string name = string.Empty; @@ -55,14 +58,14 @@ namespace LWGUI public string conditionalDisplayKeyword = string.Empty; // [Group(groupName_conditionalDisplayKeyword)] // Drawers - public IBasePresetDrawer presetDrawer = null; + public IPresetDrawer presetDrawer = null; public List baseDrawers = null; // Metadata public List extraPropNames = new List(); // Other Props that have been associated public string helpboxMessages = string.Empty; public string tooltipMessages = string.Empty; - public ShaderPropertyPreset propertyPresetAsset = null; // The Referenced Preset Asset + public LwguiShaderPropertyPreset propertyPresetAsset = null; // The Referenced Preset Asset public void AddExtraProperty(string propName) { @@ -109,8 +112,8 @@ namespace LWGUI { var drawer = ReflectionHelper.GetPropertyDrawer(shader, prop, out var decoratorDrawers); - if (drawer is IBasePresetDrawer) - propStaticData.presetDrawer = drawer as IBasePresetDrawer; + if (drawer is IPresetDrawer) + propStaticData.presetDrawer = drawer as IPresetDrawer; var baseDrawer = drawer as IBaseDrawer; if (baseDrawer != null) diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/LwguiRampAtlas.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/LwguiRampAtlas.cs new file mode 100644 index 00000000..935a2678 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/LwguiRampAtlas.cs @@ -0,0 +1,418 @@ +// Copyright (c) Jason Ma +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using LWGUI.LwguiGradientEditor; +using LWGUI.Runtime.LwguiGradient; +using UnityEngine; +using UnityEditor; +using UnityEngine.Serialization; + + +namespace LWGUI +{ + [CreateAssetMenu(fileName = "LWGUI_RampAtlas.asset", menuName = "LWGUI/Ramp Atlas", order = 84)] + public class LwguiRampAtlas : ScriptableObject + { + [Serializable] + public class Ramp + { + public string name = "New Ramp"; + public LwguiGradient gradient = LwguiGradient.white; + public ColorSpace colorSpace = ColorSpace.Gamma; + public LwguiGradient.ChannelMask channelMask = LwguiGradient.ChannelMask.All; + public LwguiGradient.GradientTimeRange timeRange = LwguiGradient.GradientTimeRange.One; + } + + public const string RampAtlasSOExtensionName = "asset"; + public const string RampAtlasTextureExtensionName = "tga"; + + public int rampAtlasWidth = 256; + public int rampAtlasHeight = 4; + public bool rampAtlasSRGB = true; + + [NonSerialized] public Texture2D rampAtlasTexture = null; + + [SerializeField] private List _ramps = new List(); + public List ramps + { + get => _ramps ?? new List(); + + set => _ramps = value ?? new List(); + } + + [SerializeField] private bool _saveTextureToggle; + private string _rampAtlasSOPath = string.Empty; + private string _rampAtlasTexturePath = string.Empty; + + public void InitData() + { + if (AssetDatabase.Contains(this)) + { + _rampAtlasSOPath = AssetDatabase.GetAssetPath(this); + _rampAtlasTexturePath = Path.ChangeExtension(_rampAtlasSOPath, RampAtlasTextureExtensionName); + } + } + + public bool LoadTexture() + { + if (!AssetDatabase.Contains(this)) + return false; + + // Try to load + rampAtlasTexture = AssetDatabase.LoadAssetAtPath(_rampAtlasTexturePath); + + // Create + if (!rampAtlasTexture) + { + CreateRampAtlasTexture(); + rampAtlasTexture = AssetDatabase.LoadAssetAtPath(_rampAtlasTexturePath); + } + + if (!rampAtlasTexture) + { + Debug.LogError($"LWGUI: Can NOT create a Ramp Atlas Texture at path: { _rampAtlasTexturePath }"); + return false; + } + + return true; + } + + public Color[] GetPixels() + { + Color[] pixels = Enumerable.Repeat(Color.white, rampAtlasWidth * rampAtlasHeight).ToArray(); + int currentIndex = 0; + foreach (var ramp in ramps) + { + ramp.gradient.GetPixels(ref pixels, ref currentIndex, rampAtlasWidth, 1, ramp.channelMask); + } + + return pixels; + } + + public Texture2D[] GetTexture2Ds(LwguiGradient.ChannelMask channelMask = LwguiGradient.ChannelMask.All) + { + Texture2D[] textures = new Texture2D[ramps.Count]; + for (int i = 0; i < ramps.Count; i++) + { + var ramp = ramps[i]; + textures[i] = Instantiate(ramp.gradient?.GetPreviewRampTexture(rampAtlasWidth, 1, ramp.colorSpace, ramp.channelMask & channelMask)); + textures[i].name = ramp.name; + } + + return textures; + } + + public Ramp GetRamp(int index) + { + if (index < ramps.Count && index >= 0) + { + return ramps[index] ?? new Ramp(); + } + return null; + } + + public void CreateRampAtlasTexture() + { + var rampAtlasTexture = new Texture2D(rampAtlasWidth, rampAtlasHeight, TextureFormat.RGBA32, false, !rampAtlasSRGB); + rampAtlasTexture.SetPixels(GetPixels()); + rampAtlasTexture.wrapMode = TextureWrapMode.Clamp; + rampAtlasTexture.name = Path.GetFileName(_rampAtlasTexturePath); + rampAtlasTexture.Apply(); + + SaveTexture(rampAtlasTexture); + + AssetDatabase.ImportAsset(_rampAtlasTexturePath); + RampHelper.SetRampTextureImporter(_rampAtlasTexturePath, true, !rampAtlasSRGB, EditorJsonUtility.ToJson(this)); + } + + public void SaveTexture(Texture2D rampAtlasTexture = null, string targetRelativePath = null, bool checkoutAndForceWrite = false) + { + targetRelativePath ??= _rampAtlasTexturePath; + rampAtlasTexture ??= this.rampAtlasTexture; + if (!rampAtlasTexture || string.IsNullOrEmpty(targetRelativePath)) + return; + + var absPath = Helper.ProjectPath + targetRelativePath; + if (File.Exists(absPath)) + { + var existRampTexture = AssetDatabase.LoadAssetAtPath(targetRelativePath); + if (!VersionControlHelper.IsWriteable(existRampTexture)) + { + if (checkoutAndForceWrite) + { + if (!VersionControlHelper.Checkout(targetRelativePath)) + { + Debug.LogError($"LWGUI: Can NOT write the Ramp Atlas Texture to path: { absPath }"); + return; + } + } + else + { + return; + } + } + } + + try + { + File.WriteAllBytes(absPath, rampAtlasTexture.EncodeToTGA()); + SaveTextureUserData(targetRelativePath); + + Debug.Log($"LWGUI: Saved the Ramp Atlas Texture at path: { absPath }"); + } + catch (Exception e) + { + Debug.LogError(e); + } + } + + public void SaveTextureUserData(string targetRelativePath = null) + { + targetRelativePath ??= _rampAtlasTexturePath; + if (!string.IsNullOrEmpty(targetRelativePath)) + { + var importer = AssetImporter.GetAtPath(targetRelativePath); + if (importer) + { + importer.userData = EditorJsonUtility.ToJson(this); + importer.SaveAndReimport(); + } + } + } + + public void SaveRampAtlasSO() + { + AssetDatabase.SaveAssetIfDirty(this); + } + + public void UpdateTexturePixels() + { + if (!rampAtlasTexture) + return; + + LwguiGradientWindow.RegisterSerializedObjectUndo(this); + rampAtlasTexture.Reinitialize(rampAtlasWidth, rampAtlasHeight); + rampAtlasTexture.SetPixels(GetPixels()); + rampAtlasTexture.Apply(); + } + + public void DiscardChanges() + { + var importer = AssetImporter.GetAtPath(_rampAtlasTexturePath); + if (!importer) + return; + + EditorJsonUtility.FromJsonOverwrite(importer.userData, this); + InitData(); + AssetDatabase.ImportAsset(_rampAtlasTexturePath, ImportAssetOptions.ForceUpdate); + LoadTexture(); + EditorUtility.ClearDirty(this); + } + + public void ConvertColorSpace(ColorSpace targetColorSpace) + { + foreach (var ramp in ramps) + { + if (ramp.colorSpace != targetColorSpace) + { + ramp.colorSpace = targetColorSpace; + ramp.gradient.ConvertColorSpaceWithoutCopy( + targetColorSpace != ColorSpace.Gamma + ? ColorSpace.Linear + : ColorSpace.Gamma); + } + } + + rampAtlasSRGB = targetColorSpace == ColorSpace.Gamma; + RampHelper.SetRampTextureImporter(_rampAtlasTexturePath, true, !rampAtlasSRGB, EditorJsonUtility.ToJson(this)); + UpdateTexturePixels(); + SaveTexture(); + } + + [ContextMenu("Convert Gamma To Linear")] + public void ConvertGammaToLinear() + { + ConvertColorSpace(ColorSpace.Linear); + } + + [ContextMenu("Convert Linear To Gamma")] + public void ConvertLinearToGamma() + { + ConvertColorSpace(ColorSpace.Gamma); + } + + private void OnEnable() + { + InitData(); + LoadTexture(); + } + + private void OnValidate() + { + // Skip at the end of compilation + if (Event.current == null + // Skip when editing Text Field + || EditorGUIUtility.editingTextField) + return; + + InitData(); + + if (!LoadTexture()) + return; + + UpdateTexturePixels(); + SaveTexture(); + } + + public static Texture LoadRampAtlasTexture(LwguiRampAtlas rampAtlasSO) + { + if (!rampAtlasSO || !AssetDatabase.Contains(rampAtlasSO)) + { + return null; + } + + var soPath = Path.ChangeExtension(AssetDatabase.GetAssetPath(rampAtlasSO), RampAtlasTextureExtensionName); + return AssetDatabase.LoadAssetAtPath(soPath); + } + + public static LwguiRampAtlas LoadRampAtlasSO(Texture texture) + { + if (!texture || !AssetDatabase.Contains(texture)) + { + return null; + } + + var soPath = Path.ChangeExtension(AssetDatabase.GetAssetPath(texture), RampAtlasSOExtensionName); + return AssetDatabase.LoadAssetAtPath(soPath); + } + + public static LwguiRampAtlas CreateRampAtlasSO(MaterialProperty rampAtlasProp, LWGUIMetaDatas metaDatas) + { + if (rampAtlasProp == null || metaDatas == null) + return null; + + var shader = metaDatas.GetShader(); + + // Get default ramps + RampAtlasDrawer targetRampAtlasDrawer = null; + List<(int defaultIndex, RampAtlasIndexerDrawer indexerDrawer)> defaultRampAtlasIndexerDrawers = new (); + // Unity Bug: The cache of MaterialPropertyHandler must be cleared first, otherwise the default value cannot be obtained correctly. + ReflectionHelper.InvalidatePropertyCache(shader); + for (int i = 0; i < metaDatas.perMaterialData.defaultPropertiesWithPresetOverride.Length; i++) + { + var prop = metaDatas.perMaterialData.defaultPropertiesWithPresetOverride[i]; + var drawer = ReflectionHelper.GetPropertyDrawer(shader, prop); + if (drawer == null) + continue; + + if (drawer is RampAtlasDrawer rampAtlasDrawer && prop.name == rampAtlasProp.name) + targetRampAtlasDrawer = rampAtlasDrawer; + + if (drawer is RampAtlasIndexerDrawer rampAtlasIndexerDrawer && rampAtlasIndexerDrawer.rampAtlasPropName == rampAtlasProp.name) + defaultRampAtlasIndexerDrawers.Add(((int)prop.GetNumericValue(), rampAtlasIndexerDrawer)); + } + + if (targetRampAtlasDrawer == null) + { + Debug.LogError($"LWGUI: Can NOT find RampAtlasDrawer { rampAtlasProp.name } in Shader { shader }"); + return null; + } + + // Init Ramp Atlas + var newRampAtlasSO = ScriptableObject.CreateInstance(); + newRampAtlasSO.name = targetRampAtlasDrawer.defaultFileName; + newRampAtlasSO.rampAtlasWidth = targetRampAtlasDrawer.defaultAtlasWidth; + newRampAtlasSO.rampAtlasHeight = targetRampAtlasDrawer.defaultAtlasHeight; + newRampAtlasSO.rampAtlasSRGB = targetRampAtlasDrawer.defaultAtlasSRGB; + + if (defaultRampAtlasIndexerDrawers.Count > 0) + { + defaultRampAtlasIndexerDrawers.Sort(((x, y) => x.defaultIndex.CompareTo(y.defaultIndex))); + + // Set Ramps Count + var maxIndex = defaultRampAtlasIndexerDrawers.Max((tuple => tuple.defaultIndex)); + for (int i = 0; i < maxIndex + 1; i++) + { + newRampAtlasSO.ramps.Add(new LwguiRampAtlas.Ramp()); + if (newRampAtlasSO.ramps.Count >= newRampAtlasSO.rampAtlasHeight) + newRampAtlasSO.rampAtlasHeight *= 2; + } + + // Set Ramps Default Value + for (int i = 0; i < defaultRampAtlasIndexerDrawers.Count; i++) + { + var defaultRampAtlasIndexerDrawer = defaultRampAtlasIndexerDrawers[i]; + var ramp = newRampAtlasSO.ramps[defaultRampAtlasIndexerDrawer.defaultIndex]; + var drawer = defaultRampAtlasIndexerDrawer.indexerDrawer; + ramp.name = drawer.defaultRampName; + ramp.colorSpace = drawer.colorSpace; + ramp.channelMask = drawer.viewChannelMask; + ramp.timeRange = drawer.timeRange; + } + } + + return SaveRampAtlasSOToAsset(newRampAtlasSO, targetRampAtlasDrawer.rootPath, targetRampAtlasDrawer.defaultFileName); + } + + public static LwguiRampAtlas CloneRampAtlasSO(LwguiRampAtlas rampAtlasSO) + { + if (!rampAtlasSO) + return null; + + var newRampAtlasSO = Instantiate(rampAtlasSO); + var rootPath = Path.GetDirectoryName(rampAtlasSO._rampAtlasSOPath); + var defaultFileName = Path.GetFileName(rampAtlasSO._rampAtlasSOPath); + + if (SaveRampAtlasSOToAsset(newRampAtlasSO, rootPath, defaultFileName)) + { + newRampAtlasSO.InitData(); + newRampAtlasSO.LoadTexture(); + return newRampAtlasSO; + } + + return null; + } + + public static LwguiRampAtlas SaveRampAtlasSOToAsset(LwguiRampAtlas rampAtlasSO, string rootPath, string defaultFileName) + { + if (!rampAtlasSO) + return null; + + // Save Ramp Atlas + string createdFileRelativePath = string.Empty; + while (true) + { + // TODO: Warning: + // PropertiesGUI() is being called recursively. If you want to render the default gui for shader properties then call PropertiesDefaultGUI() instead + var absPath = EditorUtility.SaveFilePanel("Create a Ramp Atlas SO", rootPath, defaultFileName, "asset"); + + if (absPath.StartsWith(Helper.ProjectPath)) + { + createdFileRelativePath = absPath.Replace(Helper.ProjectPath, string.Empty); + break; + } + else if (absPath != string.Empty) + { + var retry = EditorUtility.DisplayDialog("Invalid Path", "Please select the subdirectory of '" + Helper.ProjectPath + "'", "Retry", "Cancel"); + if (!retry) break; + } + else + { + break; + } + } + + if (!string.IsNullOrEmpty(createdFileRelativePath)) + { + AssetDatabase.CreateAsset(rampAtlasSO, createdFileRelativePath); + rampAtlasSO.InitData(); + rampAtlasSO.LoadTexture(); + return rampAtlasSO; + } + + return null; + } + } +} \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/LwguiRampAtlas.cs.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/LwguiRampAtlas.cs.meta new file mode 100644 index 00000000..7ae87758 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/LwguiRampAtlas.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b294e53fae84d85a53542a47c4a1481 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/LwguiShaderPropertyPreset.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/LwguiShaderPropertyPreset.cs new file mode 100644 index 00000000..6276e7a7 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/LwguiShaderPropertyPreset.cs @@ -0,0 +1,311 @@ +// Copyright (c) Jason Ma +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEditor; +using Object = UnityEngine.Object; + +namespace LWGUI +{ + [CreateAssetMenu(fileName = "LWGUI_ShaderPropertyPreset.asset", menuName = "LWGUI/Shader Property Preset", order = 84)] + public class LwguiShaderPropertyPreset : ScriptableObject + { + public enum PropertyType + { + Color, + Vector, + Float, + Range, + Texture, + Integer, + } + + [Serializable] + public class PropertyValue + { + public PropertyValue(MaterialProperty prop) + { + CopyFromMaterialProperty(prop); + } + + public string propertyName; + public PropertyType propertyType; + public float floatValue; + public int intValue; + public Color colorValue; + public Vector4 vectorValue; + public Texture textureValue; + + private int propertyNameID = -1; + + public void Apply(Material material, bool isDefaultMaterial, PerMaterialData perMaterialData = null) + { + if (propertyNameID == -1 || !material.HasProperty(propertyNameID)) + propertyNameID = Shader.PropertyToID(propertyName); + if (!material.HasProperty(propertyNameID)) + { + // Legacy + var propertyNameLower = propertyName.ToLower(); + switch (propertyNameLower) + { + case "renderqueue": + material.renderQueue = (int)floatValue; + return; + default: + // Debug.LogWarning("Unable to find Preset Property: " + propertyName + " in Material: " + material + "!"); + return; + } + } + + + if (isDefaultMaterial) + { + switch (propertyType) + { + case PropertyType.Color: + material.SetColor(propertyNameID, colorValue); + break; + case PropertyType.Vector: + material.SetVector(propertyNameID, vectorValue); + break; + case PropertyType.Float: + case PropertyType.Range: + material.SetFloat(propertyNameID, floatValue); + break; + case PropertyType.Integer: + material.SetInteger(propertyNameID, intValue); + break; + case PropertyType.Texture: + material.SetTexture(propertyNameID, textureValue); + break; + } + + UnityEditorExtension.ApplyMaterialPropertyAndDecoratorDrawers(material); + } + // is Property Primary Material + else if (perMaterialData != null) + { + var propDynamicData = perMaterialData.propDynamicDatas[propertyName]; + var prop = propDynamicData.property; + switch (propertyType) + { + case PropertyType.Color: + prop.colorValue = colorValue; + break; + case PropertyType.Vector: + prop.vectorValue = vectorValue; + break; + case PropertyType.Float: + case PropertyType.Range: + prop.floatValue = floatValue; + break; + case PropertyType.Integer: + prop.intValue = intValue; + break; + case PropertyType.Texture: + prop.textureValue = textureValue; + break; + } + + propDynamicData.hasRevertChanged = true; + } + } + + public void CopyFromMaterialProperty(MaterialProperty prop) + { + propertyName = prop.name; + switch (prop.GetPropertyType()) + { + case ShaderPropertyType.Color: + propertyType = PropertyType.Color; + colorValue = prop.colorValue; + break; + case ShaderPropertyType.Vector: + propertyType = PropertyType.Vector; + vectorValue = prop.vectorValue; + break; + case ShaderPropertyType.Float: + propertyType = PropertyType.Float; + floatValue = prop.floatValue; + break; + case ShaderPropertyType.Int: + propertyType = PropertyType.Integer; + intValue = prop.intValue; + break; + case ShaderPropertyType.Range: + propertyType = PropertyType.Range; + floatValue = prop.floatValue; + break; + case ShaderPropertyType.Texture: + propertyType = PropertyType.Texture; + textureValue = prop.textureValue; + break; + } + } + + public void OnValidate() + { + propertyNameID = -1; + } + } + + [Serializable] + public class Preset + { + public string presetName; + public List propertyValues = new List(); + public List enabledKeywords = new List(); + public List disabledKeywords = new List(); + public List enabledPasses = new List(); + public List disabledPasses = new List(); + public int renderQueue = -1; + + + public void ApplyToDefaultMaterial(Material material) + { + foreach (var propertyValue in propertyValues) + propertyValue.Apply(material, true); + foreach (var enabledKeyword in enabledKeywords) + material.EnableKeyword(enabledKeyword); + foreach (var disabledKeyword in disabledKeywords) + material.DisableKeyword(disabledKeyword); + + Helper.SetShaderPassEnabled(new Object[] { material }, enabledPasses.Select(s => s.ToUpper()).ToArray(), true); + Helper.SetShaderPassEnabled(new Object[] { material }, disabledPasses.Select(s => s.ToUpper()).ToArray(), false); + + if (renderQueue >= 0) + material.renderQueue = renderQueue; + } + + public void ApplyToEditingMaterial(MaterialEditor editor, PerMaterialData perMaterialData) + { + for (int i = 0; i < editor.targets.Length; i++) + { + var material = editor.targets[i] as Material; + foreach (var propertyValue in propertyValues) + propertyValue.Apply(material, false, i == 0 ? perMaterialData : null); + foreach (var enabledKeyword in enabledKeywords) + { + material.EnableKeyword(enabledKeyword); + } + foreach (var disabledKeyword in disabledKeywords) + { + material.DisableKeyword(disabledKeyword); + } + + if (renderQueue >= 0) + material.renderQueue = renderQueue; + } + + Helper.SetShaderPassEnabled(editor.targets, enabledPasses.Select(s => s.ToUpper()).ToArray(), true); + Helper.SetShaderPassEnabled(editor.targets, disabledPasses.Select(s => s.ToUpper()).ToArray(), false); + } + + public void ApplyKeywordsAndPassesToMaterials(Object[] materials) + { + for (int i = 0; i < materials.Length; i++) + { + var material = materials[i] as Material; + foreach (var enabledKeyword in enabledKeywords) + material.EnableKeyword(enabledKeyword); + foreach (var disabledKeyword in disabledKeywords) + material.DisableKeyword(disabledKeyword); + } + + Helper.SetShaderPassEnabled(materials, enabledPasses.Select(s => s.ToUpper()).ToArray(), true); + Helper.SetShaderPassEnabled(materials, disabledPasses.Select(s => s.ToUpper()).ToArray(), false); + } + + public PropertyValue GetPropertyValue(string propName) + { + PropertyValue result = null; + if (propertyValues != null) + { + foreach (var propertyValue in propertyValues) + { + if (propertyValue.propertyName == propName) + { + result = propertyValue; + break; + } + } + } + return result; + } + + public void AddOrUpdate(MaterialProperty prop) + { + var propertyValue = GetPropertyValue(prop.name); + if (propertyValue != null) + propertyValue.CopyFromMaterialProperty(prop); + else + propertyValues.Add(new PropertyValue(prop)); + } + + public void AddOrUpdateIncludeExtraProperties(LWGUIMetaDatas metaDatas, MaterialProperty prop) + { + AddOrUpdate(prop); + foreach (var extraPropName in metaDatas.GetPropStaticData(prop).extraPropNames) + { + AddOrUpdate(metaDatas.GetProperty(extraPropName)); + } + } + + public void Remove(string propName) + { + var propertyValue = GetPropertyValue(propName); + if (propertyValue != null) + propertyValues.Remove(propertyValue); + } + + public void RemoveIncludeExtraProperties(LWGUIMetaDatas metaDatas, string propName) + { + Remove(propName); + foreach (var extraPropName in metaDatas.GetPropStaticData(propName).extraPropNames) + { + Remove(metaDatas.GetProperty(extraPropName).name); + } + } + } + + + [SerializeField] + private List presets; + + public List GetPresets() => presets; + + public int GetPresetCount() => presets?.Count ?? 0; + + public Preset GetPreset(int index) + { + if (presets == null) + return null; + + if (index < presets.Count) + { + return presets[index]; + } + else + { + Debug.LogError($"LWGUI: Index ({ index }) is out of range when accessing PresetFile: { name }"); + return null; + } + } + + public Preset GetPreset(float index) => GetPreset((int)index); + + private void OnValidate() + { + // Update All Material Default Values + MetaDataHelper.ReleaseAllShadersMetadataCache(); + } + + private void OnEnable() + { + if (PresetHelper.IsInitComplete) + PresetHelper.AddPreset(this); + } + } +} \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/LwguiShaderPropertyPreset.cs.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/LwguiShaderPropertyPreset.cs.meta new file mode 100644 index 00000000..cbbb7c5f --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/LwguiShaderPropertyPreset.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 42dccf97e5104fe4382a89f9bf084932 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/ShaderPropertyPreset.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/ShaderPropertyPreset.cs index 90da58ac..30d89627 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/ShaderPropertyPreset.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ScriptableObject/ShaderPropertyPreset.cs @@ -266,8 +266,8 @@ namespace LWGUI private void OnEnable() { - if (PresetHelper.IsInitComplete) - PresetHelper.AddPreset(this); + // Legacy class - PresetHelper.AddPreset is not compatible with this type + // Use LwguiShaderPropertyPreset instead } } } \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ShaderDrawer.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ShaderDrawer.cs index 754159da..16ab8dcf 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ShaderDrawer.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/ShaderDrawer.cs @@ -6,25 +6,33 @@ using System.IO; using System.Linq; using System.Reflection; using LWGUI.LwguiGradientEditor; +using LWGUI.Runtime; using LWGUI.Runtime.LwguiGradient; +using LWGUI.Timeline; using UnityEditor; using UnityEngine; using UnityEngine.Rendering; +using Object = UnityEngine.Object; namespace LWGUI { + #region Interfaces public interface IBaseDrawer { - void BuildStaticMetaData(Shader inShader, MaterialProperty inProp, MaterialProperty[] inProps, PropertyStaticData inoutPropertyStaticData){} + void BuildStaticMetaData(Shader inShader, MaterialProperty inProp, MaterialProperty[] inProps, PropertyStaticData inoutPropertyStaticData) {} - void GetDefaultValueDescription(Shader inShader, MaterialProperty inProp, MaterialProperty inDefaultProp, PerShaderData inPerShaderData, PerMaterialData inoutPerMaterialData){} + void GetDefaultValueDescription(Shader inShader, MaterialProperty inProp, MaterialProperty inDefaultProp, PerShaderData inPerShaderData, PerMaterialData inoutPerMaterialData) {} + + void GetCustomContextMenus(GenericMenu menu, Rect rect, MaterialProperty prop, LWGUIMetaDatas metaDatas) {} } - public interface IBasePresetDrawer + public interface IPresetDrawer { - ShaderPropertyPreset.Preset GetActivePreset(MaterialProperty inProp, ShaderPropertyPreset shaderPropertyPreset); + LwguiShaderPropertyPreset.Preset GetActivePreset(MaterialProperty inProp, LwguiShaderPropertyPreset lwguiShaderPropertyPreset); } - + #endregion + + #region Metadata public partial class PropertyStaticData { // Image @@ -34,18 +42,25 @@ namespace LWGUI public List buttonDisplayNames = new(); public List buttonCommands = new(); public List buttonDisplayNameWidths = new(); - } + // You can add more data that is determined during the initialization of the Drawer as a cache here, + // thereby avoiding the need to calculate it every frame in OnGUI(). + // >>>>>>>>>>>>>>>>>>>>>>>> Add new data here <<<<<<<<<<<<<<<<<<<<<<< + } + #endregion + + #region Basic Drawers /// /// Create a Folding Group + /// /// group: group name (Default: Property Name) /// keyword: keyword used for toggle, "_" = ignore, none or "__" = Property Name + "_ON", always Upper (Default: none) /// default Folding State: "on" or "off" (Default: off) /// default Toggle Displayed: "on" or "off" (Default: on) /// preset File Name: "Shader Property Preset" asset name, see Preset() for detail (Default: none) - /// Target Property Type: FLoat, express Toggle value + /// Target Property Type: Float, express Toggle value /// - public class MainDrawer : MaterialPropertyDrawer, IBaseDrawer, IBasePresetDrawer + public class MainDrawer : MaterialPropertyDrawer, IBaseDrawer, IPresetDrawer { protected LWGUIMetaDatas metaDatas; @@ -72,8 +87,8 @@ namespace LWGUI { this._group = group; this._keyword = keyword; - this._defaultFoldingState = defaultFoldingState.ToLower() == "on"; - this._defaultToggleDisplayed = defaultToggleDisplayed.ToLower() == "on"; + this._defaultFoldingState = Helper.StringToBool(defaultFoldingState); + this._defaultToggleDisplayed = Helper.StringToBool(defaultToggleDisplayed); this._presetFileName = presetFileName; } @@ -91,8 +106,8 @@ namespace LWGUI inoutPerMaterialData.propDynamicDatas[inProp.name].defaultValueDescription = inDefaultProp.floatValue > 0 ? "On" : "Off"; } - public ShaderPropertyPreset.Preset GetActivePreset(MaterialProperty inProp, ShaderPropertyPreset shaderPropertyPreset) => - PresetDrawer.GetActivePresetFromFloatProperty(inProp, shaderPropertyPreset); + public LwguiShaderPropertyPreset.Preset GetActivePreset(MaterialProperty inProp, LwguiShaderPropertyPreset lwguiShaderPropertyPreset) => + PresetDrawer.GetActivePresetFromFloatProperty(inProp, lwguiShaderPropertyPreset); public override void OnGUI(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { @@ -102,13 +117,15 @@ namespace LWGUI EditorGUI.showMixedValue = prop.hasMixedValue; EditorGUI.BeginChangeCheck(); - bool toggleResult = Helper.DrawFoldout(position, ref metaDatas.GetPropStaticData(prop).isExpanding, prop.floatValue > 0, _defaultToggleDisplayed, label); + bool toggleResult = Helper.DrawFoldout(position, ref metaDatas.GetPropStaticData(prop).isExpanding, !Helper.Approximately(prop.floatValue, 0), _defaultToggleDisplayed, label); if (Helper.EndChangeCheck(metaDatas, prop)) { prop.floatValue = toggleResult ? 1.0f : 0.0f; - Helper.SetShaderKeyWord(editor.targets, Helper.GetKeyWord(_keyword, prop.name), toggleResult); - PresetHelper.GetPresetFile(_presetFileName)?.presets[(int)prop.floatValue].ApplyToEditingMaterial(prop.targets, metaDatas.perMaterialData); + var keyword = Helper.GetKeywordName(_keyword, prop.name); + Helper.SetShaderKeywordEnabled(editor.targets, keyword, toggleResult); + PresetHelper.GetPresetAsset(_presetFileName)?.GetPreset(prop.floatValue)?.ApplyToEditingMaterial(editor, metaDatas.perMaterialData); + TimelineHelper.SetKeywordToggleToTimeline(prop, editor, keyword); } EditorGUI.showMixedValue = showMixedValue; } @@ -123,9 +140,9 @@ namespace LWGUI public override void Apply(MaterialProperty prop) { base.Apply(prop); - if (!prop.hasMixedValue) + if (!prop.hasMixedValue && VersionControlHelper.IsWriteable(prop.targets)) { - Helper.SetShaderKeyWord(prop.targets, Helper.GetKeyWord(_keyword, prop.name), prop.floatValue > 0f); + Helper.SetShaderKeywordEnabled(prop.targets, Helper.GetKeywordName(_keyword, prop.name), prop.floatValue > 0f); PresetDrawer.ApplyPreset(_presetFileName, prop); } } @@ -133,7 +150,8 @@ namespace LWGUI /// /// Draw a property with default style in the folding group - /// group: father group name, support suffix keyword for conditional display (Default: none) + /// + /// group: parent group name (Default: none) /// Target Property Type: Any /// public class SubDrawer : MaterialPropertyDrawer, IBaseDrawer @@ -153,7 +171,7 @@ namespace LWGUI protected virtual float GetVisibleHeight(MaterialProperty prop) { var height = MaterialEditor.GetDefaultPropertyHeight(prop); - return prop.type == MaterialProperty.PropType.Vector ? EditorGUIUtility.singleLineHeight : height; + return prop.GetPropertyType() == ShaderPropertyType.Vector ? EditorGUIUtility.singleLineHeight : height; } public virtual void BuildStaticMetaData(Shader inShader, MaterialProperty inProp, MaterialProperty[] inProps, PropertyStaticData inoutPropertyStaticData) @@ -164,6 +182,8 @@ namespace LWGUI public virtual void GetDefaultValueDescription(Shader inShader, MaterialProperty inProp, MaterialProperty inDefaultProp, PerShaderData inPerShaderData, PerMaterialData inoutPerMaterialData) { } + public virtual void GetCustomContextMenus(GenericMenu menu, Rect rect, MaterialProperty prop, LWGUIMetaDatas metaDatas) { } + public override void OnGUI(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { metaDatas = Helper.GetLWGUIMetadatas(editor); @@ -174,7 +194,7 @@ namespace LWGUI } else { - Debug.LogWarning("LWGUI: Property:'" + prop.name + "' Type:'" + prop.type + "' mismatch!"); + Debug.LogWarning("LWGUI: Property:'" + prop.name + "' Type:'" + prop.GetPropertyType() + "' mismatch!"); editor.DefaultShaderProperty(position, prop, label.text); } } @@ -187,19 +207,24 @@ namespace LWGUI // Draws a custom style property public virtual void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { - RevertableHelper.FixGUIWidthMismatch(prop.type, editor); + RevertableHelper.FixGUIWidthMismatch(prop.GetPropertyType(), editor); editor.DefaultShaderPropertyInternal(position, prop, label); } } + #endregion + #region Extra Drawers + + #region Numeric /// /// Similar to builtin Toggle() - /// group: father group name, support suffix keyword for conditional display (Default: none) + /// + /// group: parent group name (Default: none) /// keyword: keyword used for toggle, "_" = ignore, none or "__" = Property Name + "_ON", always Upper (Default: none) /// preset File Name: "Shader Property Preset" asset name, see Preset() for detail (Default: none) - /// Target Property Type: FLoat + /// Target Property Type: Float /// - public class SubToggleDrawer : SubDrawer, IBasePresetDrawer + public class SubToggleDrawer : SubDrawer, IPresetDrawer { private string _keyWord = String.Empty; private string _presetFileName = String.Empty; @@ -217,7 +242,10 @@ namespace LWGUI this._presetFileName = presetFileName; } - protected override bool IsMatchPropType(MaterialProperty property) { return property.type == MaterialProperty.PropType.Float; } + protected override bool IsMatchPropType(MaterialProperty property) + { + return property.GetPropertyType() is ShaderPropertyType.Float; + } public override void BuildStaticMetaData(Shader inShader, MaterialProperty inProp, MaterialProperty[] inProps, PropertyStaticData inoutPropertyStaticData) { @@ -230,20 +258,21 @@ namespace LWGUI inoutPerMaterialData.propDynamicDatas[inProp.name].defaultValueDescription = inDefaultProp.floatValue > 0 ? "On" : "Off"; } - public ShaderPropertyPreset.Preset GetActivePreset(MaterialProperty inProp, ShaderPropertyPreset shaderPropertyPreset) => - PresetDrawer.GetActivePresetFromFloatProperty(inProp, shaderPropertyPreset); + public LwguiShaderPropertyPreset.Preset GetActivePreset(MaterialProperty inProp, LwguiShaderPropertyPreset lwguiShaderPropertyPreset) => + PresetDrawer.GetActivePresetFromFloatProperty(inProp, lwguiShaderPropertyPreset); public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = prop.hasMixedValue; - var value = EditorGUI.Toggle(position, label, prop.floatValue > 0.0f); - string k = Helper.GetKeyWord(_keyWord, prop.name); + var value = EditorGUI.Toggle(position, label, !Helper.Approximately(prop.floatValue, 0)); if (Helper.EndChangeCheck(metaDatas, prop)) { prop.floatValue = value ? 1.0f : 0.0f; - Helper.SetShaderKeyWord(editor.targets, k, value); - PresetHelper.GetPresetFile(_presetFileName)?.presets[(int)prop.floatValue].ApplyToEditingMaterial(prop.targets, metaDatas.perMaterialData); + var keyword = Helper.GetKeywordName(_keyWord, prop.name); + Helper.SetShaderKeywordEnabled(editor.targets, keyword, value); + PresetHelper.GetPresetAsset(_presetFileName)?.GetPreset(prop.floatValue)?.ApplyToEditingMaterial(editor, metaDatas.perMaterialData); + TimelineHelper.SetKeywordToggleToTimeline(prop, editor, keyword); } EditorGUI.showMixedValue = false; } @@ -251,9 +280,9 @@ namespace LWGUI public override void Apply(MaterialProperty prop) { base.Apply(prop); - if (!prop.hasMixedValue) + if (!prop.hasMixedValue && VersionControlHelper.IsWriteable(prop.targets)) { - Helper.SetShaderKeyWord(prop.targets, Helper.GetKeyWord(_keyWord, prop.name), prop.floatValue > 0f); + Helper.SetShaderKeywordEnabled(prop.targets, Helper.GetKeywordName(_keyWord, prop.name), prop.floatValue > 0f); PresetDrawer.ApplyPreset(_presetFileName, prop); } } @@ -261,7 +290,8 @@ namespace LWGUI /// /// Similar to builtin PowerSlider() - /// group: father group name, support suffix keyword for conditional display (Default: none) + /// + /// group: parent group name (Default: none) /// power: power of slider (Default: 1) /// Target Property Type: Range /// @@ -277,11 +307,11 @@ namespace LWGUI this._power = Mathf.Clamp(power, 0, float.MaxValue); } - protected override bool IsMatchPropType(MaterialProperty property) { return property.type == MaterialProperty.PropType.Range; } + protected override bool IsMatchPropType(MaterialProperty property) { return property.GetPropertyType() == ShaderPropertyType.Range; } public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { - RevertableHelper.FixGUIWidthMismatch(prop.type, editor); + RevertableHelper.FixGUIWidthMismatch(prop.GetPropertyType(), editor); EditorGUI.showMixedValue = prop.hasMixedValue; var rect = position; ReflectionHelper.DoPowerRangeProperty(rect, prop, label, _power); @@ -291,7 +321,8 @@ namespace LWGUI /// /// Similar to builtin IntRange() - /// group: father group name, support suffix keyword for conditional display (Default: none) + /// + /// group: parent group name (Default: none) /// Target Property Type: Range /// public class SubIntRangeDrawer : SubDrawer @@ -301,13 +332,13 @@ namespace LWGUI this.group = group; } - protected override bool IsMatchPropType(MaterialProperty property) { return property.type == MaterialProperty.PropType.Range; } + protected override bool IsMatchPropType(MaterialProperty property) { return property.GetPropertyType() == ShaderPropertyType.Range; } public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { - RevertableHelper.FixGUIWidthMismatch(prop.type, editor); + RevertableHelper.FixGUIWidthMismatch(prop.GetPropertyType(), editor); - if (prop.type != MaterialProperty.PropType.Range) + if (prop.GetPropertyType() != ShaderPropertyType.Range) { EditorGUI.LabelField(position, "IntRange used on a non-range property: " + prop.name, EditorStyles.helpBox); } @@ -330,7 +361,8 @@ namespace LWGUI /// /// Draw a min max slider - /// group: father group name, support suffix keyword for conditional display (Default: none) + /// + /// group: parent group name (Default: none) /// minPropName: Output Min Property Name /// maxPropName: Output Max Property Name /// Target Property Type: Range, range limits express the MinMaxSlider value range @@ -350,7 +382,7 @@ namespace LWGUI this._maxPropName = maxPropName; } - protected override bool IsMatchPropType(MaterialProperty property) { return property.type == MaterialProperty.PropType.Range; } + protected override bool IsMatchPropType(MaterialProperty property) { return property.GetPropertyType() == ShaderPropertyType.Range; } public override void BuildStaticMetaData(Shader inShader, MaterialProperty inProp, MaterialProperty[] inProps, PropertyStaticData inoutPropertyStaticData) { @@ -442,11 +474,12 @@ namespace LWGUI /// /// Similar to builtin Enum() / KeywordEnum() - /// group: father group name, support suffix keyword for conditional display (Default: none) + /// + /// group: parent group name (Default: none) /// n(s): display name /// k(s): keyword /// v(s): value - /// Target Property Type: FLoat, express current keyword index + /// Target Property Type: Float, express current keyword index /// public class KWEnumDrawer : SubDrawer { @@ -520,7 +553,7 @@ namespace LWGUI this._values = values; } - protected override bool IsMatchPropType(MaterialProperty property) { return property.type == MaterialProperty.PropType.Float; } + protected override bool IsMatchPropType(MaterialProperty property) { return property.GetPropertyType() is ShaderPropertyType.Float; } protected virtual string GetKeywordName(string propName, string name) { return (name).Replace(' ', '_').ToUpperInvariant(); } @@ -560,16 +593,16 @@ namespace LWGUI if (Helper.EndChangeCheck(metaDatas, prop)) { prop.floatValue = _values[newIndex]; - Helper.SetShaderKeyWord(editor.targets, keyWords, newIndex); + Helper.SelectShaderKeyword(editor.targets, keyWords, newIndex); } } public override void Apply(MaterialProperty prop) { base.Apply(prop); - if (!prop.hasMixedValue) + if (!prop.hasMixedValue && VersionControlHelper.IsWriteable(prop.targets)) { - Helper.SetShaderKeyWord(prop.targets, GetKeywords(prop), (int)prop.floatValue); + Helper.SelectShaderKeyword(prop.targets, GetKeywords(prop), (int)prop.floatValue); } } } @@ -649,13 +682,494 @@ namespace LWGUI protected override string GetKeywordName(string propName, string name) { return (propName + "_" + name).Replace(' ', '_').ToUpperInvariant(); } } + + /// + /// Popping a menu, you can select the Shader Property Preset, the Preset values will replaces the default values + /// + /// group: parent group name (Default: none) + /// presetFileName: "Shader Property Preset" asset name, you can create new Preset by + /// "Right Click > Create > LWGUI > Shader Property Preset" in Project window, + /// *any Preset in the entire project cannot have the same name* + /// Target Property Type: Float, express current keyword index + /// + public class PresetDrawer : SubDrawer, IPresetDrawer + { + public string presetFileName; + + public PresetDrawer(string presetFileName) : this("_", presetFileName) { } + + public PresetDrawer(string group, string presetFileName) + { + this.group = group; + this.presetFileName = presetFileName; + } + + public static void SetPresetAssetToStaticData(PropertyStaticData inoutPropertyStaticData, string presetFileName) + { + inoutPropertyStaticData.propertyPresetAsset = PresetHelper.GetPresetAsset(presetFileName); + } + + public static LwguiShaderPropertyPreset.Preset GetActivePresetFromFloatProperty(MaterialProperty inProp, LwguiShaderPropertyPreset lwguiShaderPropertyPreset) + { + LwguiShaderPropertyPreset.Preset preset = null; + var index = (int)inProp.floatValue; + if (lwguiShaderPropertyPreset && index >= 0 && index < lwguiShaderPropertyPreset.GetPresetCount()) + { + preset = lwguiShaderPropertyPreset.GetPreset(index); + } + return preset; + } + + public static void ApplyPreset(string presetFileName, MaterialProperty prop) + { + var presetFile = PresetHelper.GetPresetAsset(presetFileName); + if (presetFile != null + && prop.floatValue < presetFile.GetPresetCount() + && ShowIfDecorator.GetShowIfResultToFilterDrawerApplying(prop) + ) + { + presetFile.GetPreset(prop.floatValue)?.ApplyKeywordsAndPassesToMaterials(prop.targets); + } + } + + protected override bool IsMatchPropType(MaterialProperty property) { return property.GetPropertyType() == ShaderPropertyType.Float; } + + public override void BuildStaticMetaData(Shader inShader, MaterialProperty inProp, MaterialProperty[] inProps, PropertyStaticData inoutPropertyStaticData) + { + base.BuildStaticMetaData(inShader, inProp, inProps, inoutPropertyStaticData); + SetPresetAssetToStaticData(inoutPropertyStaticData, presetFileName); + } + + public override void GetDefaultValueDescription(Shader inShader, MaterialProperty inProp, MaterialProperty inDefaultProp, PerShaderData inPerShaderData, PerMaterialData inoutPerMaterialData) + { + var index = (int)inDefaultProp.floatValue; + var propertyPreset = inPerShaderData.propStaticDatas[inProp.name].propertyPresetAsset; + + if (propertyPreset && index < propertyPreset.GetPresetCount() && index >= 0) + inoutPerMaterialData.propDynamicDatas[inProp.name].defaultValueDescription = propertyPreset.GetPreset(index).presetName; + } + + public LwguiShaderPropertyPreset.Preset GetActivePreset(MaterialProperty inProp, LwguiShaderPropertyPreset lwguiShaderPropertyPreset) => + GetActivePresetFromFloatProperty(inProp, lwguiShaderPropertyPreset); + + public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) + { + EditorGUI.BeginChangeCheck(); + EditorGUI.showMixedValue = prop.hasMixedValue; + + var rect = position; + + int index = (int)Mathf.Max(0, prop.floatValue); + var presetFile = PresetHelper.GetPresetAsset(presetFileName); + if (presetFile == null || presetFile.GetPresetCount() == 0) + { + Helper.DrawShaderPropertyWithErrorLabel(rect, prop, label, editor, $"Invalid Preset File: {presetFileName}"); + return; + } + + if (index < presetFile.GetPresetCount()) + { + var presetNames = presetFile.GetPresets().Select((inPreset) => new GUIContent(inPreset.presetName)).ToArray(); + if (EditorGUI.showMixedValue) + index = -1; + else + Helper.AdaptiveFieldWidth(EditorStyles.popup, presetNames[index]); + int newIndex = EditorGUI.Popup(rect, label, index, presetNames); + if (Helper.EndChangeCheck(metaDatas, prop)) + { + prop.floatValue = newIndex; + presetFile.GetPreset(newIndex).ApplyToEditingMaterial(editor, metaDatas.perMaterialData); + } + EditorGUI.showMixedValue = false; + } + else + { + Helper.DrawShaderPropertyWithErrorLabel(position, prop, label, editor, $"Out of Index Range"); + Debug.LogError($"LWGUI: { prop.name } out of Preset index range!"); + } + + } + + public override void Apply(MaterialProperty prop) + { + base.Apply(prop); + if (!prop.hasMixedValue && VersionControlHelper.IsWriteable(prop.targets)) + { + ApplyPreset(presetFileName, prop); + } + } + } + /// + /// Draw the Int value as a Bit Mask. + /// Note: + /// - Currently only 8 bits are supported. + /// + /// Warning 1: If used to set Stencil, it will conflict with SRP Batcher! + /// (Reproduced in Unity 2022) + /// SRP Batcher does not correctly handle multiple materials with different Stencil Ref values, + /// mistakenly merging them into a single Batch and randomly selecting one material's Stencil Ref value for the entire Batch. + /// In theory, if different materials have different Stencil Ref values, they should not be merged into a single Batch due to differing Render States. + /// Solution: + /// - Force disable SRP Batcher by setting the Material Property Block + /// - Place materials with the same Stencil Ref value in a separate Render Queue to ensure the Batch's Render State is correct + /// + /// Warning 2: Once in use, do not change the Target Property Type! + /// The underlying type of Int Property is Float Property, and in Materials, Int and Integer are stored separately. + /// Once a Material is saved, the Property Type is determined. + /// If you change the Property Type at this point (such as switching between Int/Integer), some strange bugs may occur. + /// If you must change the Property Type, it is recommended to modify the Property Name as well or delete the saved Property in the material. + /// + /// group: parent group name (Default: none) + /// bitDescription 7-0: Description of each Bit. (Default: none) + /// Target Property Type: Int/Integer + /// + public class BitMaskDrawer : SubDrawer + { + public int bitCount = 8; + + public float maxHeight = EditorGUIUtility.singleLineHeight; + + public List buttonLables = new (); + + public List buttonWidths = new(); + + public List buttonStyles = new(); + + public float totalButtonWidth; + + private static readonly int _hint = "BitMask".GetHashCode(); + + private static readonly float _minButtonWidth = 25; + + private static readonly float _buttonPadding = 1.0f; + + public BitMaskDrawer() : this(string.Empty, null) { } + + public BitMaskDrawer(string group) : this(group, null) { } + + public BitMaskDrawer(string group, string bitDescription7, string bitDescription6, string bitDescription5, string bitDescription4, string bitDescription3, string bitDescription2, string bitDescription1, string bitDescription0) + : this(group, new List() { bitDescription0, bitDescription1, bitDescription2, bitDescription3, bitDescription4, bitDescription5, bitDescription6, bitDescription7 }) { } + + public BitMaskDrawer(string group, List bitDescriptions) + { + this.group = group; + + bitCount = Mathf.Clamp(bitCount, 1, 16); + + for (int i = 0; i < bitCount; i++) + { + var description = bitDescriptions != null && bitDescriptions.Count > i ? bitDescriptions[i] : string.Empty; + buttonLables.Add(new GUIContent( + string.IsNullOrEmpty(description) ? i.ToString() : i + "\n" + description)); + buttonWidths.Add(Mathf.Max(_minButtonWidth, EditorStyles.miniButton.CalcSize(buttonLables[i]).x)); + + if (!string.IsNullOrEmpty(description)) + maxHeight = EditorGUIUtility.singleLineHeight * 2; + } + + for (int i = 0; i < bitCount; i++) + { + if (i == 0) + buttonStyles.Add(new GUIStyle(EditorStyles.miniButtonRight)); + else if (i == bitCount - 1) + buttonStyles.Add(new GUIStyle(EditorStyles.miniButtonLeft)); + else + buttonStyles.Add(new GUIStyle(EditorStyles.miniButton)); + + buttonStyles[i].fixedHeight = maxHeight; + } + + totalButtonWidth = buttonWidths.Sum(); + } + + protected override bool IsMatchPropType(MaterialProperty property) + => property.GetPropertyType() is ShaderPropertyType.Float or ShaderPropertyType.Int; + + protected override float GetVisibleHeight(MaterialProperty prop) { return maxHeight; } + + public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) + { + label.tooltip += $"\nCurrent Value: { prop.GetNumericValue() }"; + + int controlId = GUIUtility.GetControlID(_hint, FocusType.Keyboard, position); + var fieldRect = EditorGUI.PrefixLabel(position, controlId, label); + + if (position.width < totalButtonWidth) + return; + + fieldRect.xMin = fieldRect.xMax; + + for (int i = 0; i < bitCount; i++) + { + fieldRect.xMin = fieldRect.xMax - buttonWidths[i]; + var buttonLable = buttonLables[i]; + var active = RuntimeHelper.IsBitEnabled((int)prop.GetNumericValue(), i); + var style = buttonStyles[i]; + var buttonRect = fieldRect; + + if (i > 0 && i < bitCount - 1) + { + buttonRect.xMin -= _buttonPadding; + buttonRect.xMax += _buttonPadding * 2; + } + + if (style.richText = prop.hasMixedValue) + { + // https://docs.unity3d.com/2021.3/Documentation/Manual/StyledText.html + buttonLable = new GUIContent($"{ buttonLable.text }"); + } + + if (Helper.ToggleButton(buttonRect, buttonLable, active, style, _buttonPadding * 1.5f)) + { + prop.SetNumericValue(RuntimeHelper.SetBitEnabled((int)prop.GetNumericValue(), i, !active)); + } + + fieldRect.xMax = fieldRect.xMin; + } + } + } + + /// + /// Visually similar to Ramp(), but RampAtlasIndexer() must be used together with RampAtlas(). + /// The actual stored value is the index of the current Ramp in the Ramp Atlas SO, used for sampling the Ramp Atlas Texture in the Shader. + /// + /// group: parent group name. + /// rampAtlasPropName: RampAtlas() property name. + /// defaultRampName: default ramp name. (Default: Ramp) + /// colorSpace: default ramp color space. (sRGB/Linear) (Default: sRGB) + /// viewChannelMask: editable channels. (Default: RGBA) + /// timeRange: the abscissa display range (1/24/2400), is used to optimize the editing experience when the abscissa is time of day. (Default: 1) + /// Target Property Type: Float + /// + public class RampAtlasIndexerDrawer : RampDrawer + { + public string rampAtlasPropName = string.Empty; + public string defaultRampName = "Ramp"; + + private LwguiRampAtlas _rampAtlasSO; + public LwguiRampAtlas rampAtlasSO + { + get + { + if (!_rampAtlasSO) + { + var rampAtlasProp = metaDatas.GetProperty(rampAtlasPropName); + if (rampAtlasProp != null && rampAtlasProp.GetPropertyType() == ShaderPropertyType.Texture) + { + _rampAtlasSO = LwguiRampAtlas.LoadRampAtlasSO(rampAtlasProp.textureValue); + } + } + return _rampAtlasSO; + } + + set => _rampAtlasSO = value; + } + + private LwguiRampAtlas.Ramp _currentRamp; + private bool _rampAtlasSOHasMixedValue; + + public RampAtlasIndexerDrawer(string group, string rampAtlasPropName) : this(group, rampAtlasPropName, "Ramp") {} + + public RampAtlasIndexerDrawer(string group, string rampAtlasPropName, string defaultRampName) : this(group, rampAtlasPropName, defaultRampName, "sRGB") {} + + public RampAtlasIndexerDrawer(string group, string rampAtlasPropName, string defaultRampName, string colorSpace) : this(group, rampAtlasPropName, defaultRampName, colorSpace, "RGBA") {} + + public RampAtlasIndexerDrawer(string group, string rampAtlasPropName, string defaultRampName, string colorSpace, string viewChannelMask) : this(group, rampAtlasPropName, defaultRampName, colorSpace, viewChannelMask, 1) {} + + public RampAtlasIndexerDrawer(string group, string rampAtlasPropName, string defaultRampName, string colorSpace, string viewChannelMask, float timeRange) + { + this.group = group; + this.rampAtlasPropName = rampAtlasPropName; + this.defaultRampName = defaultRampName; + this.colorSpace = colorSpace.ToLower() == "linear" ? ColorSpace.Linear : ColorSpace.Gamma; + this.viewChannelMask = LwguiGradient.ChannelMask.None; + { + viewChannelMask = viewChannelMask.ToLower(); + for (int c = 0; c < (int)LwguiGradient.Channel.Num; c++) + { + if (viewChannelMask.Contains(LwguiGradient.channelNames[c])) + this.viewChannelMask |= LwguiGradient.ChannelIndexToMask(c); + } + } + this.timeRange = LwguiGradient.GradientTimeRange.One; + { + if ((int)timeRange == (int)LwguiGradient.GradientTimeRange.TwentyFour) + this.timeRange = LwguiGradient.GradientTimeRange.TwentyFour; + else if ((int)timeRange == (int)LwguiGradient.GradientTimeRange.TwentyFourHundred) + this.timeRange = LwguiGradient.GradientTimeRange.TwentyFourHundred; + } + } + + protected override bool IsMatchPropType(MaterialProperty property) => property.GetPropertyType() is ShaderPropertyType.Float or ShaderPropertyType.Int; + + protected override void OnRampPropUpdate(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) + { + if (doRegisterUndo) + OnGradientEditorChange(null); + } + + protected override void OnGradientEditorChange(LwguiGradient gradient) + { + LwguiGradientWindow.RegisterSerializedObjectUndo(rampAtlasSO); + } + + protected override void OnEditRampMap(MaterialProperty prop, LwguiGradient gradient) + { + rampAtlasSO?.UpdateTexturePixels(); + OnGradientEditorChange(null); + } + + protected override void OnSaveRampMap(MaterialProperty prop, LwguiGradient gradient) + { + rampAtlasSO?.SaveTexture(checkoutAndForceWrite:true); + rampAtlasSO?.SaveRampAtlasSO(); + } + + protected override LwguiGradient GetLwguiGradient(MaterialProperty prop, out bool isDirty) + { + isDirty = false; + if (rampAtlasSO && (int)prop.GetNumericValue() < rampAtlasSO.ramps.Count) + { + _currentRamp = rampAtlasSO.GetRamp((int)prop.GetNumericValue()); + if (_currentRamp == null) + return null; + + isDirty = EditorUtility.IsDirty(rampAtlasSO); + colorSpace = _currentRamp.colorSpace; + viewChannelMask = _currentRamp.channelMask; + timeRange = _currentRamp.timeRange; + return _currentRamp.gradient; + } + else + return null; + } + + protected override void CreateNewRampMap(MaterialProperty prop, MaterialEditor editor) + { + // Create a Ramp + if (rampAtlasSO) + { + var newIndex = rampAtlasSO.ramps.Count; + + rampAtlasSO.ramps.Add(new LwguiRampAtlas.Ramp() + { + name = defaultRampName, + gradient = LwguiGradient.white, + colorSpace = colorSpace, + channelMask = viewChannelMask, + timeRange = timeRange + }); + + prop.SetNumericValue(newIndex); + if (newIndex >= rampAtlasSO.rampAtlasHeight) + rampAtlasSO.rampAtlasHeight *= 2; + rampAtlasSO.UpdateTexturePixels(); + } + // Create a Ramp Atlas SO + else + { + var rampAtlasProp = metaDatas.GetProperty(rampAtlasPropName); + var newRampAtlasSO = LwguiRampAtlas.CreateRampAtlasSO(rampAtlasProp, metaDatas); + if (newRampAtlasSO) + { + rampAtlasSO = newRampAtlasSO; + rampAtlasProp.textureValue = rampAtlasSO?.rampAtlasTexture; + } + } + } + + protected override void SwitchRampMap(MaterialProperty prop, Texture2D newRampMap, int index) + { + prop.SetNumericValue(index); + OnSwitchRampMap(prop, newRampMap, index); + LWGUI.OnValidate(metaDatas); + } + + protected override LwguiGradient DiscardRampMap(MaterialProperty prop, LwguiGradient gradient) + { + rampAtlasSO?.DiscardChanges(); + _currentRamp = rampAtlasSO?.GetRamp((int)prop.GetNumericValue()); + return _currentRamp?.gradient; + } + + protected override void DrawRampSelector(Rect selectButtonRect, MaterialProperty prop, LwguiGradient gradient) + { + if (!_rampAtlasSOHasMixedValue) + RampHelper.RampIndexSelectorOverride(selectButtonRect, prop, rampAtlasSO, SwitchRampMap); + } + + protected override void DrawRampObjectField(Rect rampFieldRect, MaterialProperty prop, LwguiGradient gradient) + { + if (rampAtlasSO && !_rampAtlasSOHasMixedValue) + EditorGUI.ObjectField(rampFieldRect, gradient?.GetPreviewRampTexture(), typeof(Texture2D), false); + else + { + EditorGUI.BeginChangeCheck(); + var newRampAtlasSO = EditorGUI.ObjectField(rampFieldRect, rampAtlasSO, typeof(LwguiRampAtlas), false) as LwguiRampAtlas; + if (EditorGUI.EndChangeCheck()) + { + rampAtlasSO = newRampAtlasSO; + metaDatas.GetProperty(rampAtlasPropName).textureValue = rampAtlasSO?.rampAtlasTexture; + } + } + } + + protected override void DrawPreviewTextureOverride(Rect previewRect, MaterialProperty prop, LwguiGradient gradient) + { + if (gradient != null && !EditorGUI.showMixedValue) + LwguiGradientEditorHelper.DrawGradientWithSeparateAlphaChannel(previewRect, gradient, colorSpace, viewChannelMask); + } + + public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) + { + var rampAtlasProp = metaDatas.GetProperty(rampAtlasPropName); + if (rampAtlasProp == null || rampAtlasProp.GetPropertyType() != ShaderPropertyType.Texture) + { + Helper.DrawShaderPropertyWithErrorLabel(position, prop, label, editor, "Invalid rampAtlasPropName"); + Debug.LogError($"LWGUI: Property { prop.name } has invalid rampAtlasPropName: { rampAtlasPropName }"); + return; + } + + // Add Info to label + var currentIndex = (int)prop.GetNumericValue(); + label.tooltip += $"\nCurrent Value: {currentIndex}"; + if (rampAtlasSO) + { + var isOutOfRange = currentIndex >= rampAtlasSO.ramps.Count; + var info = isOutOfRange ? "OUT OF RANGE!" : rampAtlasSO.ramps[currentIndex].name; + label.text += $" ({ currentIndex }: { info } - { rampAtlasSO.ramps.Count })"; + } + else + label.text += $" ({ currentIndex } - NULL)"; + + // Handle Mixed Value + _rampAtlasSOHasMixedValue = rampAtlasProp.hasMixedValue; + var showMixedValue = EditorGUI.showMixedValue; + EditorGUI.showMixedValue = prop.hasMixedValue || _rampAtlasSOHasMixedValue; + + + base.DrawProp(position, prop, label, editor); + + + // Clear + _rampAtlasSO = null; + _currentRamp = null; + EditorGUI.showMixedValue = showMixedValue; + } + } + + #endregion + + #region Texture /// /// Draw a Texture property in single line with a extra property - /// group: father group name, support suffix keyword for conditional display (Default: none) + /// + /// group: parent group name (Default: none) /// extraPropName: extra property name (Default: none) /// Target Property Type: Texture /// Extra Property Type: Color, Vector + /// Target Property Type: Texture2D /// public class TexDrawer : SubDrawer { @@ -674,7 +1188,7 @@ namespace LWGUI protected override float GetVisibleHeight(MaterialProperty prop) { return EditorGUIUtility.singleLineHeight; } - protected override bool IsMatchPropType(MaterialProperty property) { return property.type == MaterialProperty.PropType.Texture; } + protected override bool IsMatchPropType(MaterialProperty property) { return property.GetPropertyType() == ShaderPropertyType.Texture; } public override void BuildStaticMetaData(Shader inShader, MaterialProperty inProp, MaterialProperty[] inProps, PropertyStaticData inoutPropertyStaticData) { @@ -688,7 +1202,7 @@ namespace LWGUI if (defaultExtraProp != null) { var text = string.Empty; - if (defaultExtraProp.type == MaterialProperty.PropType.Vector) + if (defaultExtraProp.GetPropertyType() == ShaderPropertyType.Vector) text = ChannelDrawer.GetChannelName(defaultExtraProp); else text = RevertableHelper.GetPropertyDefaultValueText(defaultExtraProp); @@ -717,7 +1231,7 @@ namespace LWGUI var extraRect = MaterialEditor.GetRightAlignedFieldRect(rect); extraRect.height = rect.height; - if (extraProp.type == MaterialProperty.PropType.Vector) + if (extraProp.GetPropertyType() == ShaderPropertyType.Vector) _channelDrawer.OnGUI(extraRect, extraProp, GUIContent.none, editor); else editor.ShaderProperty(extraRect, extraProp, GUIContent.none); @@ -731,10 +1245,437 @@ namespace LWGUI } } + /// + /// Draw an unreal style Ramp Map Editor (Default Ramp Map Resolution: 256 * 2) + /// NEW: The new LwguiGradient type has both the Gradient and Curve editors, and can be used in C# scripts and runtime, and is intended to replace UnityEngine.Gradient + /// + /// group: parent group name (Default: none) + /// defaultFileName: default Ramp Map file name when create a new one (Default: RampMap) + /// rootPath: the path where ramp is stored, replace '/' with '.' (for example: Assets.Art.Ramps). when selecting ramp, it will also be filtered according to the path (Default: Assets) + /// colorSpace: switch sRGB / Linear in ramp texture import setting (Default: sRGB) + /// defaultWidth: default Ramp Width. (Default: 256) + /// viewChannelMask: editable channels. (Default: RGBA) + /// timeRange: the abscissa display range (1/24/2400), is used to optimize the editing experience when the abscissa is time of day. (Default: 1) + /// Target Property Type: Texture2D + /// + public class RampDrawer : SubDrawer + { + public static readonly string DefaultRootPath = "Assets"; + + public string rootPath = "Assets"; + public string saveFilePanelTitle = "Create New Ramp Texture"; + public string defaultFileName = "RampMap"; + public string fileExtension = "png"; + public int defaultWidth = 256; + public int defaultHeight = 2; + public ColorSpace colorSpace = ColorSpace.Gamma; + public LwguiGradient.ChannelMask viewChannelMask = LwguiGradient.ChannelMask.All; + public LwguiGradient.GradientTimeRange timeRange = LwguiGradient.GradientTimeRange.One; + public bool doRegisterUndo; + + private static readonly GUIContent _iconMixImage = EditorGUIUtility.IconContent("darkviewbackground"); + + private static readonly float _rampPreviewHeight = EditorGUIUtility.singleLineHeight; + private static readonly float _rampButtonsHeight = EditorGUIUtility.singleLineHeight; + + protected override float GetVisibleHeight(MaterialProperty prop) { return _rampPreviewHeight + _rampButtonsHeight; } + + public RampDrawer() : this(String.Empty) { } + + public RampDrawer(string group) : this(group, "RampMap") { } + + public RampDrawer(string group, string defaultFileName) : this(group, defaultFileName, DefaultRootPath, 256) { } + + public RampDrawer(string group, string defaultFileName, float defaultWidth) : this(group, defaultFileName, DefaultRootPath, defaultWidth) { } + + public RampDrawer(string group, string defaultFileName, string rootPath, float defaultWidth) : this(group, defaultFileName, rootPath, "sRGB", defaultWidth) { } + + public RampDrawer(string group, string defaultFileName, string rootPath, string colorSpace, float defaultWidth) : this(group, defaultFileName, rootPath, colorSpace, defaultWidth, "RGBA") { } + + public RampDrawer(string group, string defaultFileName, string rootPath, string colorSpace, float defaultWidth, string viewChannelMask) : this(group, defaultFileName, rootPath, colorSpace, defaultWidth, viewChannelMask, 1) { } + + public RampDrawer(string group, string defaultFileName, string rootPath, string colorSpace, float defaultWidth, string viewChannelMask, float timeRange) + { + if (!rootPath.StartsWith(DefaultRootPath)) + { + Debug.LogError("LWGUI: Ramp Root Path: '" + rootPath + "' must start with 'Assets'!"); + rootPath = DefaultRootPath; + } + this.group = group; + this.defaultFileName = defaultFileName; + this.rootPath = rootPath.Replace('.', '/'); + this.colorSpace = colorSpace.ToLower() == "linear" ? ColorSpace.Linear : ColorSpace.Gamma; + this.defaultWidth = (int)Mathf.Max(2, defaultWidth); + this.viewChannelMask = LwguiGradient.ChannelMask.None; + { + viewChannelMask = viewChannelMask.ToLower(); + for (int c = 0; c < (int)LwguiGradient.Channel.Num; c++) + { + if (viewChannelMask.Contains(LwguiGradient.channelNames[c])) + this.viewChannelMask |= LwguiGradient.ChannelIndexToMask(c); + } + + if (this.viewChannelMask == (LwguiGradient.ChannelMask.RGB | LwguiGradient.ChannelMask.Alpha)) + this.viewChannelMask = LwguiGradient.ChannelMask.All; + } + this.timeRange = LwguiGradient.GradientTimeRange.One; + { + if ((int)timeRange == (int)LwguiGradient.GradientTimeRange.TwentyFour) + this.timeRange = LwguiGradient.GradientTimeRange.TwentyFour; + else if ((int)timeRange == (int)LwguiGradient.GradientTimeRange.TwentyFourHundred) + this.timeRange = LwguiGradient.GradientTimeRange.TwentyFourHundred; + } + } + + protected override bool IsMatchPropType(MaterialProperty property) { return property.GetPropertyType() == ShaderPropertyType.Texture; } + + protected virtual void OnRampPropUpdate(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { } + + protected virtual void OnCreateNewRampMap(MaterialProperty prop) { } + + protected virtual void OnGradientEditorChange(LwguiGradient gradient) { } + + protected virtual void OnEditRampMap(MaterialProperty prop, LwguiGradient gradient) { } + + protected virtual void OnSaveRampMap(MaterialProperty prop, LwguiGradient gradient) { } + + protected virtual void OnDiscardRampMap(MaterialProperty prop, LwguiGradient gradient) { } + + protected virtual void OnSwitchRampMap(MaterialProperty prop, Texture2D newRampMap, int index) { } + + protected virtual LwguiGradient GetLwguiGradient(MaterialProperty prop, out bool isDirty) + { + return RampHelper.GetGradientFromTexture(prop.textureValue, out isDirty, false, doRegisterUndo); + } + + protected virtual void EditWhenNoRampMap(MaterialProperty prop, MaterialEditor editor) + { + LwguiGradientWindow.CloseWindow(); + CreateNewRampMap(prop, editor); + OnCreateNewRampMap(prop); + LWGUI.OnValidate(metaDatas); + } + + protected virtual void CreateNewRampMap(MaterialProperty prop, MaterialEditor editor) + { + string createdFileRelativePath = string.Empty; + while (true) + { + if (!Directory.Exists(Helper.ProjectPath + rootPath)) + Directory.CreateDirectory(Helper.ProjectPath + rootPath); + + // TODO: Warning: + // PropertiesGUI() is being called recursively. If you want to render the default gui for shader properties then call PropertiesDefaultGUI() instead + var absPath = EditorUtility.SaveFilePanel(saveFilePanelTitle, rootPath, defaultFileName, fileExtension); + + if (absPath.StartsWith(Helper.ProjectPath + rootPath)) + { + createdFileRelativePath = absPath.Replace(Helper.ProjectPath, string.Empty); + break; + } + else if (absPath != string.Empty) + { + var retry = EditorUtility.DisplayDialog("Invalid Path", "Please select the subdirectory of '" + Helper.ProjectPath + rootPath + "'", "Retry", "Cancel"); + if (!retry) break; + } + else + { + break; + } + } + + if (!string.IsNullOrEmpty(createdFileRelativePath)) + { + RampHelper.CreateAndSaveNewGradientTexture(defaultWidth, defaultHeight, createdFileRelativePath, colorSpace == ColorSpace.Linear); + prop.textureValue = AssetDatabase.LoadAssetAtPath(createdFileRelativePath); + } + } + + protected virtual void ChangeRampMap(MaterialProperty prop, LwguiGradient gradient) + { + RampHelper.SetGradientToTexture(prop.textureValue, gradient, false); + } + + protected virtual void SaveRampMap(MaterialProperty prop, LwguiGradient gradient) + { + RampHelper.SetGradientToTexture(prop.textureValue, gradient, true); + } + + protected virtual void SwitchRampMap(MaterialProperty prop, Texture2D newRampMap, int index) + { + prop.textureValue = newRampMap; + OnSwitchRampMap(prop, newRampMap, index); + LWGUI.OnValidate(metaDatas); + } + + protected virtual LwguiGradient DiscardRampMap(MaterialProperty prop, LwguiGradient gradient) + { + // Tex > Gradient + gradient = RampHelper.GetGradientFromTexture(prop.textureValue, out _, true); + // GradientObject > Tex + RampHelper.SetGradientToTexture(prop.textureValue, gradient, true); + return gradient; + } + + protected virtual void DrawRampSelector(Rect selectButtonRect, MaterialProperty prop, LwguiGradient gradient) + { + RampHelper.RampMapSelectorOverride(selectButtonRect, prop, rootPath, SwitchRampMap); + } + + // Manual replace ramp map + protected virtual void DrawRampObjectField(Rect rampFieldRect, MaterialProperty prop, LwguiGradient gradient) + { + EditorGUI.BeginChangeCheck(); + var newManualSelectedTexture = (Texture2D)EditorGUI.ObjectField(rampFieldRect, prop.textureValue, typeof(Texture2D), false); + if (Helper.EndChangeCheck(metaDatas, prop)) + { + if (newManualSelectedTexture && !AssetDatabase.GetAssetPath(newManualSelectedTexture).StartsWith(rootPath)) + EditorUtility.DisplayDialog("Invalid Path", "Please select the subdirectory of '" + rootPath + "'", "OK"); + else + SwitchRampMap(prop, newManualSelectedTexture, 0); + } + } + + protected virtual void DrawPreviewTextureOverride(Rect previewRect, MaterialProperty prop, LwguiGradient gradient) + { + if (!prop.hasMixedValue && gradient != null) + { + LwguiGradientEditorHelper.DrawGradientWithSeparateAlphaChannel(previewRect, gradient, colorSpace, viewChannelMask); + } + } + + public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) + { + var labelWidth = EditorGUIUtility.labelWidth; + var indentLevel = EditorGUI.indentLevel; + + OnRampPropUpdate(position, prop, label, editor); + + var gradient = GetLwguiGradient(prop, out var isDirty); + + // Draw Label + var labelRect = new Rect(position); + { + labelRect.height = _rampPreviewHeight; + EditorGUI.PrefixLabel(labelRect, label); + } + + // Ramp buttons Rect + var buttonRect = new Rect(position); + { + EditorGUIUtility.labelWidth = 0; + EditorGUI.indentLevel = 0; + buttonRect.yMin = buttonRect.yMax - _rampPreviewHeight; + buttonRect = MaterialEditor.GetRectAfterLabelWidth(buttonRect); + if (buttonRect.width < 50f) return; + } + + // Draw Ramp Editor + RampHelper.RampEditor(buttonRect, ref gradient, colorSpace, viewChannelMask, timeRange, isDirty, + out bool hasGradientChanges, + out bool doEditWhenNoGradient, + out doRegisterUndo, + out bool doCreate, + out bool doSaveGradient, + out bool doDiscardGradient, + OnGradientEditorChange); + + // Edit When No Gradient + if (doEditWhenNoGradient) + { + EditWhenNoRampMap(prop, editor); + } + + // Create + if (doCreate) + { + LwguiGradientWindow.CloseWindow(); + CreateNewRampMap(prop, editor); + OnCreateNewRampMap(prop); + LWGUI.OnValidate(metaDatas); + } + + // Change + if (hasGradientChanges && gradient != null) + { + ChangeRampMap(prop, gradient); + OnEditRampMap(prop, gradient); + } + + // Save + if (doSaveGradient && gradient != null) + { + SaveRampMap(prop, gradient); + OnSaveRampMap(prop, gradient); + } + + // Discard + if (doDiscardGradient) + { + LwguiGradientWindow.CloseWindow(); + gradient = DiscardRampMap(prop, gradient); + OnDiscardRampMap(prop, gradient); + } + + // Texture Object Field, handle switch texture event + var rampFieldRect = MaterialEditor.GetRectAfterLabelWidth(labelRect); + var previewRect = new Rect(rampFieldRect.x + 0.5f, rampFieldRect.y + 0.5f, rampFieldRect.width - 18, rampFieldRect.height - 0.5f); + { + var selectButtonRect = new Rect(previewRect.xMax, rampFieldRect.y, rampFieldRect.width - previewRect.width, rampFieldRect.height); + DrawRampSelector(selectButtonRect, prop, gradient); + + DrawRampObjectField(rampFieldRect, prop, gradient); + } + + // Preview texture override (larger preview, hides texture name) + DrawPreviewTextureOverride(previewRect, prop, gradient); + + EditorGUIUtility.labelWidth = labelWidth; + EditorGUI.indentLevel = indentLevel; + } + } + + /// + /// Draw a "Ramp Atlas Scriptable Object" selector and texture preview. + /// The Ramp Atlas SO is responsible for storing multiple ramps and generating the corresponding Ramp Atlas Texture. + /// Use it together with RampAtlasIndexer() to sample specific ramps in Shader using Index, similar to UE's Curve Atlas. + /// Note: Currently, the material only saves Texture reference and Int value, + /// if you manually modify the Ramp Atlas, the references will not update automatically! + /// + /// group: parent group name (Default: none) + /// defaultFileName: the default file name when creating a Ramp Atlas SO (Default: RampAtlas) + /// rootPath: the default directory when creating a Ramp Atlas SO, replace '/' with '.' (for example: Assets.Art.RampAtlas). (Default: Assets) + /// colorSpace: the Color Space of Ramp Atlas Texture. (sRGB/Linear) (Default: sRGB) + /// defaultWidth: default Ramp Atlas Texture width (Default: 256) + /// showAtlasPreview: Draw the preview of Ramp Atlas below (True/False) (Default: True) + /// Target Property Type: Texture2D + /// + public class RampAtlasDrawer : SubDrawer + { + public string rootPath = "Assets"; + public string defaultFileName = "RampAtlas"; + public bool defaultAtlasSRGB = true; + public int defaultAtlasWidth = 256; + public int defaultAtlasHeight = 2; + public bool showAtlasPreview = true; + + protected LwguiRampAtlas _rampAtlasSO; + + public RampAtlasDrawer() : this(string.Empty) { } + + public RampAtlasDrawer(string group) : this(group, "RampAtlas") { } + + public RampAtlasDrawer(string group, string defaultFileName) : this(group, defaultFileName, "Assets") { } + + public RampAtlasDrawer(string group, string defaultFileName, string rootPath) : this(group, defaultFileName, rootPath, "sRGB") { } + + public RampAtlasDrawer(string group, string defaultFileName, string rootPath, string colorSpace) : this(group, defaultFileName, rootPath, colorSpace, 256) { } + + public RampAtlasDrawer(string group, string defaultFileName, string rootPath, string colorSpace, float defaultWidth) : this(group, defaultFileName, rootPath, colorSpace, defaultWidth, 4) { } + + public RampAtlasDrawer(string group, string defaultFileName, string rootPath, string colorSpace, float defaultWidth, float defaultHeight) : this(group, defaultFileName, rootPath, colorSpace, defaultWidth, defaultHeight, "true") { } + + public RampAtlasDrawer(string group, string defaultFileName, string rootPath, string colorSpace, float defaultWidth, float defaultHeight, string showAtlasPreview) + { + if (!rootPath.StartsWith(this.rootPath)) + { + Debug.LogError("LWGUI: Ramp Atlas Root Path: '" + rootPath + "' must start with 'Assets'!"); + rootPath = this.rootPath; + } + this.group = group; + this.defaultFileName = defaultFileName; + this.rootPath = rootPath.Replace('.', '/'); + this.defaultAtlasSRGB = colorSpace.ToLower() == "srgb"; + this.defaultAtlasWidth = (int)Mathf.Max(2, defaultWidth); + this.defaultAtlasHeight = (int)Mathf.Max(2, defaultHeight); + this.showAtlasPreview = Helper.StringToBool(showAtlasPreview); + } + + protected override bool IsMatchPropType(MaterialProperty property) => property.GetPropertyType() == ShaderPropertyType.Texture; + + protected override float GetVisibleHeight(MaterialProperty prop) => + EditorGUIUtility.singleLineHeight + + (prop.textureValue && showAtlasPreview ? MaterialEditor.GetDefaultPropertyHeight(prop) + 2.0f : 0); + + public override void GetCustomContextMenus(GenericMenu menu, Rect rect, MaterialProperty prop, LWGUIMetaDatas metaDatas) + { + menu.AddSeparator(""); + menu.AddItem(new GUIContent("Create Ramp Atlas"), false, () => + { + _rampAtlasSO = LwguiRampAtlas.CreateRampAtlasSO(prop, metaDatas); + if (_rampAtlasSO) + { + prop.textureValue = _rampAtlasSO.rampAtlasTexture; + LWGUI.OnValidate(metaDatas); + } + }); + + if (_rampAtlasSO) + { + menu.AddItem(new GUIContent("Clone Ramp Atlas"), false, () => + { + var newRampAtlasSO = LwguiRampAtlas.CloneRampAtlasSO(_rampAtlasSO); + if (newRampAtlasSO) + { + _rampAtlasSO = newRampAtlasSO; + prop.textureValue = _rampAtlasSO.rampAtlasTexture; + LWGUI.OnValidate(metaDatas); + } + }); + } + } + + public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) + { + EditorGUI.PrefixLabel(position, label); + + var labelWidth = EditorGUIUtility.labelWidth; + var indentLevel = EditorGUI.indentLevel; + EditorGUIUtility.labelWidth = 0; + EditorGUI.indentLevel = 0; + + var fieldRect = MaterialEditor.GetRectAfterLabelWidth(position); + var rampAtlasSORect = new Rect(fieldRect.x, fieldRect.y, fieldRect.width, EditorGUIUtility.singleLineHeight); + var rampAtlasTextureRect = new Rect(fieldRect.x, rampAtlasSORect.yMax + 2.0f, fieldRect.width, MaterialEditor.GetDefaultPropertyHeight(prop)); + + _rampAtlasSO = LwguiRampAtlas.LoadRampAtlasSO(prop.textureValue); + + // Disable ObjectField's Context Menu + var e = Event.current; + if (e?.type == EventType.MouseDown && Event.current.button == 1 + && (rampAtlasSORect.Contains(e.mousePosition))) + { + e.Use(); + } + + EditorGUI.BeginChangeCheck(); + _rampAtlasSO = (LwguiRampAtlas)EditorGUI.ObjectField(rampAtlasSORect, GUIContent.none, _rampAtlasSO, typeof(LwguiRampAtlas), false); + if (EditorGUI.EndChangeCheck()) + { + prop.textureValue = LwguiRampAtlas.LoadRampAtlasTexture(_rampAtlasSO); + + if (_rampAtlasSO && !prop.textureValue) + { + Debug.LogError($"LWGUI: Can NOT load the Ramp Atlas Texture from: { _rampAtlasSO.name }"); + } + } + + if (showAtlasPreview && prop.textureValue && !prop.hasMixedValue) + { + var filter = prop.textureValue.filterMode; + prop.textureValue.filterMode = FilterMode.Point; + EditorGUI.DrawPreviewTexture(rampAtlasTextureRect, prop.textureValue); + prop.textureValue.filterMode = filter; + } + } + } + /// /// Draw an image preview. /// display name: The path of the image file relative to the Unity project, such as: "Assets/test.png", "Doc/test.png", "../test.png" - /// group: father group name, support suffix keyword for conditional display (Default: none) + /// + /// group: parent group name (Default: none) + /// Target Property Type: Any /// public class ImageDrawer : SubDrawer { @@ -786,10 +1727,13 @@ namespace LWGUI } } } + #endregion + #region Vector /// /// Display up to 4 colors in a single line - /// group: father group name, support suffix keyword for conditional display (Default: none) + /// + /// group: parent group name (Default: none) /// color2-4: extra color property name /// Target Property Type: Color /// @@ -809,7 +1753,7 @@ namespace LWGUI this._colorStrings[2] = color4; } - protected override bool IsMatchPropType(MaterialProperty property) { return property.type == MaterialProperty.PropType.Color; } + protected override bool IsMatchPropType(MaterialProperty property) { return property.GetPropertyType() == ShaderPropertyType.Color; } public override void BuildStaticMetaData(Shader inShader, MaterialProperty inProp, MaterialProperty[] inProps, PropertyStaticData inoutPropertyStaticData) { @@ -853,7 +1797,7 @@ namespace LWGUI r.xMax -= w * i - interval; var src = cProp.colorValue; - var isHdr = (colorArray[i].flags & MaterialProperty.PropFlags.HDR) != MaterialProperty.PropFlags.None; + var isHdr = (colorArray[i].GetPropertyFlags() & ShaderPropertyFlags.HDR) != ShaderPropertyFlags.None; var dst = EditorGUI.ColorField(r, GUIContent.none, src, true, true, isHdr); if (Helper.EndChangeCheck(metaDatas, cProp)) { @@ -874,7 +1818,8 @@ namespace LWGUI /// RGB Average = (1f / 3f, 1f / 3f, 1f / 3f, 0) /// RGB Luminance = (0.2126f, 0.7152f, 0.0722f, 0) /// None = (0, 0, 0, 0) - /// group: father group name, support suffix keyword for conditional display (Default: none) + /// + /// group: parent group name (Default: none) /// Target Property Type: Vector, used to dot() with Texture Sample Value /// public class ChannelDrawer : SubDrawer @@ -908,7 +1853,7 @@ namespace LWGUI this.group = group; } - protected override bool IsMatchPropType(MaterialProperty property) { return property.type == MaterialProperty.PropType.Vector; } + protected override bool IsMatchPropType(MaterialProperty property) { return property.GetPropertyType() == ShaderPropertyType.Vector; } private static int GetChannelIndex(MaterialProperty prop) { @@ -951,307 +1896,9 @@ namespace LWGUI } } } + #endregion - /// - /// Draw an unreal style Ramp Map Editor (Default Ramp Map Resolution: 512 * 2) - /// NEW: The new LwguiGradient type has both the Gradient and Curve editors, and can be used in C# scripts and runtime, and is intended to replace UnityEngine.Gradient - /// group: father group name, support suffix keyword for conditional display (Default: none) - /// defaultFileName: default Ramp Map file name when create a new one (Default: RampMap) - /// rootPath: the path where ramp is stored, replace '/' with '.' (for example: Assets.Art.Ramps). when selecting ramp, it will also be filtered according to the path (Default: Assets) - /// colorSpace: switch sRGB / Linear in ramp texture import setting (Default: sRGB) - /// defaultWidth: default Ramp Width (Default: 512) - /// viewChannelMask: editable channels. (Default: RGBA) - /// timeRange: the abscissa display range (1/24/2400), is used to optimize the editing experience when the abscissa is time of day. (Default: 1) - /// Target Property Type: Texture2D - /// - public class RampDrawer : SubDrawer - { - protected static readonly string DefaultRootPath = "Assets"; - - protected string _rootPath; - protected string _defaultFileName; - protected float _defaultWidth; - protected float _defaultHeight = 2; - protected ColorSpace _colorSpace; - protected LwguiGradient.ChannelMask _viewChannelMask; - protected LwguiGradient.GradientTimeRange _timeRange; - protected bool _doRegisterUndo; - - private static readonly GUIContent _iconMixImage = EditorGUIUtility.IconContent("darkviewbackground"); - - private static readonly float _rampPreviewHeight = EditorGUIUtility.singleLineHeight; - private static readonly float _rampButtonsHeight = EditorGUIUtility.singleLineHeight; - - protected override float GetVisibleHeight(MaterialProperty prop) { return _rampPreviewHeight + _rampButtonsHeight; } - - public RampDrawer() : this(String.Empty) { } - - public RampDrawer(string group) : this(group, "RampMap") { } - - public RampDrawer(string group, string defaultFileName) : this(group, defaultFileName, DefaultRootPath, 512) { } - - public RampDrawer(string group, string defaultFileName, float defaultWidth) : this(group, defaultFileName, DefaultRootPath, defaultWidth) { } - - public RampDrawer(string group, string defaultFileName, string rootPath, float defaultWidth) : this(group, defaultFileName, rootPath, "sRGB", defaultWidth) { } - - public RampDrawer(string group, string defaultFileName, string rootPath, string colorSpace, float defaultWidth) : this(group, defaultFileName, rootPath, colorSpace, defaultWidth, "RGBA") { } - - public RampDrawer(string group, string defaultFileName, string rootPath, string colorSpace, float defaultWidth, string viewChannelMask) : this(group, defaultFileName, rootPath, colorSpace, defaultWidth, viewChannelMask, 1) { } - - public RampDrawer(string group, string defaultFileName, string rootPath, string colorSpace, float defaultWidth, string viewChannelMask, float timeRange) - { - if (!rootPath.StartsWith(DefaultRootPath)) - { - Debug.LogError("LWGUI: Ramp Root Path: '" + rootPath + "' must start with 'Assets'!"); - rootPath = DefaultRootPath; - } - this.group = group; - this._defaultFileName = defaultFileName; - this._rootPath = rootPath.Replace('.', '/'); - this._colorSpace = colorSpace.ToLower() == "linear" ? ColorSpace.Linear : ColorSpace.Gamma; - this._defaultWidth = Mathf.Max(2.0f, defaultWidth); - this._viewChannelMask = LwguiGradient.ChannelMask.None; - { - viewChannelMask = viewChannelMask.ToLower(); - for (int c = 0; c < (int)LwguiGradient.Channel.Num; c++) - { - if (viewChannelMask.Contains(LwguiGradient.channelNames[c])) - _viewChannelMask |= LwguiGradient.ChannelIndexToMask(c); - } - } - this._timeRange = LwguiGradient.GradientTimeRange.One; - { - if ((int)timeRange == (int)LwguiGradient.GradientTimeRange.TwentyFour) - _timeRange = LwguiGradient.GradientTimeRange.TwentyFour; - else if ((int)timeRange == (int)LwguiGradient.GradientTimeRange.TwentyFourHundred) - _timeRange = LwguiGradient.GradientTimeRange.TwentyFourHundred; - } - } - - protected override bool IsMatchPropType(MaterialProperty property) { return property.type == MaterialProperty.PropType.Texture; } - - protected virtual void OnRampPropUpdate(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { } - - protected virtual void OnSwitchRampMap(Texture newTexture) { } - - protected virtual void OnCreateNewRampMap(Texture newTexture) { } - - protected virtual void OnEditRampMap() { } - - // TODO: undo - public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) - { - var labelWidth = EditorGUIUtility.labelWidth; - var indentLevel = EditorGUI.indentLevel; - - var gradient = RampHelper.GetGradientFromTexture(prop.textureValue, out var isDirty, false, _doRegisterUndo) ?? new LwguiGradient(); - - OnRampPropUpdate(position, prop, label, editor); - - // Draw Label - var labelRect = new Rect(position); //EditorGUILayout.GetControlRect(); - { - labelRect.height = _rampPreviewHeight; - EditorGUI.PrefixLabel(labelRect, label); - } - - // Ramp buttons Rect - var buttonRect = new Rect(position); //EditorGUILayout.GetControlRect(); - { - EditorGUIUtility.labelWidth = 0; - EditorGUI.indentLevel = 0; - buttonRect.yMin = buttonRect.yMax - _rampPreviewHeight; - buttonRect = MaterialEditor.GetRectAfterLabelWidth(buttonRect); - if (buttonRect.width < 50f) return; - } - - // Draw Ramp Editor - var hasGradientChanges = RampHelper.RampEditor(buttonRect, prop, ref gradient, _colorSpace, _viewChannelMask, _timeRange, - isDirty, _defaultFileName, _rootPath, (int)_defaultWidth, (int)_defaultHeight, out _doRegisterUndo, - out var newCreatedTexture, out var doSaveGradient, out var doDiscardGradient); - - if (newCreatedTexture != null) - { - LwguiGradientWindow.CloseWindow(); - prop.textureValue = newCreatedTexture; - OnCreateNewRampMap(prop.textureValue); - LWGUI.OnValidate(metaDatas); - } - - // Save gradient changes - if (hasGradientChanges || doSaveGradient) - { - // Gradient > Tex - RampHelper.SetGradientToTexture(prop.textureValue, gradient, doSaveGradient); - OnEditRampMap(); - } - - // Discard gradient changes - if (doDiscardGradient) - { - LwguiGradientWindow.CloseWindow(); - - // Tex > Gradient - gradient = RampHelper.GetGradientFromTexture(prop.textureValue, out isDirty, true); - // GradientObject > Tex - RampHelper.SetGradientToTexture(prop.textureValue, gradient, true); - OnEditRampMap(); - } - - // Texture object field, handle switch texture event - var rampFieldRect = MaterialEditor.GetRectAfterLabelWidth(labelRect); - var previewRect = new Rect(rampFieldRect.x + 0.5f, rampFieldRect.y + 0.5f, rampFieldRect.width - 18, rampFieldRect.height - 0.5f); - { - var selectButtonRect = new Rect(previewRect.xMax, rampFieldRect.y, rampFieldRect.width - previewRect.width, rampFieldRect.height); - RampHelper.RampSelector(selectButtonRect, _rootPath, OnSwitchRampMapEvent); - - // Manual replace ramp map - EditorGUI.BeginChangeCheck(); - var newManualSelectedTexture = (Texture2D)EditorGUI.ObjectField(rampFieldRect, prop.textureValue, typeof(Texture2D), false); - if (Helper.EndChangeCheck(metaDatas, prop)) - { - if (newManualSelectedTexture && AssetDatabase.GetAssetPath(newManualSelectedTexture).StartsWith(_rootPath)) - OnSwitchRampMapEvent(newManualSelectedTexture); - else - EditorUtility.DisplayDialog("Invalid Path", "Please select the subdirectory of '" + _rootPath + "'", "OK"); - } - } - - // Preview texture override (larger preview, hides texture name) - { - if (prop.hasMixedValue) - { - EditorGUI.DrawPreviewTexture(previewRect, _iconMixImage.image); - GUI.Label(new Rect(previewRect.x + previewRect.width * 0.5f - 10, previewRect.y, previewRect.width * 0.5f, previewRect.height), "―"); - } - else if (prop.textureValue != null) - LwguiGradientEditorHelper.DrawGradientWithSeparateAlphaChannel(previewRect, gradient, _colorSpace, _viewChannelMask); - } - - EditorGUIUtility.labelWidth = labelWidth; - EditorGUI.indentLevel = indentLevel; - return; - - void OnSwitchRampMapEvent(Texture2D newRampMap) - { - LwguiGradientWindow.CloseWindow(); - prop.textureValue = newRampMap; - OnSwitchRampMap(prop.textureValue); - LWGUI.OnValidate(metaDatas); - } - } - } - - /// - /// Popping a menu, you can select the Shader Property Preset, the Preset values will replaces the default values - /// group: father group name, support suffix keyword for conditional display (Default: none) - /// presetFileName: "Shader Property Preset" asset name, you can create new Preset by - /// "Right Click > Create > LWGUI > Shader Property Preset" in Project window, - /// *any Preset in the entire project cannot have the same name* - /// - public class PresetDrawer : SubDrawer, IBasePresetDrawer - { - public string presetFileName; - - public PresetDrawer(string presetFileName) : this("_", presetFileName) { } - - public PresetDrawer(string group, string presetFileName) - { - this.group = group; - this.presetFileName = presetFileName; - } - - public static void SetPresetAssetToStaticData(PropertyStaticData inoutPropertyStaticData, string presetFileName) - { - inoutPropertyStaticData.propertyPresetAsset = PresetHelper.GetPresetFile(presetFileName); - } - - public static ShaderPropertyPreset.Preset GetActivePresetFromFloatProperty(MaterialProperty inProp, ShaderPropertyPreset shaderPropertyPreset) - { - ShaderPropertyPreset.Preset preset = null; - var index = (int)inProp.floatValue; - if (shaderPropertyPreset && index >= 0 && index < shaderPropertyPreset.presets.Count) - { - preset = shaderPropertyPreset.presets[index]; - } - return preset; - } - - public static void ApplyPreset(string presetFileName, MaterialProperty prop) - { - var presetFile = PresetHelper.GetPresetFile(presetFileName); - if (presetFile != null - && prop.floatValue < presetFile.presets.Count - && ShowIfDecorator.GetShowIfResultToFilterDrawerApplying(prop) - ) - { - presetFile.presets[(int)prop.floatValue].ApplyKeywordsAndPassesToMaterials(prop.targets); - } - } - - protected override bool IsMatchPropType(MaterialProperty property) { return property.type == MaterialProperty.PropType.Float; } - - public override void BuildStaticMetaData(Shader inShader, MaterialProperty inProp, MaterialProperty[] inProps, PropertyStaticData inoutPropertyStaticData) - { - base.BuildStaticMetaData(inShader, inProp, inProps, inoutPropertyStaticData); - SetPresetAssetToStaticData(inoutPropertyStaticData, presetFileName); - } - - public override void GetDefaultValueDescription(Shader inShader, MaterialProperty inProp, MaterialProperty inDefaultProp, PerShaderData inPerShaderData, PerMaterialData inoutPerMaterialData) - { - var index = (int)inDefaultProp.floatValue; - var propertyPreset = inPerShaderData.propStaticDatas[inProp.name].propertyPresetAsset; - - if (propertyPreset && index < propertyPreset.presets.Count && index >= 0) - inoutPerMaterialData.propDynamicDatas[inProp.name].defaultValueDescription = propertyPreset.presets[index].presetName; - } - - public ShaderPropertyPreset.Preset GetActivePreset(MaterialProperty inProp, ShaderPropertyPreset shaderPropertyPreset) => - GetActivePresetFromFloatProperty(inProp, shaderPropertyPreset); - - public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) - { - EditorGUI.BeginChangeCheck(); - EditorGUI.showMixedValue = prop.hasMixedValue; - - var rect = position; - - int index = (int)Mathf.Max(0, prop.floatValue); - var presetFile = PresetHelper.GetPresetFile(presetFileName); - if (presetFile == null || presetFile.presets.Count == 0) - { - var c = GUI.color; - GUI.color = Color.red; - label.text += " (Invalid Preset File: " + presetFileName + ")"; - EditorGUI.LabelField(rect, label); - GUI.color = c; - return; - } - - var presetNames = presetFile.presets.Select((inPreset) => new GUIContent(inPreset.presetName)).ToArray(); - if (EditorGUI.showMixedValue) - index = -1; - else - Helper.AdaptiveFieldWidth(EditorStyles.popup, presetNames[index]); - int newIndex = EditorGUI.Popup(rect, label, index, presetNames); - if (Helper.EndChangeCheck(metaDatas, prop)) - { - prop.floatValue = newIndex; - presetFile.presets[newIndex].ApplyToEditingMaterial(prop.targets, metaDatas.perMaterialData); - } - EditorGUI.showMixedValue = false; - } - - public override void Apply(MaterialProperty prop) - { - base.Apply(prop); - if (!prop.hasMixedValue) - { - ApplyPreset(presetFileName, prop); - } - } - } - + #region Other /// /// Draw one or more Buttons within the same row, using the Display Name to control the appearance and behavior of the buttons /// @@ -1269,7 +1916,8 @@ namespace LWGUI /// The full example: /// [Button(_)] _button0 ("URL Button@URL:https://github.com/JasonMa0012/LWGUI@C#:LWGUI.ButtonDrawer.TestMethod(1234, abcd)", Float) = 0 /// - /// group: father group name, support suffix keyword for conditional display (Default: none) + /// group: parent group name (Default: none) + /// Target Property Type: Any /// public class ButtonDrawer : SubDrawer { @@ -1414,10 +2062,17 @@ namespace LWGUI } } } + #endregion + #endregion + + #region Extra Decorators + + #region Appearance /// /// Similar to Header() - /// group: father group name, support suffix keyword for conditional display (Default: none) + /// + /// group: parent group name (Default: none) /// header: string to display, "SpaceLine" or "_" = none (Default: none) /// height: line height (Default: 22) /// @@ -1457,7 +2112,8 @@ namespace LWGUI /// /// Similar to Title() - /// group: father group name, support suffix keyword for conditional display (Default: none) + /// + /// group: parent group name (Default: none) /// header: string to display, "SpaceLine" or "_" = none (Default: none) /// height: line height (Default: 22) /// @@ -1471,6 +2127,7 @@ namespace LWGUI /// /// Tooltip, describes the details of the property. (Default: property.name and property default value) /// You can also use "#Text" in DisplayName to add Tooltip that supports Multi-Language. + /// /// tooltip: a single-line string to display, support up to 4 ','. (Default: Newline) /// public class TooltipDecorator : SubDrawer @@ -1508,6 +2165,7 @@ namespace LWGUI /// /// Display a Helpbox on the property /// You can also use "%Text" in DisplayName to add Helpbox that supports Multi-Language. + /// /// message: a single-line string to display, support up to 4 ','. (Default: Newline) /// public class HelpboxDecorator : TooltipDecorator @@ -1537,9 +2195,27 @@ namespace LWGUI inoutPropertyStaticData.helpboxMessages += _message + "\n"; } } - + /// - /// Cooperate with Toggle to switch certain Passes + /// Set the property to read-only. + /// + public class ReadOnlyDecorator : SubDrawer + { + protected override float GetVisibleHeight(MaterialProperty prop) { return 0; } + + public override void BuildStaticMetaData(Shader inShader, MaterialProperty inProp, MaterialProperty[] inProps, PropertyStaticData inoutPropertyStaticData) + { + inoutPropertyStaticData.isReadOnly = true; + } + + public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { } + } + #endregion + + #region Logic + /// + /// Cooperate with Toggle to switch certain Passes. + /// /// lightModeName(s): Light Mode in Shader Pass (https://docs.unity3d.com/2017.4/Documentation/Manual/SL-PassTags.html) /// public class PassSwitchDecorator : SubDrawer @@ -1576,31 +2252,36 @@ namespace LWGUI protected override bool IsMatchPropType(MaterialProperty property) { - return property.type == MaterialProperty.PropType.Float - || property.type == MaterialProperty.PropType.Int; + return property.GetPropertyType() == ShaderPropertyType.Float + || property.GetPropertyType() == ShaderPropertyType.Int; } public override void BuildStaticMetaData(Shader inShader, MaterialProperty inProp, MaterialProperty[] inProps, PropertyStaticData inoutPropertyStaticData) { } public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { - if (!prop.hasMixedValue) + if (!prop.hasMixedValue && VersionControlHelper.IsWriteable(prop.targets)) Helper.SetShaderPassEnabled(prop.targets, _lightModeNames, prop.floatValue > 0); } public override void Apply(MaterialProperty prop) { base.Apply(prop); - if (!prop.hasMixedValue) + if (!prop.hasMixedValue && VersionControlHelper.IsWriteable(prop.targets)) { if (ShowIfDecorator.GetShowIfResultToFilterDrawerApplying(prop)) Helper.SetShaderPassEnabled(prop.targets, _lightModeNames, prop.floatValue > 0); } } } + #endregion + #region Structure /// - /// Collapse the current Property into an Advanced Block. Specify the Header String to create a new Advanced Block. All Properties using Advanced() will be collapsed into the nearest Advanced Block. + /// Collapse the current Property into an Advanced Block. + /// Specify the Header String to create a new Advanced Block. + /// All Properties using Advanced() will be collapsed into the nearest Advanced Block. + /// /// headerString: The title of the Advanced Block. Default: "Advanced" /// public class AdvancedDecorator : SubDrawer @@ -1626,7 +2307,7 @@ namespace LWGUI } /// - /// Create an Advanced Block using the current Property as the Header + /// Create an Advanced Block using the current Property as the Header. /// public class AdvancedHeaderPropertyDecorator : SubDrawer { @@ -1641,7 +2322,9 @@ namespace LWGUI public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { } } + #endregion + #region Condition Display /// /// Similar to HideInInspector(), the difference is that Hidden() can be unhidden through the Display Mode button. /// @@ -1657,23 +2340,9 @@ namespace LWGUI public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { } } - /// - /// Set the property to read-only. - /// - public class ReadOnlyDecorator : SubDrawer - { - protected override float GetVisibleHeight(MaterialProperty prop) { return 0; } - - public override void BuildStaticMetaData(Shader inShader, MaterialProperty inProp, MaterialProperty[] inProps, PropertyStaticData inoutPropertyStaticData) - { - inoutPropertyStaticData.isReadOnly = true; - } - - public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { } - } - /// /// Control the show or hide of a single or a group of properties based on multiple conditions. + /// /// logicalOperator: And | Or (Default: And). /// propName: Target Property Name used for comparison. /// compareFunction: Less (L) | Equal (E) | LessEqual (LEqual / LE) | Greater (G) | NotEqual (NEqual / NE) | GreaterEqual (GEqual / GE). @@ -1820,4 +2489,8 @@ namespace LWGUI public override void DrawProp(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor) { } } -} //namespace LWGUI \ No newline at end of file + #endregion + + #endregion + +} \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline.meta new file mode 100644 index 00000000..7d32d789 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4dbe822af8af4057a776320d7ae07018 +timeCreated: 1741593487 \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor.meta new file mode 100644 index 00000000..5eb0dbfb --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6ed1eb9a44434bc4bf43ca612b5a0218 +timeCreated: 1741922369 \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor/LWGUI.Timeline.Editor.asmdef b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor/LWGUI.Timeline.Editor.asmdef new file mode 100644 index 00000000..d1d74c9e --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor/LWGUI.Timeline.Editor.asmdef @@ -0,0 +1,28 @@ +{ + "name": "LWGUI.Timeline.Editor", + "rootNamespace": "", + "references": [ + "LWGUI", + "LWGUI.Timeline", + "LWGUI.Runtime.Timeline", + "Unity.Timeline", + "Unity.Timeline.Editor" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.timeline", + "expression": "1.0.0", + "define": "MATERIAL_KEYWORDS_TRACK_REQUIRES_TIMELINE" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor/LWGUI.Timeline.Editor.asmdef.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor/LWGUI.Timeline.Editor.asmdef.meta new file mode 100644 index 00000000..b1a6bf80 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor/LWGUI.Timeline.Editor.asmdef.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8f8c453ec76f458e82f3ada63010427a +timeCreated: 1741922383 \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor/MaterialKeywordToggleTrackEditor.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor/MaterialKeywordToggleTrackEditor.cs new file mode 100644 index 00000000..003effb3 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor/MaterialKeywordToggleTrackEditor.cs @@ -0,0 +1,52 @@ +// Copyright (c) Jason Ma + +#if MATERIAL_KEYWORDS_TRACK_REQUIRES_TIMELINE + +using UnityEditor.Timeline; +using UnityEngine; +using UnityEngine.Timeline; +using LWGUI.Timeline; +using LWGUI.Runtime.Timeline; +using UnityEngine.Playables; + +namespace LWGUI.Timeline +{ + // Editor used by the TimelineEditor to customize the view of a MaterialKeywordToggleTrack + [CustomTimelineEditor(typeof(MaterialKeywordToggleTrack))] + public class MaterialKeywordToggleTrackEditor : TrackEditor + { + public override void OnTrackChanged(TrackAsset track) + { + base.OnTrackChanged(track); + + if (!VersionControlHelper.IsWriteable(track)) + return; + + var targetToggleTrack = track as MaterialKeywordToggleTrack; + if (targetToggleTrack == null + || targetToggleTrack.srcAnimationTrack == null + || targetToggleTrack.srcAnimationClip == null + || string.IsNullOrEmpty(targetToggleTrack.propName) + ) + return; + + var directors = Object.FindObjectsByType(FindObjectsInactive.Exclude, FindObjectsSortMode.None); + foreach (var director in directors) + { + var targetRenderer = director.GetGenericBinding(targetToggleTrack) as Renderer; + var rootAnimator = director.GetGenericBinding(targetToggleTrack.srcAnimationTrack) as Animator; + if (targetRenderer == null || rootAnimator == null) + continue; + + if (TimelineHelper.GetMaterialPropertyEditorCurveFromAnimationClip(targetRenderer, targetToggleTrack.propName, rootAnimator, targetToggleTrack.srcAnimationClip, + out var srcAnimationCurve)) + { + TimelineHelper.CopyAnimationCurveToMaterialKeywordToggleTrack(targetToggleTrack.srcAnimationTrack, srcAnimationCurve, targetToggleTrack); + break; + } + } + } + } +} + +#endif diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor/MaterialKeywordToggleTrackEditor.cs.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor/MaterialKeywordToggleTrackEditor.cs.meta new file mode 100644 index 00000000..753809c3 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/Editor/MaterialKeywordToggleTrackEditor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3289a7f5d9294768a330ba684d33097d +timeCreated: 1741863250 \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/LWGUI.Timeline.asmdef b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/LWGUI.Timeline.asmdef new file mode 100644 index 00000000..01b0c55d --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/LWGUI.Timeline.asmdef @@ -0,0 +1,28 @@ +{ + "name": "LWGUI.Timeline", + "rootNamespace": "", + "references": [ + "LWGUI.Runtime", + "LWGUI.Runtime.Timeline", + "Unity.InternalAPIEditorBridge.020", + "Unity.Timeline", + "Unity.Timeline.Editor" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.timeline", + "expression": "1.0.0", + "define": "MATERIAL_KEYWORDS_TRACK_REQUIRES_TIMELINE" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/LWGUI.Timeline.asmdef.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/LWGUI.Timeline.asmdef.meta new file mode 100644 index 00000000..ff87bd9e --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/LWGUI.Timeline.asmdef.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e09eeece654a40cf8607f14dca2cc342 +timeCreated: 1741593491 \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/TimelineHelper.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/TimelineHelper.cs new file mode 100644 index 00000000..d5873a43 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/TimelineHelper.cs @@ -0,0 +1,222 @@ +// Copyright (c) Jason Ma + +using System.Linq; +using UnityEngine; +using UnityEditor; +using UnityEngine.Playables; + +#if MATERIAL_KEYWORDS_TRACK_REQUIRES_TIMELINE +using System.Collections.Generic; +using UnityEngine.Timeline; +using LWGUI.Runtime.Timeline; +using UnityEditor.Timeline; +#endif + +namespace LWGUI.Timeline +{ + public static class TimelineHelper + { + private const string _GroupTrackName_Base = "LWGUI Tracks"; + private const string _GroupTrackName_Toggle = "LWGUI Material Keyword Toggle Tracks"; + private const string _AnimationCurveName_Toggle = "LWGUI Material Keyword Toggle Animation Curve"; + + public static void SetKeywordToggleToTimeline(MaterialProperty prop, MaterialEditor editor, string keywordName) + { +#if MATERIAL_KEYWORDS_TRACK_REQUIRES_TIMELINE + // Check + { + if (editor == null || string.IsNullOrEmpty(keywordName) || keywordName == "_") + return; + + var renderer = editor.GetRendererForAnimationMode(); + if (renderer == null) + return; + + ReflectionHelper.MaterialAnimationUtility_OverridePropertyColor(prop, renderer, out Color color); + if (color != AnimationMode.recordedPropertyColor) + return; + } + + var directors = Object.FindObjectsByType(FindObjectsInactive.Exclude, FindObjectsSortMode.None); + + foreach (var renderer in editor.GetMeshRenderersByMaterialEditor()) + { + var parentAnimators = renderer.GetComponentsInParent(); + + Debug.Assert(parentAnimators != null + && parentAnimators.Length > 0, + $"LWGUI: Unable to find parent Animators for MaterialProperty({ prop.name }) and Material({(editor.target as Material).name })!"); + + PlayableDirector targetDirector = null; + MaterialKeywordToggleTrack targetToggleTrack = null; + GroupTrack targetGroupTrack = null; + GroupTrack baseGroupTrack = null; + TimelineAsset targetTimelineAsset = null; + AnimationTrack srcAnimationTrack = null; + Animator rootAnimator = null; + + // Find the existing track + foreach (var director in directors) + { + if (director == null || director.playableAsset == null) + continue; + + var timelineAsset = director.playableAsset as TimelineAsset; + List allTrackAssets = new List(); + + foreach (var rootTrack in timelineAsset.GetRootTracks()) + { + FindAllSubTracksRecursively(rootTrack, allTrackAssets); + } + + foreach (var trackAsset in allTrackAssets) + { + if (trackAsset is AnimationTrack animationTrack) + { + var bindedAnimator = director.GetGenericBinding(animationTrack); + if (parentAnimators.Contains(bindedAnimator)) + { + srcAnimationTrack = animationTrack; + targetDirector = director; + targetTimelineAsset = timelineAsset; + rootAnimator = bindedAnimator as Animator; + } + } + + if (trackAsset is MaterialKeywordToggleTrack materialKeywordTrack + && director.GetGenericBinding(materialKeywordTrack) == renderer + && materialKeywordTrack.keywordName == keywordName) + { + targetToggleTrack = materialKeywordTrack; + } + + if (trackAsset is GroupTrack groupTrack) + { + if (groupTrack.name == _GroupTrackName_Toggle) + targetGroupTrack = groupTrack; + if (groupTrack.name == _GroupTrackName_Base) + baseGroupTrack = groupTrack; + } + } + } + + Debug.Assert(targetDirector != null + && targetTimelineAsset != null + && srcAnimationTrack != null + && rootAnimator != null, + $"LWGUI: Unable to find the existing Animation Track for MaterialProperty({ prop.name }) and Material({(editor.target as Material).name })!"); + + // Create a track + if (targetToggleTrack == null) + { + if (baseGroupTrack == null) + { + baseGroupTrack = targetTimelineAsset.CreateTrack(); + baseGroupTrack.name = _GroupTrackName_Base; + } + + if (targetGroupTrack == null) + { + targetGroupTrack = targetTimelineAsset.CreateTrack(); + targetGroupTrack.name = _GroupTrackName_Toggle; + targetGroupTrack.SetGroup(baseGroupTrack); + } + + targetToggleTrack = targetTimelineAsset.CreateTrack(); + targetToggleTrack.keywordName = keywordName; + targetToggleTrack.propName = prop.name; + targetToggleTrack.srcAnimationTrack = srcAnimationTrack; + targetToggleTrack.SetGroup(targetGroupTrack); + targetDirector.SetGenericBinding(targetToggleTrack, renderer); + } + + // Find the Animation Curve + AnimationClip srcAnimationClip = srcAnimationTrack.infiniteClip ?? srcAnimationTrack.curves; + if (srcAnimationClip != null && GetMaterialPropertyEditorCurveFromAnimationClip(renderer, prop.name, rootAnimator, srcAnimationClip, + out var srcAnimationCurve)) + { + targetToggleTrack.srcAnimationClip = srcAnimationClip; + + CopyAnimationCurveToMaterialKeywordToggleTrack(srcAnimationTrack, srcAnimationCurve, targetToggleTrack); + } + + TimelineEditor.Refresh(RefreshReason.ContentsAddedOrRemoved | RefreshReason.ContentsModified); + } +#endif + } + +#if MATERIAL_KEYWORDS_TRACK_REQUIRES_TIMELINE + public static bool CopyAnimationCurveToMaterialKeywordToggleTrack(AnimationTrack srcAnimationTrack, AnimationCurve srcAnimationCurve, + MaterialKeywordToggleTrack dstToggleTrack) + { + if (srcAnimationCurve == null || dstToggleTrack == null) + return false; + + var clips = dstToggleTrack.GetClips().ToList(); + if (clips.Count > 1) + { + foreach (var clip in clips) + { + dstToggleTrack.DeleteClip(clip); + } + } + + TimelineClip currentClip = null; + if (!dstToggleTrack.GetClips().Any()) + { + currentClip = dstToggleTrack.CreateClip(); + } + else + { + currentClip = dstToggleTrack.GetClips().ToArray()[0]; + } + + if (currentClip == null || currentClip.asset is not MaterialKeywordTogglePlayableAsset) + return false; + + currentClip.start = srcAnimationTrack.start; + currentClip.duration = srcAnimationTrack.duration; + + if (!currentClip.hasCurves) + currentClip.CreateCurves($"{ dstToggleTrack.keywordName } ({ _AnimationCurveName_Toggle })"); + + // Bind to MaterialKeywordPlayableBehaviour.value + var binding = EditorCurveBinding.FloatCurve(string.Empty, typeof(MaterialKeywordTogglePlayableAsset), "value"); + AnimationUtility.SetEditorCurve(currentClip.curves, binding, srcAnimationCurve); + + return true; + } + + public static bool GetMaterialPropertyEditorCurveFromAnimationClip(Renderer renderer, string propName, Animator rootAnimator, AnimationClip srcAnimationClip, + out AnimationCurve outAnimationCurve) + { + outAnimationCurve = null; + + var bindings = AnimationUtility.GetCurveBindings(srcAnimationClip); + foreach (var binding in bindings) + { + var animatedObj = AnimationUtility.GetAnimatedObject(rootAnimator.gameObject, binding); + if (animatedObj == renderer + && binding.propertyName == "material." + propName) + { + outAnimationCurve = AnimationUtility.GetEditorCurve(srcAnimationClip, binding); + return true; + } + } + + return false; + } + + private static void FindAllSubTracksRecursively(TrackAsset trackAsset, List outTrackAssets) + { + outTrackAssets ??= new List(); + outTrackAssets.Add(trackAsset); + foreach (var childTrack in trackAsset.GetChildTracks()) + { + FindAllSubTracksRecursively(childTrack, outTrackAssets); + } + } +#endif + + } +} \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/TimelineHelper.cs.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/TimelineHelper.cs.meta new file mode 100644 index 00000000..6cbfe10a --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Editor/Timeline/TimelineHelper.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9d1ff48409644223af93bcf82b379a3b +timeCreated: 1741747578 \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/README.md b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/README.md index 63dfd118..d76db387 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/README.md +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/README.md @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3d637e3b47f0aafe3f95523b772b7c62dca3f45a6c89e14676bbcbf8debeb5f -size 34713 +oid sha256:df25137188a62502c5c0e4ccc5b6752002244c69709be727f50e7082d06ba428 +size 45108 diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/README_CN.md b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/README_CN.md index 8659f49e..93d5cf20 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/README_CN.md +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/README_CN.md @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d6b08cc8a47f38d97481cdf2949ad636a8d11521b1862b3f9db950394fed84ea -size 34089 +oid sha256:dd43cafbb444f45e3349becae59b77b9f6e7b32ee4b6a34d018d87e472f8625d +size 43388 diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/LwguiGradient/LwguiGradient.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/LwguiGradient/LwguiGradient.cs index b45228d2..51ac0f9b 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/LwguiGradient/LwguiGradient.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/LwguiGradient/LwguiGradient.cs @@ -21,7 +21,7 @@ namespace LWGUI.Runtime.LwguiGradient Num = 4 } - [Flags] + [Flags] // Flags Attribute must be used to support bit operations public enum ChannelMask { None = 0, @@ -30,7 +30,7 @@ namespace LWGUI.Runtime.LwguiGradient Blue = 1 << 2, Alpha = 1 << 3, RGB = Red | Green | Blue, - All = RGB | Alpha + All = ~0 } public enum GradientTimeRange @@ -61,6 +61,49 @@ namespace LWGUI.Runtime.LwguiGradient // The complete data is stored by RGBA Curves and can be converted into Texture [SerializeField] private List _curves; + + public List rawCurves + { + get + { + _curves ??= new List(); + if (_curves.Count < (int)Channel.Num) + { + for (int c = 0; c < (int)Channel.Num; c++) + { + if (c == _curves.Count) + _curves.Add(defaultCurve); + } + } + + return _curves; + } + set => SetRgbaCurves(value); + } + + public AnimationCurve redCurve + { + get => rawCurves[(int)Channel.Red] ?? defaultCurve; + set => SetCurve(value, ChannelMask.Red); + } + + public AnimationCurve greenCurve + { + get => rawCurves[(int)Channel.Green] ?? defaultCurve; + set => SetCurve(value, ChannelMask.Green); + } + + public AnimationCurve blueCurve + { + get => rawCurves[(int)Channel.Blue] ?? defaultCurve; + set => SetCurve(value, ChannelMask.Blue); + } + + public AnimationCurve alphaCurve + { + get => rawCurves[(int)Channel.Alpha] ?? defaultCurve; + set => SetCurve(value, ChannelMask.Alpha); + } #endregion @@ -248,7 +291,7 @@ namespace LWGUI.Runtime.LwguiGradient if (!IsChannelIndexInMask(c, channelMask)) continue; - _curves[c].AddKey(key); + rawCurves[c].AddKey(key); } } @@ -261,60 +304,28 @@ namespace LWGUI.Runtime.LwguiGradient } } - - public List rawCurves - { - get => _curves; - set => SetRgbaCurves(value); - } - - public AnimationCurve redCurve - { - get => _curves[(int)Channel.Red] ?? defaultCurve; - set => SetCurve(value, ChannelMask.Red); - } - - public AnimationCurve greenCurve - { - get => _curves[(int)Channel.Green] ?? defaultCurve; - set => SetCurve(value, ChannelMask.Green); - } - - public AnimationCurve blueCurve - { - get => _curves[(int)Channel.Blue] ?? defaultCurve; - set => SetCurve(value, ChannelMask.Blue); - } - - public AnimationCurve alphaCurve - { - get => _curves[(int)Channel.Alpha] ?? defaultCurve; - set => SetCurve(value, ChannelMask.Alpha); - } - - public Color Evaluate(float time, ChannelMask channelMask = ChannelMask.All, GradientTimeRange timeRange = GradientTimeRange.One) { time /= (int)timeRange; if (channelMask == ChannelMask.Alpha) { - var alpha = _curves[(int)Channel.Alpha].Evaluate(time); + var alpha = rawCurves[(int)Channel.Alpha].Evaluate(time); return new Color(alpha, alpha, alpha, 1); } return new Color( - IsChannelIndexInMask((int)Channel.Red, channelMask) ? _curves[(int)Channel.Red].Evaluate(time) : 0, - IsChannelIndexInMask((int)Channel.Green, channelMask) ? _curves[(int)Channel.Green].Evaluate(time) : 0, - IsChannelIndexInMask((int)Channel.Blue, channelMask) ? _curves[(int)Channel.Blue].Evaluate(time) : 0, - IsChannelIndexInMask((int)Channel.Alpha, channelMask) ? _curves[(int)Channel.Alpha].Evaluate(time) : 1); + IsChannelIndexInMask((int)Channel.Red, channelMask) ? rawCurves[(int)Channel.Red].Evaluate(time) : 0, + IsChannelIndexInMask((int)Channel.Green, channelMask) ? rawCurves[(int)Channel.Green].Evaluate(time) : 0, + IsChannelIndexInMask((int)Channel.Blue, channelMask) ? rawCurves[(int)Channel.Blue].Evaluate(time) : 0, + IsChannelIndexInMask((int)Channel.Alpha, channelMask) ? rawCurves[(int)Channel.Alpha].Evaluate(time) : 1); } public void SetLinearTangentMode() { for (int c = 0; c < (int)Channel.Num; c++) { - _curves[c].SetLinearTangents(); + rawCurves[c].SetLinearTangents(); } } @@ -336,6 +347,23 @@ namespace LWGUI.Runtime.LwguiGradient return pixels; } + public void GetPixels(ref Color[] outputPixels, ref int currentIndex, int width, int height, ChannelMask channelMask = ChannelMask.All) + { + if (outputPixels == null || currentIndex >= outputPixels.Length) + return; + + for (var x = 0; x < width; x++) + { + var u = x / (float)width; + var col = Evaluate(u, channelMask); + for (int i = 0; i < height; i++) + { + if (currentIndex < outputPixels.Length) + outputPixels[currentIndex ++] = col; + } + } + } + public Texture2D GetPreviewRampTexture(int width = 256, int height = 1, ColorSpace colorSpace = ColorSpace.Gamma, ChannelMask channelMask = ChannelMask.All) { if (LwguiGradientHelper.TryGetRampPreview(this, width, height, colorSpace, channelMask, out var cachedPreview)) @@ -492,9 +520,39 @@ namespace LWGUI.Runtime.LwguiGradient public Gradient ToGradient(int maxGradientKeyCount = 8) { - return new LwguiMergedColorCurves(_curves).ToGradient(maxGradientKeyCount); + return new LwguiMergedColorCurves(rawCurves).ToGradient(maxGradientKeyCount); } #endregion + + #region Gamma <=> Linear + + public LwguiGradient ConvertColorSpaceWithoutCopy(ColorSpace targetColorSpace) + { + for (int c = 0; c < (int)Channel.Num; c++) + { + if (c != (int)Channel.Alpha) + { + var keys = rawCurves[c].keys; + for (int i = 0; i < keys.Length; i++) + { + if (targetColorSpace == ColorSpace.Gamma) + keys[i].value = Mathf.LinearToGammaSpace(keys[i].value); + else + keys[i].value = Mathf.GammaToLinearSpace(keys[i].value); + } + + rawCurves[c].keys = keys; + } + } + + return this; + } + + public LwguiGradient gamma => new LwguiGradient(this).ConvertColorSpaceWithoutCopy(ColorSpace.Gamma); + + public LwguiGradient linear => new LwguiGradient(this).ConvertColorSpaceWithoutCopy(ColorSpace.Linear); + + #endregion } } \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/RuntimeHelper.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/RuntimeHelper.cs new file mode 100644 index 00000000..e5d6b79e --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/RuntimeHelper.cs @@ -0,0 +1,12 @@ +// Copyright (c) Jason Ma + +namespace LWGUI.Runtime +{ + public static class RuntimeHelper + { + public static bool IsBitEnabled(int intValue, int bitIndex) => (intValue & 1U << bitIndex) > 0; + + public static int SetBitEnabled(int intValue, int bitIndex, bool enabled) + => enabled ? intValue | (int)(1U << bitIndex) : intValue ^ (int)(1U << bitIndex); + } +} \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/RuntimeHelper.cs.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/RuntimeHelper.cs.meta new file mode 100644 index 00000000..92f4404c --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/RuntimeHelper.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a19e5812ea8041189f11f71becdacc65 +timeCreated: 1747294166 \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline.meta new file mode 100644 index 00000000..6fd81198 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 481e97f295ef467ca1418f794f3df2a4 +timeCreated: 1741335390 \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/LWGUI.Runtime.Timeline.asmdef b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/LWGUI.Runtime.Timeline.asmdef new file mode 100644 index 00000000..bccf52dc --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/LWGUI.Runtime.Timeline.asmdef @@ -0,0 +1,22 @@ +{ + "name": "LWGUI.Runtime.Timeline", + "rootNamespace": "", + "references": [ + "Unity.Timeline" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.timeline", + "expression": "1.0.0", + "define": "MATERIAL_KEYWORDS_TRACK_REQUIRES_TIMELINE" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/LWGUI.Runtime.Timeline.asmdef.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/LWGUI.Runtime.Timeline.asmdef.meta new file mode 100644 index 00000000..6d938397 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/LWGUI.Runtime.Timeline.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f10f42f427ca48b45af8e3d035229d3a +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle.meta new file mode 100644 index 00000000..6f3017b8 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8685e0ce73a24fc5ac00a916682ec7f8 +timeCreated: 1741858576 \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordTogglePlayableAsset.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordTogglePlayableAsset.cs new file mode 100644 index 00000000..83a81e8b --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordTogglePlayableAsset.cs @@ -0,0 +1,30 @@ +// Copyright (c) Jason Ma + +#if MATERIAL_KEYWORDS_TRACK_REQUIRES_TIMELINE + +using System; +using UnityEngine; +using UnityEngine.Playables; +using UnityEngine.Timeline; + +namespace LWGUI.Runtime.Timeline +{ + // Represents the serialized data for a clip on the MaterialKeywordToggleTrack + [Serializable] + public class MaterialKeywordTogglePlayableAsset : PlayableAsset, ITimelineClipAsset + { + public MaterialKeywordTogglePlayableBehaviour template = new (); + + // Implementation of ITimelineClipAsset. This specifies the capabilities of this timeline clip inside the editor. + public ClipCaps clipCaps => ClipCaps.None; + + // Creates the playable that represents the instance of this clip. + public override Playable CreatePlayable(PlayableGraph graph, GameObject owner) + { + // Using a template will clone the serialized values + return ScriptPlayable.Create(graph, template); + } + } +} + +#endif diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordTogglePlayableAsset.cs.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordTogglePlayableAsset.cs.meta new file mode 100644 index 00000000..73699328 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordTogglePlayableAsset.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5a38fd00a4ee4dbd9c0e7ab158f2013d +timeCreated: 1741593842 \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordTogglePlayableBehaviour.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordTogglePlayableBehaviour.cs new file mode 100644 index 00000000..09a801ce --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordTogglePlayableBehaviour.cs @@ -0,0 +1,19 @@ +// Copyright (c) Jason Ma + +#if MATERIAL_KEYWORDS_TRACK_REQUIRES_TIMELINE + +using System; +using UnityEngine.Playables; + +namespace LWGUI.Runtime.Timeline +{ + // Runtime representation of a MaterialKeywordToggleClip. + // The Serializable attribute is required to be animated by timeline, and used as a template. + [Serializable] + public class MaterialKeywordTogglePlayableBehaviour : PlayableBehaviour + { + public float value; + } +} + +#endif diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordTogglePlayableBehaviour.cs.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordTogglePlayableBehaviour.cs.meta new file mode 100644 index 00000000..45016fbf --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordTogglePlayableBehaviour.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7ce1592356ba46b28ca0f037104c1b5e +timeCreated: 1741593842 \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordToggleTrack.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordToggleTrack.cs new file mode 100644 index 00000000..1124ae2d --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordToggleTrack.cs @@ -0,0 +1,48 @@ +// Copyright (c) Jason Ma + +#if MATERIAL_KEYWORDS_TRACK_REQUIRES_TIMELINE + +using UnityEngine; +using UnityEngine.Playables; +using UnityEngine.Timeline; + +namespace LWGUI.Runtime.Timeline +{ + /// + /// When recording material parameter animation, Keyword changes are automatically captured and the track is added to the Timeline Asset. + /// The Keyword state is set according to the float value during runtime. + /// + /// Supports Toggle-type Drawer with Keyword. + /// + [TrackColor(127.0f * 0.7f / 255.0f, 214.0f * 0.7f / 255.0f, 252.0f * 0.7f / 255.0f)] + [TrackClipType(typeof(MaterialKeywordTogglePlayableAsset))] + [TrackBindingType(typeof(Renderer))] + public class MaterialKeywordToggleTrack : TrackAsset + { + public string keywordName; + public string propName; + public AnimationTrack srcAnimationTrack = null; + public AnimationClip srcAnimationClip = null; + + // Creates a runtime instance of the track, represented by a PlayableBehaviour. + // The runtime instance performs mixing on the timeline clips. + public override Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount) + { +#if UNITY_EDITOR + foreach (var clip in GetClips()) + { + clip.displayName = keywordName + " (Enabled Material Keyword)"; + } +#endif + + var template = new MaterialKeywordToggleTrackBehaviour + { + keywordName = keywordName + }; + + return ScriptPlayable.Create(graph, template, inputCount); + } + } +} + +#endif diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordToggleTrack.cs.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordToggleTrack.cs.meta new file mode 100644 index 00000000..935b8133 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordToggleTrack.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 526a1c6b17ba42aa9d8af998102a01d5 +timeCreated: 1741593842 \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordToggleTrackBehaviour.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordToggleTrackBehaviour.cs new file mode 100644 index 00000000..cc4e3400 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordToggleTrackBehaviour.cs @@ -0,0 +1,87 @@ +// Copyright (c) Jason Ma + +#if MATERIAL_KEYWORDS_TRACK_REQUIRES_TIMELINE + +using UnityEngine; +using UnityEngine.Playables; + +namespace LWGUI.Runtime.Timeline +{ + // The runtime instance of a the MaterialKeywordToggleTrack. It is responsible for blending and setting the final data + public class MaterialKeywordToggleTrackBehaviour : PlayableBehaviour + { + public string keywordName; + + private bool _defaultEnabled; + private Renderer _targetRenderer; + + // Called every frame that the timeline is evaluated. ProcessFrame is invoked after its' inputs. + public override void ProcessFrame(Playable playable, FrameData info, object playerData) + { + SetDefaults(playerData as Renderer); + if (_targetRenderer == null || string.IsNullOrEmpty(keywordName)) + return; + + bool enabled = false; + for (int i = 0; i < playable.GetInputCount(); i++) + { + float inputWeight = playable.GetInputWeight(i); + ScriptPlayable inputPlayable = (ScriptPlayable)playable.GetInput(i); + MaterialKeywordTogglePlayableBehaviour input = inputPlayable.GetBehaviour(); + + enabled = inputWeight > 0 && input.value > 0; + + if (enabled) + break; + } + + foreach (var mat in Application.isPlaying ? _targetRenderer.materials : _targetRenderer.sharedMaterials) + { + if (enabled) + mat.EnableKeyword(keywordName); + else + mat.DisableKeyword(keywordName); + } + } + + // Invoked when the playable graph is destroyed, typically when PlayableDirector.Stop is called or the timeline + // is complete. + public override void OnPlayableDestroy(Playable playable) + { + RestoreDefaults(); + _targetRenderer = null; + } + + private void SetDefaults(Renderer renderer) + { + if (renderer == _targetRenderer) + return; + + _targetRenderer = renderer; + if (_targetRenderer != null && !string.IsNullOrEmpty(keywordName)) + { + var mat = Application.isPlaying ? _targetRenderer.material : _targetRenderer.sharedMaterial; + if (mat != null) + { + _defaultEnabled = mat.IsKeywordEnabled(keywordName); + } + } + } + + private void RestoreDefaults() + { + if (_targetRenderer == null || string.IsNullOrEmpty(keywordName)) + return; + + foreach (var mat in Application.isPlaying ? _targetRenderer.materials : _targetRenderer.sharedMaterials) + { + if (_defaultEnabled) + mat.EnableKeyword(keywordName); + else + mat.DisableKeyword(keywordName); + } + } + } +} + +#endif diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordToggleTrackBehaviour.cs.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordToggleTrackBehaviour.cs.meta new file mode 100644 index 00000000..54f7653b --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Runtime/Timeline/MaterialKeywordToggle/MaterialKeywordToggleTrackBehaviour.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 91e9cf71c8a5458d93d522b59d7badfe +timeCreated: 1741593842 \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_RampAtlas.asset b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_RampAtlas.asset new file mode 100644 index 00000000..e3171962 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_RampAtlas.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8688a7de859df04db31d18e232d1aa7ae26c911b8ce410239211eb62848e122 +size 503 diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_RampAtlas.asset.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_RampAtlas.asset.meta new file mode 100644 index 00000000..5544c71a --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_RampAtlas.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cad9250226f9d224ea9ef2054ffa834c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_RampAtlas.tga b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_RampAtlas.tga new file mode 100644 index 00000000..f3b7bb04 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_RampAtlas.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba5e63ab21eeb215e1861afb16758b71a8ddfaa0f0bb9cd30c503babaaf56fc0 +size 8210 diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_RampAtlas.tga.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_RampAtlas.tga.meta new file mode 100644 index 00000000..33892f26 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_RampAtlas.tga.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: cfbe5a628e96c0d4bae3645ad922a368 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: 4 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: '{"MonoBehaviour":{"m_Enabled":true,"m_EditorHideFlags":0,"m_Name":"LWGUI_RampAtlas","m_EditorClassIdentifier":"","rampAtlasWidth":256,"rampAtlasHeight":8,"rampAtlasSRGB":true,"_ramps":[{"name":"Default + Ramp","gradient":{"_curves":[{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":0.0,"inSlope":0.0,"outSlope":1.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":1.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":0.0,"inSlope":0.0,"outSlope":1.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":1.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4}]},"colorSpace":0,"channelMask":15,"timeRange":1},{"name":"Default + Ramp","gradient":{"_curves":[{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":-0.00004999999873689376,"value":0.0,"inSlope":0.0,"outSlope":0.9999500513076782,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.9999500513076782,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":-0.00004999999873689376,"value":0.9492826461791992,"inSlope":0.0,"outSlope":0.05071482062339783,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.05071482062339783,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":-0.00004999999873689376,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4}]},"colorSpace":0,"channelMask":15,"timeRange":1},{"name":"New + Ramp","gradient":{"_curves":[{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4}]},"colorSpace":0,"channelMask":-1,"timeRange":1},{"name":"Green","gradient":{"_curves":[{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":0.0,"inSlope":0.0,"outSlope":1.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":1.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4}]},"colorSpace":1,"channelMask":10,"timeRange":24}],"_saveTextureToggle":false}}' + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerA.mat b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerA.mat new file mode 100644 index 00000000..40118c35 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerA.mat @@ -0,0 +1,118 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LWGUI_SampleDrawerA + m_Shader: {fileID: 4800000, guid: ded91f399f8343d4f9b0cf33eda0088d, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - KEY2 + - _KEYWORD + - _ZWRITE_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Ramp: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Ramp2: + m_Texture: {fileID: 2800000, guid: fad186cbfd0faf2488e2edb774c6d08f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _RampAtlas: + m_Texture: {fileID: 2800000, guid: a515311e7e4a4694191895bf48c01468, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _normal: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: + - _Stencil: 172 + - _StencilWithDescription: 0 + m_Floats: + - _BlendMode: 1 + - _ColorMask: 15 + - _Cull: 2 + - _DstBlend: 10 + - _PresetGroup: 0 + - _Queue: 2000 + - _RampAtlasIndex0: 0 + - _RampAtlasIndex1: 2 + - _RampAtlasIndex2: 3 + - _RampAtlasIndexer: 0 + - _SrcBlend: 5 + - _ZTest: 4 + - _ZWrite: 0 + - _blendMode: 1 + - _enum: 1 + - _enum1: 0 + - _enum2: 0 + - _enum3: 0 + - _enum3_range: 0 + - _enumFloat1: 0 + - _enumFloat2: 0 + - _enumFloat3: 0 + - _enumFloat4_range: 0 + - _float: 1 + - _float2: 1.17 + - _float3: 2 + - _float30: 2 + - _float31: 2 + - _float32: 2 + - _float33: 2 + - _float34: 2 + - _float35: 2 + - _float36: 2 + - _float4: 2 + - _float_keyword: 0 + - _float_tooltip_helpbox: 0 + - _group: 0 + - _group2: 1 + - _group3: 1 + - _group4: 1 + - _group5: 1 + - _group6: 1 + - _group7: 1 + - _group8: 1 + - _powerSlider: 39.1 + - _toggle: 0 + - _toggle_keyword: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 0.5529412} + - _Color00: {r: 1, g: 1, b: 1, a: 1} + - _Color001: {r: 1, g: 1, b: 1, a: 1} + - _Color0012: {r: 1, g: 1, b: 1, a: 1} + - _Color11: {r: 1, g: 1, b: 1, a: 1} + - _Color1122: {r: 1, g: 1, b: 1, a: 1} + - _Color11222: {r: 1, g: 1, b: 1, a: 1} + - _Color112223: {r: 1, g: 1, b: 1, a: 1} + - _hdr: {r: 1, g: 1, b: 1, a: 1} + - _mColor: {r: 1, g: 1, b: 1, a: 1} + - _mColor1: {r: 1, g: 0, b: 0, a: 1} + - _mColor2: {r: 0.68301886, g: 1, b: 0.68301886, a: 1} + - _mColor3: {r: 0, g: 0, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerA.mat.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerA.mat.meta new file mode 100644 index 00000000..f3b4e2fe --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerA.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ddde4f59ff87bc842838b9aae66978c8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerA1.mat b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerA1.mat new file mode 100644 index 00000000..c65066fc --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerA1.mat @@ -0,0 +1,117 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LWGUI_SampleDrawerA1 + m_Shader: {fileID: 4800000, guid: ded91f399f8343d4f9b0cf33eda0088d, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - KEY2 + - _KEYWORD + - _ZWRITE_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Ramp: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Ramp2: + m_Texture: {fileID: 2800000, guid: 7e050a45dc871a549a2530bd4acf96ba, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _RampAtlas: + m_Texture: {fileID: 2800000, guid: 5d501ab9fed726e4baa7d838819327e9, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _normal: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: + - _Stencil: 0 + - _StencilWithDescription: 0 + m_Floats: + - _BlendMode: 1 + - _ColorMask: 15 + - _Cull: 2 + - _DstBlend: 10 + - _PresetGroup: 0 + - _Queue: 2000 + - _RampAtlasIndex0: 0 + - _RampAtlasIndex1: 2 + - _RampAtlasIndexer: 0 + - _SrcBlend: 5 + - _ZTest: 4 + - _ZWrite: 0 + - _blendMode: 1 + - _enum: 1 + - _enum1: 0 + - _enum2: 0 + - _enum3: 0 + - _enum3_range: 0 + - _enumFloat1: 0 + - _enumFloat2: 0 + - _enumFloat3: 0 + - _enumFloat4_range: 0 + - _float: 1 + - _float2: 1.17 + - _float3: 2 + - _float30: 2 + - _float31: 2 + - _float32: 2 + - _float33: 2 + - _float34: 2 + - _float35: 2 + - _float36: 2 + - _float4: 2 + - _float_keyword: 0 + - _float_tooltip_helpbox: 0 + - _group: 0 + - _group2: 1 + - _group3: 1 + - _group4: 1 + - _group5: 1 + - _group6: 1 + - _group7: 1 + - _group8: 1 + - _powerSlider: 39.1 + - _toggle: 0 + - _toggle_keyword: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 0.5529412} + - _Color00: {r: 1, g: 1, b: 1, a: 1} + - _Color001: {r: 1, g: 1, b: 1, a: 1} + - _Color0012: {r: 1, g: 1, b: 1, a: 1} + - _Color11: {r: 1, g: 1, b: 1, a: 1} + - _Color1122: {r: 1, g: 1, b: 1, a: 1} + - _Color11222: {r: 1, g: 1, b: 1, a: 1} + - _Color112223: {r: 1, g: 1, b: 1, a: 1} + - _hdr: {r: 1, g: 1, b: 1, a: 1} + - _mColor: {r: 1, g: 1, b: 1, a: 1} + - _mColor1: {r: 1, g: 0, b: 0, a: 1} + - _mColor2: {r: 0.68301886, g: 1, b: 0.68301886, a: 1} + - _mColor3: {r: 0, g: 0, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerA1.mat.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerA1.mat.meta new file mode 100644 index 00000000..53595e77 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerA1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5c1027b710f71c44582d6fd0db0b9ca0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerB.mat b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerB.mat new file mode 100644 index 00000000..8bb0cdc3 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerB.mat @@ -0,0 +1,142 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LWGUI_SampleDrawerB + m_Shader: {fileID: 4800000, guid: 7ee048c9536c0344bb8b4860595a4d9b, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _GROUP_ON + - _KEY2 + - _KEY3 + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 3000 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AdvancedImage: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AdvancedTex0: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AdvancedTex1: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LinearRamp: + m_Texture: {fileID: 2800000, guid: 6293a417776889843b0c6d20f25677be, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Ramp: + m_Texture: {fileID: 2800000, guid: 87addb69bcbcc9b4ea7336eff8d6a52b, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Tex: + m_Texture: {fileID: 2800000, guid: 5366ba78a5c67fb498c8b4db71177ac2, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _normal: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _sRGBRamp: + m_Texture: {fileID: 2800000, guid: fad186cbfd0faf2488e2edb774c6d08f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex_channel: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex_color: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex_float: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex_range: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex_single_line: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex_toggle: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AdvancedFloat: 0 + - _AdvancedImage: 0 + - _AdvancedRange0: 0.252 + - _Advancedfloat0: 0.12 + - _Advancedfloat1: 0.13 + - _Advancedfloat3: 0.21 + - _Advancedfloat4: 0 + - _Advancedfloat7: 0.24 + - _button0: 0 + - _enum: 1 + - _float: -0.46 + - _float1: -0.05 + - _float2: -0.08 + - _float3: 0 + - _float4: 2 + - _floatN: 0 + - _float_helpbox: 1 + - _float_tooltip: 1 + - _group: 1 + - _group1: 0 + - _group2: 0 + - _group3: 0 + - _key13_PowerSlider: 0.199 + - _key1_Float1: 0 + - _key2_Float2: 0 + - _key3_Float3: -0.34 + - _key3_Float3_Range: 0.329 + - _key3_Float4_PowerSlider: 0 + - _key3_Int_Range: 1 + - _minMaxSlider: 1 + - _preset: 0 + - _preset1: 0 + - _preset_toggle: 0 + - _range: 0.42 + - _rangeEnd: 0.70471865 + - _rangeStart: 0.20471871 + - _textureFloat1: 1 + - _toggle: 0 + - _toggle1: 1 + m_Colors: + - _AdvancedColor0: {r: 1, g: 1, b: 1, a: 1} + - _AdvancedColor7: {r: 1, g: 1, b: 1, a: 1} + - _color: {r: 1, g: 0.5886792, b: 0.5886792, a: 1} + - _color1: {r: 0, g: 1, b: 0.296113, a: 0} + - _mColor: {r: 0.6132076, g: 0.4014774, b: 0.4014774, a: 1} + - _mColor1: {r: 1, g: 0, b: 0, a: 1} + - _mColor2: {r: 0, g: 1, b: 0, a: 1} + - _mColor3: {r: 0, g: 0, b: 1, a: 1} + - _textureChannelMask: {r: 0, g: 1, b: 0, a: 0} + - _textureChannelMask1: {r: 0, g: 0, b: 0, a: 1} + - _vector1: {r: 1.32, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerB.mat.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerB.mat.meta new file mode 100644 index 00000000..9e3430ec --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerB.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d9611311befa11f4f944025e015b7f24 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerB1.mat b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerB1.mat new file mode 100644 index 00000000..ef952d9e --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerB1.mat @@ -0,0 +1,139 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LWGUI_SampleDrawerB1 + m_Shader: {fileID: 4800000, guid: 7ee048c9536c0344bb8b4860595a4d9b, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: + - _KEY1 + - _KEY2 + - _KEY3 + - _KEYWORD + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AdvancedImage: + m_Texture: {fileID: 2800000, guid: 63de4a0dcb29d454c89e31d4e6d0d8db, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AdvancedTex0: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _AdvancedTex1: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _LinearRamp: + m_Texture: {fileID: 2800000, guid: 6293a417776889843b0c6d20f25677be, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Ramp: + m_Texture: {fileID: 2800000, guid: fad186cbfd0faf2488e2edb774c6d08f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Tex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _normal: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _sRGBRamp: + m_Texture: {fileID: 2800000, guid: fad186cbfd0faf2488e2edb774c6d08f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex_channel: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex_color: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex_float: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex_range: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex_single_line: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _tex_toggle: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AdvancedFloat: 0 + - _AdvancedRange0: 0.62 + - _Advancedfloat0: 0.54 + - _Advancedfloat1: 0.45 + - _Advancedfloat3: 1.56 + - _Advancedfloat4: 0 + - _Advancedfloat7: 3.21 + - _enum: 1 + - _float: 0.53 + - _float1: 1 + - _float2: -0.57 + - _float3: 0 + - _float4: 0 + - _floatN: 0 + - _float_helpbox: 1 + - _float_tooltip: 1.91 + - _group: 0 + - _group1: 1 + - _group2: 0 + - _group3: 0 + - _key13_PowerSlider: 0 + - _key1_Float1: 0 + - _key2_Float2: 0 + - _key3_Float3: 0 + - _key3_Float3_Range: 0.137 + - _key3_Float4_PowerSlider: 0.0033800516 + - _key3_Int_Range: 0 + - _minMaxSlider: 1 + - _preset: 1 + - _preset1: 0 + - _range: 0 + - _rangeEnd: 0.87684953 + - _rangeStart: 0.1898573 + - _rangeStart1: 0 + - _rangeStart2: 0 + - _textureFloat1: 1 + - _toggle: 0 + - _toggle1: 0 + m_Colors: + - _AdvancedColor0: {r: 1, g: 1, b: 1, a: 1} + - _AdvancedColor7: {r: 1, g: 1, b: 1, a: 1} + - _color: {r: 1, g: 0, b: 0, a: 1} + - _color1: {r: 0.7, g: 0.7, b: 1, a: 1} + - _mColor: {r: 1, g: 1, b: 1, a: 1} + - _mColor1: {r: 1, g: 0, b: 0, a: 1} + - _mColor2: {r: 0, g: 1, b: 0, a: 1} + - _mColor3: {r: 0, g: 0, b: 1, a: 1} + - _textureChannelMask: {r: 0, g: 1, b: 0, a: 0} + - _textureChannelMask1: {r: 0, g: 0, b: 0, a: 1} + - _vector1: {r: 0.34, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerB1.mat.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerB1.mat.meta new file mode 100644 index 00000000..8ecc57f5 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/LWGUI_SampleDrawerB1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6379fbe32817f7847b8e0dcd9556c223 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/RampMap_Linear.png.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/RampMap_Linear.png.meta index 6b1d60e6..c73a452f 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/RampMap_Linear.png.meta +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/RampMap_Linear.png.meta @@ -20,11 +20,12 @@ TextureImporter: externalNormalMap: 0 heightScale: 0.25 normalMapFilter: 0 + flipGreenChannel: 0 isReadable: 1 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 - ignoreMasterTextureLimit: 0 + ignoreMipmapLimit: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 @@ -63,6 +64,7 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 + swizzle: 50462976 cookieLightType: 0 platformSettings: - serializedVersion: 3 @@ -75,6 +77,7 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 @@ -87,6 +90,7 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 @@ -99,6 +103,7 @@ TextureImporter: crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 + ignorePlatformSupport: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: @@ -115,9 +120,8 @@ TextureImporter: weights: [] secondaryTextures: [] nameFileIdTable: {} - spritePackingTag: + mipmapLimitGroupName: pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 userData: '{"_curves":[{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":0.0,"inSlope":0.0,"outSlope":1.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":1.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":0.0,"inSlope":0.0,"outSlope":1.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":1.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":0.0,"inSlope":0.0,"outSlope":1.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":1.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4}]}#{"_curves":[{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":0.0,"inSlope":0.0,"outSlope":1.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":1.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":0.0,"inSlope":0.0,"outSlope":1.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":1.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":0.0,"inSlope":0.0,"outSlope":1.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":1.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4}]}' assetBundleName: assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/RampMap_sRGB.png b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/RampMap_sRGB.png index 13e1481c..9ae93a06 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/RampMap_sRGB.png +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/RampMap_sRGB.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:feda8e28f7d6bb1418f3c2eab44de36149270b4afeedf7351d553a59bdbe3460 -size 100 +oid sha256:64d9d1133d796d2bae48b0d7ce69a57fc47fbc54dcf9ebf339ebdd99c4b20532 +size 312 diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/RampMap_sRGB.png.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/RampMap_sRGB.png.meta index c33ff119..9e8f6d76 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/RampMap_sRGB.png.meta +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/RampMap_sRGB.png.meta @@ -122,6 +122,6 @@ TextureImporter: nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 - userData: '{"_curves":[{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":0.0,"inSlope":0.0,"outSlope":1.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":1.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":0.0,"inSlope":0.0,"outSlope":1.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":1.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":0.0,"inSlope":0.0,"outSlope":1.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":1.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0},{"serializedVersion":"3","time":1.0,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":69,"weightedMode":0,"inWeight":0.0,"outWeight":0.0}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4}]}#{"_curves":[{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.19993001222610475,"value":0.25,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.3509286344051361,"value":0.713207483291626,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.497556209564209,"value":0.4040227234363556,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.6422287225723267,"value":0.711692214012146,"inSlope":1.9705389738082886,"outSlope":1.9705389738082886,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.800000011920929,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.19993001222610475,"value":0.25,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.3509286344051361,"value":0.6254975199699402,"inSlope":1.174917459487915,"outSlope":1.174917459487915,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.497556209564209,"value":0.7129190564155579,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.6422287225723267,"value":0.46618008613586428,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.800000011920929,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.19993001222610475,"value":0.25,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.3509286344051361,"value":0.38082584738731387,"inSlope":1.6324135065078736,"outSlope":1.6324135065078736,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.497556209564209,"value":0.7358490228652954,"inSlope":1.55451500415802,"outSlope":1.55451500415802,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.6422287225723267,"value":0.849056601524353,"inSlope":0.8733886480331421,"outSlope":0.8733886480331421,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.800000011920929,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.20000000298023225,"value":0.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.3499511182308197,"value":0.13333334028720857,"inSlope":1.2060123682022095,"outSlope":1.2060123682022095,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.6422287225723267,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.800000011920929,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4}]}' + userData: '{"_curves":[{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.2003910094499588,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.3519061505794525,"value":0.9137465953826904,"inSlope":-1.1610162258148194,"outSlope":-1.1610162258148194,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.497556209564209,"value":0.4040227234363556,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.6422287225723267,"value":0.711692214012146,"inSlope":1.9705389738082886,"outSlope":1.9705389738082886,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.800000011920929,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.2003910094499588,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.3519061505794525,"value":0.740675151348114,"inSlope":-0.3736116290092468,"outSlope":-0.3736116290092468,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.497556209564209,"value":0.7129190564155579,"inSlope":-0.38241732120513918,"outSlope":-0.38241732120513918,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.6422287225723267,"value":0.46618008613586428,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.800000011920929,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.2003910094499588,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.3519061505794525,"value":0.24506132304668427,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.497556209564209,"value":0.7358490228652954,"inSlope":1.559748649597168,"outSlope":1.559748649597168,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.6422287225723267,"value":0.849056601524353,"inSlope":0.8733886480331421,"outSlope":0.8733886480331421,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.800000011920929,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.20000000298023225,"value":0.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.3499511182308197,"value":0.13333334028720857,"inSlope":1.2060123682022095,"outSlope":1.2060123682022095,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.6422287225723267,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.800000011920929,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4}]}#{"_curves":[{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.2003910094499588,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.3519061505794525,"value":0.9137465953826904,"inSlope":-1.1610162258148194,"outSlope":-1.1610162258148194,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.497556209564209,"value":0.4040227234363556,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.6422287225723267,"value":0.711692214012146,"inSlope":1.9705389738082886,"outSlope":1.9705389738082886,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.800000011920929,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.2003910094499588,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.3519061505794525,"value":0.740675151348114,"inSlope":-0.3736116290092468,"outSlope":-0.3736116290092468,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.497556209564209,"value":0.7129190564155579,"inSlope":-0.38241732120513918,"outSlope":-0.38241732120513918,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.6422287225723267,"value":0.46618008613586428,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.800000011920929,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.2003910094499588,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.3519061505794525,"value":0.24506132304668427,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.497556209564209,"value":0.7358490228652954,"inSlope":1.559748649597168,"outSlope":1.559748649597168,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.6422287225723267,"value":0.849056601524353,"inSlope":0.8733886480331421,"outSlope":0.8733886480331421,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.800000011920929,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4},{"serializedVersion":"2","m_Curve":[{"serializedVersion":"3","time":0.20000000298023225,"value":0.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.3499511182308197,"value":0.13333334028720857,"inSlope":1.2060123682022095,"outSlope":1.2060123682022095,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.6422287225723267,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408},{"serializedVersion":"3","time":0.800000011920929,"value":1.0,"inSlope":0.0,"outSlope":0.0,"tangentMode":136,"weightedMode":0,"inWeight":0.3333333432674408,"outWeight":0.3333333432674408}],"m_PreInfinity":2,"m_PostInfinity":2,"m_RotationOrder":4}]}' assetBundleName: assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleAmplifyShader.shader b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleAmplifyShader.shader index ca822b6a..a2731a41 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleAmplifyShader.shader +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleAmplifyShader.shader @@ -1,43 +1,124 @@ -// Made with Amplify Shader Editor v1.9.1.8 +// Made with Amplify Shader Editor v1.9.2.2 // Available at the Unity Asset Store - http://u3d.as/y3X Shader "Hidden" { Properties { [HDR][Header()][Header(Test Header)][Space(50)]_Color("Color", Vector) = (0,0,0,0) - [HideInInspector] __dirty( "", Int ) = 1 - } + } + SubShader { - Tags{ "RenderType" = "Opaque" "Queue" = "Geometry+0" } - Cull Back - CGPROGRAM + + + Tags { "RenderType"="Opaque" } + LOD 100 + + CGINCLUDE #pragma target 3.0 - #pragma surface surf Standard keepalpha addshadow fullforwardshadows - struct Input - { - half filler; - }; - - uniform float3 _Color; - - void surf( Input i , inout SurfaceOutputStandard o ) - { - o.Albedo = _Color; - o.Alpha = 1; - } - ENDCG + Blend Off + AlphaToMask Off + Cull Back + ColorMask RGBA + ZWrite On + ZTest LEqual + Offset 0 , 0 + + + + Pass + { + Name "Unlit" + + CGPROGRAM + + + + #ifndef UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX + //only defining to not throw compilation error over Unity 5.5 + #define UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input) + #endif + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_instancing + #include "UnityCG.cginc" + + + struct appdata + { + float4 vertex : POSITION; + float4 color : COLOR; + + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 vertex : SV_POSITION; + #ifdef ASE_NEEDS_FRAG_WORLD_POSITION + float3 worldPos : TEXCOORD0; + #endif + + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + }; + + uniform float3 _Color; + + + v2f vert ( appdata v ) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + UNITY_TRANSFER_INSTANCE_ID(v, o); + + + float3 vertexValue = float3(0, 0, 0); + #if ASE_ABSOLUTE_VERTEX_POS + vertexValue = v.vertex.xyz; + #endif + vertexValue = vertexValue; + #if ASE_ABSOLUTE_VERTEX_POS + v.vertex.xyz = vertexValue; + #else + v.vertex.xyz += vertexValue; + #endif + o.vertex = UnityObjectToClipPos(v.vertex); + + #ifdef ASE_NEEDS_FRAG_WORLD_POSITION + o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; + #endif + return o; + } + + fixed4 frag (v2f i ) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(i); + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); + fixed4 finalColor; + #ifdef ASE_NEEDS_FRAG_WORLD_POSITION + float3 WorldPosition = i.worldPos; + #endif + + + finalColor = float4( _Color , 0.0 ); + return finalColor; + } + ENDCG + } } - Fallback "Diffuse" CustomEditor "ASEMaterialInspector" + + Fallback Off } /*ASEBEGIN -Version=19108 -Node;AmplifyShaderEditor.StandardSurfaceOutputNode;0;-8,-15;Float;False;True;-1;2;ASEMaterialInspector;0;0;Standard;Hidden;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;Back;0;False;;0;False;;False;0;False;;0;False;;False;0;Opaque;0.5;True;True;0;False;Opaque;;Geometry;All;12;all;True;True;True;True;0;False;;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;2;15;10;25;False;0.5;True;0;0;False;;0;False;;0;0;False;;0;False;;0;False;;0;False;;0;False;0;0,0,0,0;VertexOffset;True;False;Cylindrical;False;True;Relative;0;;-1;-1;-1;-1;0;False;0;0;False;;-1;0;False;;0;0;0;False;0.1;False;;0;False;;False;16;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT;0;False;9;FLOAT;0;False;10;FLOAT;0;False;13;FLOAT3;0,0,0;False;11;FLOAT3;0,0,0;False;12;FLOAT3;0,0,0;False;14;FLOAT4;0,0,0,0;False;15;FLOAT3;0,0,0;False;0 +Version=19202 Node;AmplifyShaderEditor.Vector3Node;1;-274.682,-13.31076;Inherit;False;Property;_Color;Color;0;2;[HDR];[Header];Create;True;1;;0;0;False;2;Header(Test Header);Space(50);False;0,0,0;0,0,0;0;4;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3 Node;AmplifyShaderEditor.RangedFloatNode;2;-482.682,146.6892;Inherit;False;Property;_Float0;Float 0;1;1;[Enum];Create;True;0;1;Option1;0;0;False;1;;False;0;0;0;0;0;1;FLOAT;0 -WireConnection;0;0;1;0 +Node;AmplifyShaderEditor.TemplateMultiPassMasterNode;3;-8,-15;Float;False;True;-1;2;ASEMaterialInspector;100;5;Hidden;0770190933193b94aaa3065e307002fa;True;Unlit;0;0;Unlit;2;False;True;0;1;False;;0;False;;0;1;False;;0;False;;True;0;False;;0;False;;False;False;False;False;False;False;False;False;False;True;0;False;;False;True;0;False;;False;True;True;True;True;True;0;False;;False;False;False;False;False;False;False;True;False;0;False;;255;False;;255;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;True;1;False;;True;3;False;;True;True;0;False;;0;False;;True;1;RenderType=Opaque=RenderType;True;2;False;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;0;;0;0;Standard;1;Vertex Position,InvertActionOnDeselection;1;0;0;1;True;False;;False;0 +WireConnection;3;0;1;0 ASEEND*/ -//CHKSM=42AC050A646F1BF2270B18EA7D0062D9E386B4B3 \ No newline at end of file +//CHKSM=6D95375F618D8B4B492B732E7F0009AB2F1206EE \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleDrawerA.shader b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleDrawerA.shader new file mode 100644 index 00000000..1b93dddc --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleDrawerA.shader @@ -0,0 +1,127 @@ +Shader "Hidden" +{ + Properties + { + // use Header on builtin attribute + [Header(Header)][NoScaleOffset] + _MainTex ("Color Map", 2D) = "white" { } + [HDR] _Color ("Color", Color) = (1, 1, 1, 1) + [Ramp] _Ramp ("Ramp", 2D) = "white" { } + + // use Title on LWGUI attribute + [Title(Title)] + [Tex(_, _mColor2)] _tex ("tex color", 2D) = "white" { } + + + [Title(Title on Group)] + // Create a folding group with name "g1" + [Main(g1)] _group ("Group", float) = 0 + [Sub(g1)] _float ("float", float) = 2 + + [SubEnum(g1, name1, 2, name2, 1, name3, 0)] + _enum ("enum", float) = 0 + [Tex(g1)][Normal] _normal ("normal", 2D) = "bump" { } + [Sub(g1)][HDR] _hdr ("hdr", Color) = (1, 1, 1, 1) + [SubTitle(g1, Sample SubTitle)] + [SubToggle(g1, _)] _toggle ("toggle", float) = 0 + [SubToggle(g1, _KEYWORD)] _toggle_keyword ("toggle_keyword", float) = 0 + [Sub(g1_KEYWORD)] _float_keyword ("float_keyword", float) = 0 + [SubPowerSlider(g1, 2)] _powerSlider ("powerSlider", Range(0, 100)) = 0 + + // Display up to 4 colors in a single line + [Color(g1, _mColor1, _mColor2, _mColor3)] + _mColor ("multicolor", Color) = (1, 1, 1, 1) + [HideInInspector] _mColor1 (" ", Color) = (1, 0, 0, 1) + [HideInInspector] _mColor2 (" ", Color) = (0, 1, 0, 1) + [HideInInspector] [HDR] _mColor3 (" ", Color) = (0, 0, 1, 1) + + + // Create a drop-down menu that opens by default, without toggle + [Main(g2, _KEYWORD, on, off)] _group2 ("group2 without toggle", float) = 1 + [Tooltip(Test Tooltip)] + [Helpbox(Test Helpbox)] + [Sub(g2)] _float_tooltip_helpbox ("float tooltip helpbox#这是中文Tooltip%これは日本語Helpboxです", float) = 0 + [Sub(g2)] _float2 ("float2", float) = 2 + [Title(Ramp Sample)] + [Ramp(g2)] _Ramp2 ("Ramp2", 2D) = "white" { } + [Title(Ramp Atlas Sample)] + [RampAtlas(g2)] _RampAtlas ("Ramp Atlas", 2D) = "white" { } + [Space] + [RampAtlasIndexer(g2, _RampAtlas, Default Ramp)] _RampAtlasIndex0 ("Indexer", float) = 0 + [RampAtlasIndexer(g2, _RampAtlas, Default Ramp)] _RampAtlasIndex1 ("Indexer", float) = 1 + [RampAtlasIndexer(g2, _RampAtlas, Green, Linear, GA, 24)] _RampAtlasIndex2 ("Indexer Linear/Green/24", float) = 3 + + + [Main(Preset, _, on, off)] _PresetGroup ("Preset Samples", float) = 0 + [Preset(Preset, LWGUI_Preset_BlendMode)] _BlendMode ("Blend Mode Preset", float) = 0 + [SubEnum(Preset, UnityEngine.Rendering.CullMode)] _Cull ("Cull", Float) = 2 + [SubEnum(Preset, UnityEngine.Rendering.BlendMode)] _SrcBlend ("SrcBlend", Float) = 1 + [SubEnum(Preset, UnityEngine.Rendering.BlendMode)] _DstBlend ("DstBlend", Float) = 0 + [SubToggle(Preset)] _ZWrite ("ZWrite ", Float) = 1 + [SubEnum(Preset, UnityEngine.Rendering.CompareFunction)] _ZTest ("ZTest", Float) = 4 // 4 is LEqual + [SubEnum(Preset, RGBA, 15, RGB, 14)] _ColorMask ("ColorMask", Float) = 15 // 15 is RGBA (binary 1111) + [BitMask(Preset)] _Stencil ("Stencil", Integer) = 0 + [BitMask(Preset, Left, Bit6, Bit5, Bit4, Description, Bit2, Bit1, Right)] _StencilWithDescription ("Stencil With Description", Integer) = 0 + + } + + HLSLINCLUDE + + + + ENDHLSL + + SubShader + { + Tags { "RenderType" = "Opaque" } + LOD 100 + Cull [_Cull] + ZWrite [_ZWrite] + Blend [_SrcBlend] [_DstBlend] + ColorMask [_ColorMask] + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + sampler2D _RampAtlas; + float4 _RampAtlas_TexelSize; + int _RampAtlasIndex0; + + struct appdata + { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + }; + + struct v2f + { + float2 uv : TEXCOORD0; + UNITY_FOG_COORDS(1) + float4 vertex : SV_POSITION; + }; + float4 _Color; + + v2f vert(appdata v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.uv = v.uv; + return o; + } + + fixed4 frag(v2f i) : SV_Target + { + float2 rampUV = float2(i.uv.x, _RampAtlas_TexelSize.y * (_RampAtlasIndex0 + 0.5f)); + fixed4 col = tex2D(_RampAtlas, saturate(rampUV)); + return col; + } + ENDCG + } + } + CustomEditor "LWGUI.LWGUI" +} diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleDrawerA.shader.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleDrawerA.shader.meta new file mode 100644 index 00000000..7e109a93 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleDrawerA.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7ea89b75afa25a94ab8d5f6bb6e89a12 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleDrawerB.shader b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleDrawerB.shader new file mode 100644 index 00000000..d618b591 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleDrawerB.shader @@ -0,0 +1,97 @@ +Shader "Hidden" +{ + Properties + { + [ShowIf(_enum, Equal, 1)] + [Title(ShowIf Main Samples)] + [Main(GroupName)] _group ("Group", float) = 0 + [Sub(GroupName)] _float ("Float", float) = 0 + [Sub(GroupName)] _Tex ("Tex", 2D) = "white" { } + + + [Main(Group1, _KEYWORD, on)] _group1 ("Group - Default Open", float) = 1 + [Preset(Group1, LWGUI_ShaderPropertyPreset)] _preset ("Preset Sample", float) = 0 + [Preset(Group1, LWGUI_ShaderPropertyPreset1)] _preset1 ("Preset Sample 1", float) = 0 + [SubToggle(Group1, _, LWGUI_Preset_Toggle)] _preset_toggle ("Preset Toggle Sample", float) = 0 + [Sub(Group1)] _float1 ("Sub Float", float) = 0 + [Sub(Group1)] _vector1 ("Sub Vector", vector) = (1, 1, 1, 1) + [Sub(Group1)] [HDR] _color1 ("Sub HDR Color", color) = (0.7, 0.7, 1, 1) + + [SubTitle(Group1, Conditional Display Samples Enum)] + [KWEnum(Group1, Name 1, _KEY1, Name 2, _KEY2, Name 3, _KEY3)] _enum ("KWEnum", float) = 0 + [Sub(Group1)][ShowIf(_enum, Equal, 0)] _key1_Float1 ("Key1 Float", float) = 0 + [Sub(Group1)][ShowIf(_enum, Equal, 1)] _key2_Float2 ("Key2 Float", float) = 0 + [SubIntRange(Group1)][ShowIf(_enum, Equal, 2)] _key3_Int_Range ("Key3 Int Range", Range(0, 10)) = 0 + [ShowIf(_enum, Equal, 0)][ShowIf(Or, _enum, Equal, 2)] + [SubPowerSlider(Group1, 3)] _key13_PowerSlider ("Key1 or Key3 Power Slider", Range(0, 1)) = 0 + + + [Main(Group2, _, off, off)] _group2 ("Group - Without Toggle", float) = 0 + [Sub(Group2)] _float3 ("Float 2", float) = 0 + [Advanced][Sub(Group2)] _Advancedfloat0 ("Advanced Float 0", float) = 0 + [Advanced][Sub(Group2)] _Advancedfloat1 ("Advanced Float 1", float) = 0 + [Advanced(Advanced Header Test)][Sub(Group2)] _Advancedfloat3 ("Advanced Float 3", float) = 0 + [Advanced][Sub(Group2)] _Advancedfloat4 ("Advanced Float 4", float) = 0 + [AdvancedHeaderProperty][Tex(Group2, _AdvancedColor7)] _AdvancedTex0 ("Advanced Header Property Test", 2D) = "white" { } + [Advanced][HideInInspector] _AdvancedColor7 ("Advanced Color 7", Color) = (1, 1, 1, 1) + [Advanced][Tex(Group2, _AdvancedColor0)] _AdvancedTex1 ("Advanced Tex 1", 2D) = "white" { } + [Advanced][HideInInspector] _AdvancedColor0 ("Advanced Color 0", Color) = (1, 1, 1, 1) + [AdvancedHeaderProperty][Sub(Group2)] _AdvancedFloat ("Advanced Image", float) = 0 + [Advanced][Image(Group2)] _AdvancedImage ("../image-20220828003810353.png", float) = 0 + + [Title(Channel Samples)] + [Channel] _textureChannelMask ("Texture Channel Mask (Default G)", Vector) = (0, 1, 0, 0) + + + [Title(Metadata Samples)] + [Tooltip(Test multiline Tooltip, a single line supports up to 4 commas)] + [Tooltip()] + [Tooltip(Line 3)] + [Tooltip(Line 4)] + _float_tooltip ("Float with Tooltips##这是中文Tooltip#これは日本語Tooltipです", float) = 1 + [Helpbox(Test multiline Helpbox)] + [Helpbox(Line2)] + [Helpbox(Line3)] + _float_helpbox ("Float with Helpbox%这是中文Helpbox%これは日本語Helpboxです", float) = 1 + + + [Main(Group3, _, on)] _group3 ("Group - Tex and Color Samples", float) = 0 + [Tex(Group3)] _tex_single_line ("Tex Single Line", 2D) = "white" { } + [Tex(Group3, _color)] _tex_color ("Tex with Color", 2D) = "white" { } + [HideInInspector] _color (" ", Color) = (1, 0, 0, 1) + [Tex(Group3, _textureFloat1)] _tex_float ("Tex with Float", 2D) = "white" { } + [HideInInspector] _textureFloat1 (" ", Float) = 1 + + [Color(Group3, _mColor1, _mColor2, _mColor3)] _mColor ("Multi Color", Color) = (1, 1, 1, 1) + [HideInInspector] _mColor1 (" ", Color) = (1, 0, 0, 1) + [HideInInspector] _mColor2 (" ", Color) = (0, 1, 0, 1) + [HideInInspector] [HDR] _mColor3 (" ", Color) = (0, 0, 1, 1) + + + [Title(Ramp Samples)] + [Ramp(_, RampMap_sRGB, Assets, sRGB, 256)] _sRGBRamp ("sRGB Ramp Map", 2D) = "white" { } + [Ramp(_, RampMap_Linear, Assets, Linear, 256)] _LinearRamp ("Linear Ramp Map", 2D) = "white" { } + + + [Title(MinMaxSlider Samples)] + [MinMaxSlider(_rangeStart, _rangeEnd)] _minMaxSlider ("Min Max Slider (0 - 1)", Range(0.0, 1.0)) = 1.0 + _rangeStart ("Range Start", Range(0.0, 0.5)) = 0.0 + [PowerSlider(10)] _rangeEnd ("Range End PowerSlider", Range(0.5, 1.0)) = 1.0 + + [Title(Button Samples)] + [Button(_)] _button0 ("URL Button@URL:https://github.com/JasonMa0012/LWGUI@C# Button@C#:LWGUI.ButtonDrawer.TestMethod(1234, abcd)", Float) = 0 + } + + HLSLINCLUDE + + + + ENDHLSL + + SubShader + { + + Pass { } + } + CustomEditor "LWGUI.LWGUI" +} diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleDrawerB.shader.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleDrawerB.shader.meta new file mode 100644 index 00000000..c7ad1be9 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/Test/SampleDrawerB.shader.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: 3fbb65609fddee04d9c39968df19d171 +ShaderImporter: + externalObjects: {} + defaultTextures: + - _Tex: {instanceID: 0} + - _AdvancedTex0: {instanceID: 0} + - _AdvancedTex1: {instanceID: 0} + - _AdvancedImage: {fileID: 2800000, guid: 63de4a0dcb29d454c89e31d4e6d0d8db, type: 3} + - _tex_single_line: {instanceID: 0} + - _tex_color: {instanceID: 0} + - _tex_channel: {instanceID: 0} + - _sRGBRamp: {instanceID: 0} + - _LinearRamp: {instanceID: 0} + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientDrawer.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientDrawer.cs index cba29803..28ff550e 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientDrawer.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientDrawer.cs @@ -48,10 +48,13 @@ namespace LWGUI.LwguiGradientEditor public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { EditorGUI.BeginChangeCheck(); - var gradient = (LwguiGradient)fieldInfo.GetValue(property.serializedObject.targetObject); - LwguiGradientEditorHelper.GradientField(position, label, property, gradient, colorSpace, viewChannelMask, timeRange); + // var lwguiGradient = property.GetLwguiGradientValue(); + LwguiGradientEditorHelper.GradientField(position, label, property, colorSpace, viewChannelMask, timeRange); if (EditorGUI.EndChangeCheck()) { + // property.SetLwguiGradientValue(LwguiGradientWindow.instance.lwguiGradient); + // property.serializedObject.ApplyModifiedProperties(); + // EditorUtility.SetDirty(property.serializedObject.targetObject); } } } diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientEditor.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientEditor.cs index 8273e075..a3bcce80 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientEditor.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientEditor.cs @@ -17,6 +17,8 @@ namespace LWGUI.LwguiGradientEditor public Vector4 selectedVectorValue = Vector4.negativeInfinity; public float selectedFloatValue = float.NegativeInfinity; public float selectedTime = float.NegativeInfinity; + public float selectedKeysAverageTime = 0; + public uint selectedChannel = 0; public bool isOnlyColorKeySelected; public LwguiGradient.LwguiMergedColorCurves mergedCurves; @@ -33,11 +35,15 @@ namespace LWGUI.LwguiGradientEditor if (curveEditor?.selectedCurves is { Count: > 0 }) { + int selectedKeyCount = 0; foreach (var curveSelection in curveEditor.selectedCurves.Where(selection => selection != null)) { var channelID = curveSelection.curveID; var key = curveEditor.GetKeyframeFromSelection(curveSelection); selectedAnimationCurves[channelID].AddKey(key); + selectedKeysAverageTime += key.time; + selectedKeyCount++; + selectedChannel |= 1u << channelID; if (selectedTime != float.NegativeInfinity && selectedTime != key.time) hasMixedTime = true; @@ -52,10 +58,12 @@ namespace LWGUI.LwguiGradientEditor selectedFloatValue = key.value; } - for (int i = 0; i < 4; i++) + selectedKeysAverageTime /= selectedKeyCount; + + for (int c = 0; c < (int)LwguiGradient.Channel.Num; c++) { - if (selectedVectorValue[i] == Vector4.negativeInfinity[i]) - selectedVectorValue[i] = 0; + if (selectedVectorValue[c] == Vector4.negativeInfinity[c]) + selectedVectorValue[c] = 0; } if (selectedFloatValue == float.NegativeInfinity) @@ -72,6 +80,11 @@ namespace LWGUI.LwguiGradientEditor mergedCurves = new LwguiGradient.LwguiMergedColorCurves(); } } + + public bool HasSelectedChannel(int channelIndex) + { + return (selectedChannel & 1u << channelIndex) != 0; + } } #region UI Layout @@ -127,7 +140,7 @@ namespace LWGUI.LwguiGradientEditor internal ColorSpace colorSpace; internal LwguiGradient.ChannelMask viewChannelMask; internal LwguiGradient.GradientTimeRange gradientTimeRange; - private Action _onChange; + private LwguiGradientWindow.ChangeGradientCallback _onChange; #endregion @@ -242,6 +255,7 @@ namespace LWGUI.LwguiGradientEditor if (EditorGUI.EndChangeCheck()) { _changed = true; + EditorGUI.EndEditingActiveTextField(); ApplyGradientChangesToCurve(); } @@ -297,6 +311,10 @@ namespace LWGUI.LwguiGradientEditor viewChannelMask = (LwguiGradient.ChannelMask)EditorGUI.EnumFlagsField(rect, "Channels", viewChannelMask); if (EditorGUI.EndChangeCheck()) { + // TODO: Close the pop-up window immediately after modification to avoid inconsistent with the displayed value and the actual value. + // The reason is unknown, the old version does not have this problem. + ReflectionHelper.PopupWindowWithoutFocus_Hide(); + _viewSettingschanged = true; InitGradientEditor(true); InitCurveEditor(true); @@ -343,11 +361,15 @@ namespace LWGUI.LwguiGradientEditor rect.width = locationTextWidth + locationWidth; EditorGUIUtility.labelWidth = locationTextWidth; EditorGUI.showMixedValue = selectionInfo.hasMixedTime; + EditorGUI.BeginChangeCheck(); var newTime = EditorGUI.FloatField(rect, "Time", selectionInfo.selectedTime * (int)gradientTimeRange) / (int)gradientTimeRange; // When two keys have the same time, they will be merged, so avoid modifying the time in real time and only apply the changes at the end of the change var hasChange = EditorGUI.EndChangeCheck(); - if (hasChange) _lastEditingTime = newTime; + + if (hasChange) + _lastEditingTime = newTime; + if (_lastEditingTime != selectionInfo.selectedTime && _lastEditingTime != float.NegativeInfinity // End editing text @@ -355,10 +377,16 @@ namespace LWGUI.LwguiGradientEditor // Mouse drag || !EditorGUI.IsEditingTextField() && hasChange)) { - _changed = true; - _curveEditor.SetSelectedKeyPositions(Mathf.Clamp01(_lastEditingTime), 0, true, false); - InitGradientEditor(true); - SyncSelectionFromCurveToGradient(true); + var clampedNewTime = Mathf.Clamp01(_lastEditingTime); + var offsetedNewKeyTime = clampedNewTime; + if (HandleNewKeyTimeConflicts(ref offsetedNewKeyTime, clampedNewTime, selectionInfo)) + { + _changed = true; + _lastEditingTime = offsetedNewKeyTime; + _curveEditor.SetSelectedKeyPositions(offsetedNewKeyTime, 0, true, false); + InitGradientEditor(true); + SyncSelectionFromCurveToGradient(true); + } } } @@ -451,13 +479,93 @@ namespace LWGUI.LwguiGradientEditor } } + /// + /// If the new time of the key is too close to the existing key, Curve Editor will discard one of them. + /// To avoid this, Key conflicts need to be detected and fixed + /// + private bool HandleNewKeyTimeConflicts(ref float outOffsetedNewKeyTime, float newKeyTime, CurveSelectionInfo selectionInfo) + { + const float MinimumInterval = 0.0001f; + const float NearbyKeyThreshold = MinimumInterval * 10; + + // Collect nearby keys + var nearbyKeyTimes = new List(); + for (int c = 0; c < _curveEditor.animationCurves.Length; c++) + { + if (!selectionInfo.HasSelectedChannel(c)) + continue; + + foreach (var key in _curveEditor.animationCurves[c].curve.keys) + { + if (Mathf.Abs(key.time - newKeyTime) < NearbyKeyThreshold + && !nearbyKeyTimes.Contains(key.time)) + nearbyKeyTimes.Add(key.time); + } + } + + // Offset New Time to avoid conflicts with existing Keys + if (nearbyKeyTimes.Count > 0) + { + Debug.LogWarning($"LWGUI Gradient Editor: { nearbyKeyTimes.Count } keys that are too close are detected near the new time, " + + $"and LWGUI will automatically fix the conflicts of the times. " + + $"\n But too many nearby keys may still cause some problems, please be careful to use."); + + bool isNewTimeOnTheLeft = newKeyTime < selectionInfo.selectedKeysAverageTime; + float offsetDirection = isNewTimeOnTheLeft ? 1 : -1; + + nearbyKeyTimes.Sort(); + if (!isNewTimeOnTheLeft) + nearbyKeyTimes.Reverse(); + + for (int i = 0; i < nearbyKeyTimes.Count; i++) + { + var currentNearbyKeyTime = nearbyKeyTimes[i]; + if ((newKeyTime - currentNearbyKeyTime) * offsetDirection > MinimumInterval) + continue; + + var lastNearbyKeyTime = nearbyKeyTimes[Mathf.Max(0, i - 1)]; + + // No conflict, no offset required + if (Mathf.Abs(outOffsetedNewKeyTime - currentNearbyKeyTime) >= MinimumInterval + && Mathf.Abs(outOffsetedNewKeyTime - lastNearbyKeyTime) >= MinimumInterval) + { + break; + } + // Has conflict, offset to the selectedKeysAverageTime + else + { + if (Mathf.Abs(outOffsetedNewKeyTime - lastNearbyKeyTime) < MinimumInterval) + { + outOffsetedNewKeyTime = lastNearbyKeyTime + MinimumInterval * offsetDirection; + } + if (Mathf.Abs(outOffsetedNewKeyTime - currentNearbyKeyTime) < MinimumInterval) + { + outOffsetedNewKeyTime = currentNearbyKeyTime + MinimumInterval * offsetDirection; + } + } + } + + var offsetedNewKeyTime = outOffsetedNewKeyTime; + if (nearbyKeyTimes.Any(time => Mathf.Abs(offsetedNewKeyTime - time) < MinimumInterval)) + { + EditorUtility.DisplayDialog("LWGUI Gradient Editor", + "Time conflicts of Keys were detected! \nPlease avoid the time when inputting too close to existing Keys!", "OK"); + return false; + } + } + return true; + } + private void ShowGradientSwatchArray(Rect rect, List swatches, LwguiGradient.ChannelMask drawingChannelMask) { // GradientEditor.ShowSwatchArray() ReflectionHelper.GradientEditor_SetStyles(); _isAddGradientKeyFailure = false; - _gradientEditor.ShowSwatchArray(rect, (viewChannelMask & drawingChannelMask) != drawingChannelMask ? new List() : swatches, drawingChannelMask == LwguiGradient.ChannelMask.Alpha); + _gradientEditor.ShowSwatchArray(rect, + // Swatches are not displayed when ViewChannel != RGB to avoid modifying other channels + (viewChannelMask & drawingChannelMask) != drawingChannelMask ? new List() : swatches, + drawingChannelMask == LwguiGradient.ChannelMask.Alpha); // Since the maximum number of Gradient Keys is hard-coded in the engine, keys that exceed the limit can only be displayed and edited in the Curve Editor if (_isAddGradientKeyFailure) @@ -777,7 +885,12 @@ namespace LWGUI.LwguiGradientEditor #region Events - public void Init(Rect position, LwguiGradient gradient, ColorSpace colorSpace = ColorSpace.Gamma, LwguiGradient.ChannelMask viewChannelMask = LwguiGradient.ChannelMask.All, LwguiGradient.GradientTimeRange timeRange = LwguiGradient.GradientTimeRange.One, Action onChange = null) + public void Init(Rect position, + LwguiGradient gradient, + ColorSpace colorSpace = ColorSpace.Gamma, + LwguiGradient.ChannelMask viewChannelMask = LwguiGradient.ChannelMask.All, + LwguiGradient.GradientTimeRange timeRange = LwguiGradient.GradientTimeRange.One, + LwguiGradientWindow.ChangeGradientCallback onChange = null) { Clear(); @@ -817,7 +930,7 @@ namespace LWGUI.LwguiGradientEditor UnityEditor.SceneManagement.EditorSceneManager.MarkAllScenesDirty(); GUI.changed = true; - _onChange?.Invoke(lwguiGradient); + // _onChange?.Invoke(lwguiGradient); } if (_viewSettingschanged) diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientEditorHelper.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientEditorHelper.cs index 813689d1..0989b40b 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientEditorHelper.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientEditorHelper.cs @@ -1,6 +1,7 @@ // Copyright (c) Jason Ma using System; +using System.Collections.Generic; using UnityEditor; using UnityEngine; using LWGUI.Runtime.LwguiGradient; @@ -132,14 +133,15 @@ namespace LWGUI.LwguiGradientEditor } /// Lwgui Gradient Field with full Undo/Redo/ContextMenu functions - public static void GradientField(Rect position, GUIContent label, SerializedProperty property, LwguiGradient gradient, + public static void GradientField(Rect position, GUIContent label, SerializedProperty property, ColorSpace colorSpace = ColorSpace.Gamma, LwguiGradient.ChannelMask viewChannelMask = LwguiGradient.ChannelMask.All, LwguiGradient.GradientTimeRange timeRange = LwguiGradient.GradientTimeRange.One) { label = EditorGUI.BeginProperty(position, label, property); EditorGUI.BeginChangeCheck(); - + + var gradient = property.GetLwguiGradientValue(); GradientField(position, label, gradient, colorSpace, viewChannelMask, timeRange, () => LwguiGradientWindow.RegisterSerializedObjectUndo(property.serializedObject.targetObject)); @@ -147,6 +149,8 @@ namespace LWGUI.LwguiGradientEditor { GUI.changed = true; LwguiGradientWindow.RegisterSerializedObjectUndo(property.serializedObject.targetObject); + if (LwguiGradientWindow.instance) + property.SetLwguiGradientValue(LwguiGradientWindow.instance.lwguiGradient); } EditorGUI.EndProperty(); } @@ -155,7 +159,8 @@ namespace LWGUI.LwguiGradientEditor ColorSpace colorSpace = ColorSpace.Gamma, LwguiGradient.ChannelMask viewChannelMask = LwguiGradient.ChannelMask.All, LwguiGradient.GradientTimeRange timeRange = LwguiGradient.GradientTimeRange.One, - Func shouldOpenWindowAfterClickingEvent = null) + Func shouldOpenWindowAfterClickingEvent = null, + LwguiGradientWindow.ChangeGradientCallback onChange = null) { int id = GUIUtility.GetControlID(s_LwguiGradientHash, FocusType.Keyboard, position); var evt = Event.current; @@ -184,12 +189,36 @@ namespace LWGUI.LwguiGradientEditor { s_LwguiGradientID = id; GUIUtility.keyboardControl = id; - LwguiGradientWindow.Show(gradient, colorSpace, viewChannelMask, timeRange, GUIView.current); + LwguiGradientWindow.Show(gradient, colorSpace, viewChannelMask, timeRange, GUIView.current, onChange); GUIUtility.ExitGUI(); } } return clicked; } + + public static LwguiGradient GetLwguiGradientValue(this SerializedProperty property) + { + LwguiGradient lwguiGradient = new(); + + var curversProp = property.FindPropertyRelative("_curves"); + for (int i = 0; i < curversProp.arraySize; i++) + { + var curveProp = curversProp.GetArrayElementAtIndex(i); + lwguiGradient.rawCurves[i] = curveProp.animationCurveValue; + } + + return lwguiGradient; + } + + public static void SetLwguiGradientValue(this SerializedProperty property, LwguiGradient lwguiGradient) + { + var curversProp = property.FindPropertyRelative("_curves"); + for (int i = 0; i < curversProp.arraySize && i < lwguiGradient.rawCurves.Count; i++) + { + var curveProp = curversProp.GetArrayElementAtIndex(i); + curveProp.animationCurveValue = lwguiGradient.rawCurves[i]; + } + } } } \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientWindow.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientWindow.cs index e2180a9e..cd7e8c19 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientWindow.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/LwguiGradientEditor/LwguiGradientWindow.cs @@ -32,6 +32,7 @@ namespace LWGUI.LwguiGradientEditor private static LwguiGradientWindow _lwguiGradientWindow; public const string presetsEditorPrefID = "LwguiGradient"; + public delegate void ChangeGradientCallback(LwguiGradient gradient); private LwguiGradientEditor _lwguiGradientEditor; private PresetLibraryLwguiGradientEditor _lwguiGradientLibraryEditor; @@ -43,7 +44,7 @@ namespace LWGUI.LwguiGradientEditor [NonSerialized] public LwguiGradient.GradientTimeRange gradientTimeRange; private GUIView _viewToUpdate; - private Action _onChange; + private ChangeGradientCallback _onChange; #endregion @@ -60,8 +61,8 @@ namespace LWGUI.LwguiGradientEditor { get { - if (!_lwguiGradientWindow) - Debug.LogError("Lwgui Gradient Window not initalized, did you call Show first?"); + // if (!_lwguiGradientWindow) + // Debug.LogError("Lwgui Gradient Window not initalized, did you call Show first?"); return _lwguiGradientWindow; } } @@ -141,7 +142,7 @@ namespace LWGUI.LwguiGradientEditor private static LwguiGradientWindow GetWindow(bool focus = true) => (LwguiGradientWindow)GetWindow(typeof(LwguiGradientWindow), true, "LWGUI Gradient Editor", focus); - internal static void Show(LwguiGradient gradient, ColorSpace colorSpace = ColorSpace.Gamma, LwguiGradient.ChannelMask viewChannelMask = LwguiGradient.ChannelMask.All, LwguiGradient.GradientTimeRange timeRange = LwguiGradient.GradientTimeRange.One, GUIView viewToUpdate = null, Action onChange = null) + internal static void Show(LwguiGradient gradient, ColorSpace colorSpace = ColorSpace.Gamma, LwguiGradient.ChannelMask viewChannelMask = LwguiGradient.ChannelMask.All, LwguiGradient.GradientTimeRange timeRange = LwguiGradient.GradientTimeRange.One, GUIView viewToUpdate = null, ChangeGradientCallback onChange = null) { if (_lwguiGradientWindow == null) { @@ -187,8 +188,11 @@ namespace LWGUI.LwguiGradientEditor public static void RegisterSerializedObjectUndo(Object targetObject) { - Undo.RegisterCompleteObjectUndo(targetObject, "Lwgui Gradient Editor"); - EditorUtility.SetDirty(targetObject); + if (targetObject) + { + Undo.RegisterCompleteObjectUndo(targetObject, "Lwgui Gradient Editor"); + EditorUtility.SetDirty(targetObject); + } } public static void RegisterRampMapUndo(Object texture, Object assetImporter) @@ -217,15 +221,16 @@ namespace LWGUI.LwguiGradientEditor { LwguiGradientHelper.ClearRampPreviewCaches(); UpdatePresetLibraryViewSettings(); - SendEvent(true); + SendChangedEvent(true); } } public const string LwguiGradientChangedCommand = "LwguiGradientChanged"; - void SendEvent(bool exitGUI) + void SendChangedEvent(bool exitGUI) { - if (_viewToUpdate != null) + _onChange?.Invoke(lwguiGradient); + if (_viewToUpdate) { Event e = EditorGUIUtility.CommandEvent(LwguiGradientChangedCommand); Repaint(); @@ -233,10 +238,6 @@ namespace LWGUI.LwguiGradientEditor if (exitGUI) GUIUtility.ExitGUI(); } - if (_onChange != null) - { - _onChange(lwguiGradient); - } } private void OnEnable() diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/ReflectionHelper.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/ReflectionHelper.cs index 408b3764..b6e1cb11 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/ReflectionHelper.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/ReflectionHelper.cs @@ -2,9 +2,11 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Reflection; using UnityEditor; +using UnityEditorInternal; using UnityEngine; namespace LWGUI @@ -14,15 +16,14 @@ namespace LWGUI #region MaterialPropertyHandler private static readonly Type MaterialPropertyHandler_Type = Assembly.GetAssembly(typeof(Editor)).GetType("UnityEditor.MaterialPropertyHandler"); - private static readonly MethodInfo MaterialPropertyHandler_GetHandler_Method = MaterialPropertyHandler_Type.GetMethod("GetHandler", BindingFlags.Static | BindingFlags.NonPublic); private static readonly PropertyInfo MaterialPropertyHandler_PropertyDrawer_Property = MaterialPropertyHandler_Type.GetProperty("propertyDrawer"); private static readonly FieldInfo MaterialPropertyHandler_DecoratorDrawers_Field = MaterialPropertyHandler_Type.GetField("m_DecoratorDrawers", BindingFlags.NonPublic | BindingFlags.Instance); public static MaterialPropertyDrawer GetPropertyDrawer(Shader shader, MaterialProperty prop, out List decoratorDrawers) { decoratorDrawers = new List(); - var handler = MaterialPropertyHandler_GetHandler_Method.Invoke(null, new object[] { shader, prop.name }); - if (handler != null && handler.GetType() == MaterialPropertyHandler_Type) + var handler = MaterialPropertyHandler.GetHandler(shader, prop.name); + if (handler != null) { decoratorDrawers = MaterialPropertyHandler_DecoratorDrawers_Field.GetValue(handler) as List; return MaterialPropertyHandler_PropertyDrawer_Property.GetValue(handler, null) as MaterialPropertyDrawer; @@ -36,11 +37,22 @@ namespace LWGUI return GetPropertyDrawer(shader, prop, out _); } + public static void InvalidatePropertyCache(Shader shader) + { + MaterialPropertyHandler.InvalidatePropertyCache(shader); + } + + #endregion #region MaterialEditor + private static readonly Type MaterialEditor_Type = typeof(MaterialEditor); + private static readonly PropertyInfo MaterialEditor_RendererForAnimationMode_Property = MaterialEditor_Type.GetProperty("rendererForAnimationMode", BindingFlags.NonPublic | BindingFlags.Instance); + private static readonly MethodInfo MaterialEditor_TexturePropertyBody_Method = MaterialEditor_Type.GetMethod("TexturePropertyBody", BindingFlags.NonPublic | BindingFlags.Instance); + + public static float DoPowerRangeProperty(Rect position, MaterialProperty prop, GUIContent label, float power) { return MaterialEditor.DoPowerRangeProperty(position, prop, label, power); @@ -62,17 +74,25 @@ namespace LWGUI GameObject gameObject = property.tracker.activeEditors[0].target as GameObject; if (gameObject) { - outRenderers.AddRange(gameObject.GetComponents()); - outRenderers.AddRange(gameObject.GetComponents()); + outRenderers.AddRange(gameObject.GetComponents()); } } return outRenderers; } + public static Renderer GetRendererForAnimationMode(this MaterialEditor materialEditor) + { + return MaterialEditor_RendererForAnimationMode_Property.GetValue(materialEditor, null) as Renderer; + } + + public static Texture TexturePropertyBody(this MaterialEditor materialEditor, Rect position, MaterialProperty prop) + { + return MaterialEditor_TexturePropertyBody_Method.Invoke(materialEditor, new object[] { position, prop }) as Texture; + } + #endregion - - + #region EditorUtility public static void DisplayCustomMenuWithSeparators(Rect position, string[] options, bool[] enabled, bool[] separator, int[] selected, EditorUtility.SelectMenuItemFunction callback, object userData = null, bool showHotkey = false) @@ -82,20 +102,18 @@ namespace LWGUI #endregion - #region EditorGUI public static float EditorGUI_Indent => EditorGUI.indentLevel; #endregion - + #region EditorGUILayout public static float EditorGUILayout_kLabelFloatMinW => EditorGUILayout.kLabelFloatMinW; #endregion - #region MaterialEnumDrawer // UnityEditor.MaterialEnumDrawer(string enumName) @@ -126,8 +144,7 @@ namespace LWGUI } #endregion - - + #region MaterialProperty.PropertyData #if UNITY_2022_1_OR_NEWER @@ -153,6 +170,15 @@ namespace LWGUI #endregion + #region Animation + + public static bool MaterialAnimationUtility_OverridePropertyColor(MaterialProperty materialProp, Renderer target, out Color color) + { + return MaterialAnimationUtility.OverridePropertyColor(materialProp, target, out color); + } + + #endregion + #region GUI private static readonly MethodInfo gui_Button_Method = typeof(GUI).GetMethod("Button", BindingFlags.Static | BindingFlags.NonPublic); @@ -220,6 +246,11 @@ namespace LWGUI return (float)GetTime_Method.Invoke(gradientEditor, new object[] { actualTime }); } + public static void PopupWindowWithoutFocus_Hide() + { + PopupWindowWithoutFocus.Hide(); + } + #endregion #region CurveEditor diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/UnityEditorExtension.cs b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/UnityEditorExtension.cs index a24c73c2..773a3b4d 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/UnityEditorExtension.cs +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/UnityEditorExtension/UnityEditorExtension.cs @@ -2,6 +2,7 @@ using UnityEditor; using UnityEngine; +using UnityEngine.Rendering; using Object = UnityEngine.Object; namespace LWGUI @@ -53,5 +54,53 @@ namespace LWGUI #endregion + #region MaterialProperty + + public static ShaderPropertyType GetPropertyType(this MaterialProperty prop) +#if UNITY_6000_1_OR_NEWER + => prop.propertyType; +#else + => (ShaderPropertyType)prop.type; +#endif + + public static ShaderPropertyFlags GetPropertyFlags(this MaterialProperty prop) +#if UNITY_6000_1_OR_NEWER + => prop.propertyFlags; +#else + => (ShaderPropertyFlags)prop.flags; +#endif + + public static float GetNumericValue(this MaterialProperty prop) + { + switch (prop.GetPropertyType()) + { + case ShaderPropertyType.Float or ShaderPropertyType.Range: + return prop.floatValue; + case ShaderPropertyType.Int: + return prop.intValue; + default: + Debug.LogError($"LWGUI: Material Property { prop.name } is NOT numeric type."); + return 0; + } + } + + public static void SetNumericValue(this MaterialProperty prop, float value) + { + switch (prop.GetPropertyType()) + { + case ShaderPropertyType.Float or ShaderPropertyType.Range: + prop.floatValue = value; + break; + case ShaderPropertyType.Int: + prop.intValue = (int)value; + break; + default: + Debug.LogError($"LWGUI: Material Property { prop.name } is NOT numeric type."); + break; + } + } + + #endregion + } } \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/package.json b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/package.json index 9677d04c..43bde6fb 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/package.json +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/LWGUI-main/package.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c80b6ba30ddfaaa2e8722330f25dcd24f968d01ed72740d48fc75448ced0b13c +oid sha256:a6c26dc3b765f9b6c123338d8fc324d961522bb185dd7b7624ebf6c12bd1d066 size 568 diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_MatCapAdditivePreset_LWGUI_ShaderPropertyPreset.asset b/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_MatCapAdditivePreset_LWGUI_ShaderPropertyPreset.asset index 4e4cbf76..11e599dd 100644 --- a/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_MatCapAdditivePreset_LWGUI_ShaderPropertyPreset.asset +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_MatCapAdditivePreset_LWGUI_ShaderPropertyPreset.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65d038ff6a83ffe02a20f0e2a77e5d60c53f566bd6aeb2a0faaff24a84fdfb12 -size 10470 +oid sha256:0c7d327cdf5f763edcabdd2389cf4ba89f8cf935394a287148687701ce529a62 +size 11382 diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_PerMaterialDissolvePatternMap_LWGUI_ShaderPropertyPreset.asset b/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_PerMaterialDissolvePatternMap_LWGUI_ShaderPropertyPreset.asset new file mode 100644 index 00000000..b2fc5abc --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_PerMaterialDissolvePatternMap_LWGUI_ShaderPropertyPreset.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e68e8d17348b2ed709308448ec6a8c6947a09d03b11676367e48a860d8ca315d +size 1079 diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_PerMaterialDissolvePatternMap_LWGUI_ShaderPropertyPreset.asset.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_PerMaterialDissolvePatternMap_LWGUI_ShaderPropertyPreset.asset.meta new file mode 100644 index 00000000..aacb8706 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_PerMaterialDissolvePatternMap_LWGUI_ShaderPropertyPreset.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 37a0cc8e1632d554ab8f6d8c0ceac2df +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_PerMaterialDissolveThresholdMap_LWGUI_ShaderPropertyPreset.asset b/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_PerMaterialDissolveThresholdMap_LWGUI_ShaderPropertyPreset.asset new file mode 100644 index 00000000..fa1e6832 --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_PerMaterialDissolveThresholdMap_LWGUI_ShaderPropertyPreset.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d44679b0f758fcdb2444c384a400ab355657aee5fbfba6ee9112ab0c24176794 +size 3404 diff --git a/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_PerMaterialDissolveThresholdMap_LWGUI_ShaderPropertyPreset.asset.meta b/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_PerMaterialDissolveThresholdMap_LWGUI_ShaderPropertyPreset.asset.meta new file mode 100644 index 00000000..80b0a53e --- /dev/null +++ b/Assets/External/NiloToonURP/Editor/ShaderGUI/NiloToon LWGUI presets/NiloToonCharacter_PerMaterialDissolveThresholdMap_LWGUI_ShaderPropertyPreset.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3f8ef813612f54e4ba76c8c2545bb0ac +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/NiloToonURP user document.pdf b/Assets/External/NiloToonURP/NiloToonURP user document.pdf index a0b5c4f9..85f25869 100644 --- a/Assets/External/NiloToonURP/NiloToonURP user document.pdf +++ b/Assets/External/NiloToonURP/NiloToonURP user document.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:495b3aa0e02b12fc24457b01c6f99f9492dddffe569fd46ae33f9800fd6d7fbb -size 46510058 +oid sha256:ef319279268d79df4a06175afd036cc4c15f1bf4d04026fed6f97a3bca76efd5 +size 48283640 diff --git a/Assets/External/NiloToonURP/Runtime/NiloToonPerCharacterRenderController.cs b/Assets/External/NiloToonURP/Runtime/NiloToonPerCharacterRenderController.cs index 1bfa783f..599ffd88 100644 --- a/Assets/External/NiloToonURP/Runtime/NiloToonPerCharacterRenderController.cs +++ b/Assets/External/NiloToonURP/Runtime/NiloToonPerCharacterRenderController.cs @@ -694,8 +694,19 @@ namespace NiloToon.NiloToonURP [RangeOverrideDisplayName(" NormalScaleFix", 0, 16)] public float ditherNormalScaleFix = 1; //------------------------------------------------------------------------- - [Foldout("Dissolve (PlayMode)")] - + // WIP + /* + [Foldout("Dissolve (PlayMode)")] + + [Tooltip( + "Enable to force NiloToon material always enable dissolve keywords in playmode.\n\n" + + "Requires (PlayMode)\n\n" + + "Name: forceEnableDissolve\n" + + "Default: false")] + [OverrideDisplayName("Force enable?")] + public bool forceEnableDissolve = false; + */ + [Tooltip( "Drag this slider to control the dissolve threshold of this character.\n" + "Keep it at 0 means disable this effect, which will improve performance a lot, since we can turn it off completely in shader.\n\n" + @@ -2048,6 +2059,9 @@ namespace NiloToon.NiloToonURP } bool GetShouldEnableDissolve() { + // WIP + // return (dissolveAmount > 0.01f) || forceEnableDissolve; + return dissolveAmount > 0.01f; } diff --git a/Assets/External/NiloToonURP/Runtime/RendererFeatures/NiloToonAllInOneRendererFeature.cs b/Assets/External/NiloToonURP/Runtime/RendererFeatures/NiloToonAllInOneRendererFeature.cs index d98f297e..2599c04a 100644 --- a/Assets/External/NiloToonURP/Runtime/RendererFeatures/NiloToonAllInOneRendererFeature.cs +++ b/Assets/External/NiloToonURP/Runtime/RendererFeatures/NiloToonAllInOneRendererFeature.cs @@ -52,7 +52,7 @@ namespace NiloToon.NiloToonURP NiloToonSetToonParamPass SetToonParamPass; NiloToonAverageShadowTestRTPass SphereShadowTestRTPass; NiloToonCharSelfShadowMapRTPass CharSelfShadowMapRTRenderPass; - DrawSkyboxPass SkyboxRedrawBeforeOpaquePass; + NiloToonDrawSkyboxPass SkyboxRedrawBeforeOpaquePass; NiloToonToonOutlinePass ToonOutlinePass; NiloToonToonOutlinePass ToonOutlinePass_RightAfterTransparent; NiloToonScreenSpaceOutlinePass ScreenSpaceOutlinePass; @@ -92,7 +92,7 @@ namespace NiloToon.NiloToonURP if (CharSelfShadowMapRTRenderPass == null) CharSelfShadowMapRTRenderPass = new NiloToonCharSelfShadowMapRTPass(settings); if (SkyboxRedrawBeforeOpaquePass == null) - SkyboxRedrawBeforeOpaquePass = new DrawSkyboxPass(RenderPassEvent.BeforeRenderingOpaques); + SkyboxRedrawBeforeOpaquePass = new NiloToonDrawSkyboxPass(RenderPassEvent.BeforeRenderingOpaques); // RenderQueueRange.opaque = render queue(0-2500) materials if (ToonOutlinePass == null) diff --git a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonAnimePostProcessPass.cs b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonAnimePostProcessPass.cs index 89000d6a..cc310d5e 100644 --- a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonAnimePostProcessPass.cs +++ b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonAnimePostProcessPass.cs @@ -207,7 +207,7 @@ namespace NiloToon.NiloToonURP // Add a raster render pass to the render graph. The PassData type parameter determines // the type of the passData output variable. - using (var builder = renderGraph.AddUnsafePass(passName, + using (var builder = renderGraph.AddRasterRenderPass(passName, out var passData)) { // UniversalResourceData contains all the texture references used by URP, @@ -225,6 +225,9 @@ namespace NiloToon.NiloToonURP SetMaterial(animePP, topLightEffectIntensity, bottomDarkenEffectIntensity); + // Since this is a fullscreen overlay effect, use the active color texture as render target + builder.SetRenderAttachment(resourceData.activeColorTexture, 0); + // RenderGraph automatically determines that it can remove this render pass // because its results, which are stored in the temporary destination texture, // are not used by other passes. @@ -232,17 +235,39 @@ namespace NiloToon.NiloToonURP // that render graph executes the render pass. builder.AllowPassCulling(false); - builder.AllowGlobalStateModification(true); - // Set the ExecutePass method as the rendering function that render graph calls // for the render pass. // This sample uses a lambda expression to avoid memory allocations. - builder.SetRenderFunc((PassData data, UnsafeGraphContext context) => + builder.SetRenderFunc((PassData data, RasterGraphContext context) => { - CMDAction(CommandBufferHelpers.GetNativeCommandBuffer(context.cmd),topLightEffectIntensity, animePP, bottomDarkenEffectIntensity, cameraData.camera, material); + CMDAction_RG(context.cmd, topLightEffectIntensity, animePP, bottomDarkenEffectIntensity, cameraData.camera, material); }); } } + + private static void CMDAction_RG(RasterCommandBuffer cmd, float topLightEffectIntensity, NiloToonAnimePostProcessVolume animePP, + float bottomDarkenEffectIntensity, Camera camera, Material material) + { + // [how to draw a full screen quad without RT switch] + // https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@13.1/manual/renderer-features/how-to-fullscreen-blit-in-xr-spi.html + // https://gist.github.com/phi-lira/46c98fc67640cda47dcd27e9b3765b85#file-fullscreenquadpass-cs-L23 + + cmd.SetViewProjectionMatrices(Matrix4x4.identity, Matrix4x4.identity); // set V,P to identity matrix so we can draw full screen quad (mesh's vertex position used as final NDC position) + + // optimization: only draw if it is affecting result + if (topLightEffectIntensity > 0 && animePP.topLightEffectDrawHeight.value > 0) + { + // URP's RenderingUtils.fullscreenMesh is obsolete, so NiloToon write it's own NiloToonRenderingUtils.fullscreenMesh + cmd.DrawMesh(NiloToonRenderingUtils.fullscreenMesh, Matrix4x4.identity, material, 0, 0); // pass 0, top light pass + } + if (bottomDarkenEffectIntensity > 0 && animePP.bottomDarkenEffectDrawHeight.value > 0) + { + // URP's RenderingUtils.fullscreenMesh is obsolete, so NiloToon write it's own NiloToonRenderingUtils.fullscreenMesh + cmd.DrawMesh(NiloToonRenderingUtils.fullscreenMesh, Matrix4x4.identity, material, 0, 1); // pass 1, bottom darken pass + } + + cmd.SetViewProjectionMatrices(camera.worldToCameraMatrix, camera.projectionMatrix); // restore + } #endif } } \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonAverageShadowTestRTPass.cs b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonAverageShadowTestRTPass.cs index 37140416..e58e2ba6 100644 --- a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonAverageShadowTestRTPass.cs +++ b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonAverageShadowTestRTPass.cs @@ -6,7 +6,6 @@ using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; #if UNITY_6000_0_OR_NEWER using UnityEngine.Rendering.RenderGraphModule; -using UnityEngine.Rendering.RenderGraphModule.Util; #endif namespace NiloToon.NiloToonURP @@ -270,7 +269,7 @@ namespace NiloToon.NiloToonURP public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) { // copy and edit of https://docs.unity3d.com/6000.0/Documentation/Manual/urp/render-graph-write-render-pass.html - string passName = "NiloToonAverageShadowTestRTPass-SetParam(RG)"; + string passName = "NiloToonAverageShadowTestRTPass(RG)"; // Add a raster render pass to the render graph. The PassData type parameter determines // the type of the passData output variable. @@ -294,7 +293,7 @@ namespace NiloToon.NiloToonURP // simplifies your code. TextureHandle destination = UniversalRenderer.CreateRenderGraphTexture(renderGraph, renderTextureDescriptor, - "CopyTexture", true); + "_NiloToonAverageShadowTestRT", true); passData.destTex = destination; @@ -328,6 +327,8 @@ namespace NiloToon.NiloToonURP cmd.SetGlobalFloat("_GlobalAverageShadowStrength", shadowControlVolumeEffect.charAverageShadowStrength.value); // special temp fix for RG + // * Blitter.BlitTexture(context.cmd, data.copySourceTexture,new Vector4(1, 1, 0, 0), 0, false); + // * may solve this problem cmd.SetGlobalVector("_BlitScaleBias", new Vector4(1, 1, 0, 0)); material.SetVector("_BlitScaleBias", new Vector4(1, 1, 0, 0)); @@ -341,49 +342,6 @@ namespace NiloToon.NiloToonURP builder.SetGlobalTextureAfterPass(destination, Shader.PropertyToID("_NiloToonAverageShadowMapRT")); } - - - - - - - - - /* - using (var builder = renderGraph.AddUnsafePass("NiloToonAverageShadowTestRTPass-SetParam(RG)", - out var passData, profilingSampler)) - { - builder.SetRenderFunc((PassData data, UnsafeGraphContext rgContext) => - { - // Convert UnsafeCommandBuffer to a regular CommandBuffer, our SetParamStaticShared use the regular CommandBuffer - CommandBuffer unsafeCommandBuffer = CommandBufferHelpers.GetNativeCommandBuffer(rgContext.cmd); - builder.AllowPassCulling(false); - CMDSetGlobalParam(unsafeCommandBuffer); - }); - } - - using (var builder = renderGraph.AddRasterRenderPass("Create yellow texture", out var passData)) - { - TextureHandle uselessTex = renderGraph.ImportTexture(RTHandles.Alloc(Texture2D.whiteTexture)); - TextureHandle destHandle = renderGraph.CreateTexture(destDesc); - - builder.SetRenderAttachmentDepth(destHandle, 0, AccessFlags.Write); - - builder.AllowPassCulling(false); - - builder.SetRenderFunc((PassData data, RasterGraphContext context) => - { - (data, context); - }); - } - */ - - /* - RenderGraphUtils.BlitMaterialParameters para = new(uselessTex, destHandle, material, 0); - renderGraph.AddBlitPass(para, passName: "NiloToonAverageShadowTestRTPass-Blit(RG)"); - - resourceData.cameraColor = destHandle; - */ } #endif } diff --git a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonCharSelfShadowMapRTPass.cs b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonCharSelfShadowMapRTPass.cs index 661b6246..d7f2ebc5 100644 --- a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonCharSelfShadowMapRTPass.cs +++ b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonCharSelfShadowMapRTPass.cs @@ -305,6 +305,8 @@ namespace NiloToon.NiloToonURP if (shouldRender) { + Camera camera = renderingData.cameraData.camera; + // override settings if user override any of them in volume // if user didn't override, we will get the value from renderer feature bool useMainLightCastShadowDirection = getUseMainLightCastShadowDirection(v); @@ -317,8 +319,6 @@ namespace NiloToon.NiloToonURP float receiverDepthBias = settings.receiverDepthBias; float receiverNormalBias = settings.receiverNormalBias; - Camera camera = renderingData.cameraData.camera; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // find shadowCamViewMatrix // (only want to find the rotation. Position is not important since it will be canceled by project matrix) @@ -652,7 +652,7 @@ namespace NiloToon.NiloToonURP { softShadowQualityID = 0; } - + float softShadowResharpWidth = Mathf.Lerp(0.5f,0.05f,settings.resharpenStregth); cmd.SetGlobalVector("_NiloToonSelfShadowSoftShadowParam", new Vector4(softShadowQualityID,settings.useSoftShadowResharpen ? 1 : 0,softShadowResharpWidth,0)); @@ -660,7 +660,7 @@ namespace NiloToon.NiloToonURP cmd.Clear(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //set global RT + // set global RT //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #if UNITY_2022_2_OR_NEWER cmd.SetGlobalTexture(shadowMapRTH.name, shadowMapRTH); @@ -769,22 +769,36 @@ namespace NiloToon.NiloToonURP } } - //====================================================================================================== + /////////////////////////////////////////////////////////////////////////// // RG support - //====================================================================================================== + /////////////////////////////////////////////////////////////////////////// #if UNITY_6000_0_OR_NEWER - // copy and edit of https://docs.unity3d.com/6000.0/Documentation/Manual/urp/render-graph-draw-objects-in-a-pass.html private class PassData { // Create a field to store the list of objects to draw public RendererListHandle rendererListHandle; public bool shouldRender; + public Matrix4x4 _NiloToonSelfShadowWorldToClip; + public Vector4 _NiloToonSelfShadowParam; + public float _NiloToonGlobalSelfShadowCasterDepthBias; + public float _NiloToonGlobalSelfShadowCasterNormalBias; + public float _NiloToonGlobalSelfShadowReceiverDepthBias; + public float _NiloToonGlobalSelfShadowReceiverNormalBias; + public Vector3 _NiloToonSelfShadowLightDirection; + public int _NiloToonSelfShadowUseNdotLFix; + public float _NiloToonSelfShadowRange; + public float _GlobalReceiveNiloToonSelfShadowMap; + public float _NiloToonGlobalSelfShadowDepthBias; + public float _NiloToonGlobalSelfShadowNormalBias; + public Vector4 _NiloToonSelfShadowSoftShadowParam; } public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameContext) { - using (var builder = renderGraph.AddRasterRenderPass("NiloToonCharSelfShadowMapRTPass(RG)", out var passData)) + string passName = "NiloToonCharSelfShadowMapRTPass(RG)"; + + using (var builder = renderGraph.AddRasterRenderPass(passName, out var passData)) { // Get the data needed to create the list of objects to draw UniversalCameraData cameraData = frameContext.Get(); @@ -795,7 +809,7 @@ namespace NiloToon.NiloToonURP RenderQueueRange renderQueueRange = RenderQueueRange.opaque; FilteringSettings filterSettings = new FilteringSettings(renderQueueRange, ~0); - // Redraw only objects that have their LightMode tag set to toonOutlineLightModeShaderTagId + // Redraw only objects that have their LightMode tag set to "NiloToonSelfShadowCaster" ShaderTagId shadersToOverride = new ShaderTagId("NiloToonSelfShadowCaster"); // Create drawing settings @@ -833,13 +847,408 @@ namespace NiloToon.NiloToonURP // Set the render target as the color and depth textures of the active camera texture UniversalResourceData resourceData = frameContext.Get(); + builder.UseRendererList(passData.rendererListHandle); + //builder.SetRenderAttachment(resourceData.activeColorTexture, 0); builder.SetRenderAttachmentDepth(shadowMapRT, AccessFlags.Write); - + + builder.AllowPassCulling(false); builder.AllowGlobalStateModification(true); + //---------------------------- + // logic -> PassData + //---------------------------- + var v = VolumeManager.instance.stack.GetComponent(); + var charRenderingControlVolume = VolumeManager.instance.stack.GetComponent(); + + if (shouldRender) + { + // override settings if user override any of them in volume + // if user didn't override, we will get the value from renderer feature + bool useMainLightCastShadowDirection = getUseMainLightCastShadowDirection(v); + float shadowAngle = v.shadowAngle.overrideState ? v.shadowAngle.value : settings.shadowAngle; + float shadowLRAngle = + v.shadowLRAngle.overrideState ? v.shadowLRAngle.value : settings.shadowLRAngle; + float shadowRange = + Mathf.Clamp(v.shadowRange.overrideState ? v.shadowRange.value : settings.shadowRange, + SHADOW_RANGE_MIN, SHADOW_RANGE_MAX); + float depthBias = v.depthBias.overrideState ? v.depthBias.value : settings.depthBias; + float normalBias = v.normalBias.overrideState ? v.normalBias.value : settings.normalBias; + float receiverDepthBias = settings.receiverDepthBias; + float receiverNormalBias = settings.receiverNormalBias; + + Camera camera = cameraData.camera; + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // find shadowCamViewMatrix + // (only want to find the rotation. Position is not important since it will be canceled by project matrix) + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + Matrix4x4 shadowCamViewMatrix = Matrix4x4.zero; + + if (useMainLightCastShadowDirection) + { + //------------------------------------------------------------- + // try to sync with NiloToonSetToonParam as much as possible + //------------------------------------------------------------- + + // [0.fill with URP's main light first] + int mainLightIndex = lightData.mainLightIndex; + + // Note: when mainLight doesn't exist, mainLightIndex will be -1 + bool isURPMainLightExist = mainLightIndex != -1; + if (isURPMainLightExist) + { + // first follow regular URP main light's shadow casting logic (same as URP's mainlight shadow map's light direction) + VisibleLight mainVisibleLight = lightData.visibleLights[mainLightIndex]; + Light mainLight = mainVisibleLight.light; + shadowCamViewMatrix = mainLight.transform.worldToLocalMatrix; + shadowCamViewMatrix = Matrix4x4.Rotate(Quaternion.Euler(0, 180, 0)) * shadowCamViewMatrix; + + // [1.Light modifier] + // do nothing since no new direction data is provided + } + + // [2.NiloToonCharacterMainLightOverrider override (before volume override)] + { + NiloToonCharacterMainLightOverrider mainLightOverrider = + NiloToonCharacterMainLightOverrider.GetHighestPriorityOverrider( + NiloToonCharacterMainLightOverrider.OverrideTiming.BeforeVolumeOverride); + if (mainLightOverrider) + { + if (mainLightOverrider.overrideDirection) + { + shadowCamViewMatrix = mainLightOverrider.transform.worldToLocalMatrix; + shadowCamViewMatrix = Matrix4x4.Rotate(Quaternion.Euler(0, 180, 0)) * + shadowCamViewMatrix; + } + } + } + + // [3.NiloToonCharRenderingControlVolume override] + Vector3 volumeOverrideRotationVectorVS = new Vector3( + charRenderingControlVolume.overridedLightUpDownAngle.value, + charRenderingControlVolume.overridedLightLRAngle.value, 0); + // WS -> VS -> apply rotation in VS -> WS + Matrix4x4 volumeOverrideRotatedCamera_localToWorldMatrix = camera.cameraToWorldMatrix * + Matrix4x4.Rotate(Quaternion.Euler(volumeOverrideRotationVectorVS)) * + (camera.worldToCameraMatrix * camera.transform.localToWorldMatrix); + Matrix4x4 volumeOverrideRotatedShadowCamViewMatrix = + Matrix4x4.Rotate(Quaternion.Euler(0, 180, 0)) * + volumeOverrideRotatedCamera_localToWorldMatrix.inverse; // inverse is worldToLocalMatrix + + float volumeOverrideLightDirStrength = + charRenderingControlVolume.overrideLightDirectionIntensity.value; + if (shadowCamViewMatrix.ValidTRS()) + { + shadowCamViewMatrix = MixTransforms(shadowCamViewMatrix, + volumeOverrideRotatedShadowCamViewMatrix, volumeOverrideLightDirStrength); + } + + // [4.volume - desaturate, then add] + // do nothing since it is no related to direction + + // [5.NiloToonCharacterMainLightOverrider override (after volume override)] + { + NiloToonCharacterMainLightOverrider mainLightOverrider = + NiloToonCharacterMainLightOverrider.GetHighestPriorityOverrider( + NiloToonCharacterMainLightOverrider.OverrideTiming.AfterVolumeOverride); + if (mainLightOverrider) + { + if (mainLightOverrider.overrideDirection) + { + shadowCamViewMatrix = mainLightOverrider.transform.worldToLocalMatrix; + shadowCamViewMatrix = Matrix4x4.Rotate(Quaternion.Euler(0, 180, 0)) * + shadowCamViewMatrix; + } + } + } + + // [7.NiloToonCharacterMainLightOverrider override (after everything)] + { + NiloToonCharacterMainLightOverrider mainLightOverrider = + NiloToonCharacterMainLightOverrider.GetHighestPriorityOverrider( + NiloToonCharacterMainLightOverrider.OverrideTiming.AfterEverything); + if (mainLightOverrider) + { + if (mainLightOverrider.overrideDirection) + { + shadowCamViewMatrix = mainLightOverrider.transform.worldToLocalMatrix; + shadowCamViewMatrix = Matrix4x4.Rotate(Quaternion.Euler(0, 180, 0)) * + shadowCamViewMatrix; + } + } + } + } + + if (!useMainLightCastShadowDirection || (shadowCamViewMatrix == Matrix4x4.zero)) + { + // if we go here, that means: + // - user explicit only care the rotation of camera (useMainLightCastShadowDirection is false) + // or + // - no main light information exist(URP main light/NiloToonCharacterMainLightOverrider/NiloToonCharRenderingControlVolume) (shadowCamViewMatrix is zero) + // Then we will calculate shadow dir using "camera transform + rotation" + shadowCamViewMatrix = + Matrix4x4.Rotate(Quaternion.Euler(new Vector3(shadowAngle, shadowLRAngle, 0))) * + camera.worldToCameraMatrix; + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // auto close-fit to find "character only" tight bound shadow map ortho projection matrix + // (smallest orthographic box that includes all effective shadow caster characters) + // https://docs.microsoft.com/en-us/windows/win32/dxtecharts/common-techniques-to-improve-shadow-depth-maps + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + GeometryUtility.CalculateFrustumPlanes(camera, cameraPlanes); + + validCharList.Clear(); + + // [1] filter list + foreach (var targetChar in NiloToonAllInOneRendererFeature.characterList) + { + // if target is not valid, skip it + if (targetChar == null) continue; + if (!targetChar.isActiveAndEnabled) + continue; // character GameObject not enabled(not rendering) but in list + + // if character bounding sphere is completely not visible in game camera frustum, skip it + var boundRadius = targetChar.GetCharacterBoundRadius(); + var centerPosWS = targetChar.GetCharacterBoundCenter(); + // TODO: this section is not correct, which may incorrectly cull effective shadow caster that is OUTSIDE of main camera frustum + if (!GeometryUtility.TestPlanesAABB(cameraPlanes, + new Bounds(centerPosWS, Vector3.one * boundRadius))) + { + continue; + } + + // it is a valid visible char, add to list + validCharList.Add(targetChar); + } + + // [2] find closest VS depth from all visible char + float closestShadowCasterNearSideRangeVS = float.MaxValue; + float closestShadowCasterFarSideRangeVS = float.MaxValue; + foreach (var targetChar in validCharList) + { + var boundRadius = targetChar.GetCharacterBoundRadius(); + var centerPosWS = targetChar.GetCharacterBoundCenter(); + var centerPosVS = camera.worldToCameraMatrix.MultiplyPoint(centerPosWS); + + float currentCharVSNearSideDepth = -centerPosVS.z - boundRadius; + if (currentCharVSNearSideDepth < closestShadowCasterNearSideRangeVS) + { + closestShadowCasterNearSideRangeVS = currentCharVSNearSideDepth; + closestShadowCasterFarSideRangeVS = -centerPosVS.z + boundRadius; + } + } + + float finalShadowAllowedEndRangeVS = Mathf.Max(0, closestShadowCasterFarSideRangeVS) + shadowRange; + + // [3] remove "out of shadowrange" char, and find final shadow end range + finalValidCharList.Clear(); + float farestShadowCasterEndRangeVS = float.MinValue; + foreach (var targetChar in validCharList) + { + var boundRadius = targetChar.GetCharacterBoundRadius(); + var centerPosWS = targetChar.GetCharacterBoundCenter(); + var centerPosVS = camera.worldToCameraMatrix.MultiplyPoint(centerPosWS); + + float currentCharVSNearSideDepth = -centerPosVS.z - boundRadius; + if (currentCharVSNearSideDepth <= finalShadowAllowedEndRangeVS) + { + finalValidCharList.Add(targetChar); + + float currentCharVSFarSideDepth = -centerPosVS.z + boundRadius; + if (currentCharVSFarSideDepth > farestShadowCasterEndRangeVS) + { + farestShadowCasterEndRangeVS = currentCharVSFarSideDepth; + } + } + } + + // [4] if nothing to render, treat NiloToon self shadow as disabled, early exit + if (finalValidCharList.Count == 0) + { + shouldRender = false; + } + + // [5] in shadow camera's view space(not game camera), use smallest ortho box to capture all char in finalValidCharList + float minX = Mathf.Infinity; + float maxX = Mathf.NegativeInfinity; + float minY = Mathf.Infinity; + float maxY = Mathf.NegativeInfinity; + float minZ = Mathf.Infinity; + float maxZ = Mathf.NegativeInfinity; + foreach (var targetChar in finalValidCharList) + { + // prepare information of character's bounding sphere in world space(WS) and shadow camera's view space(VS) + var centerPosWS = targetChar.GetCharacterBoundCenter(); + var centerPosShadowCamVS = + (Matrix4x4.Scale(new Vector3(1, 1, -1)) * shadowCamViewMatrix).MultiplyPoint(centerPosWS); + var boundRadius = targetChar.GetCharacterBoundRadius(); + + // expand shadow camera's view space orthographic 3D box bound to include all char in finalValidCharList + minX = Mathf.Min(minX, centerPosShadowCamVS.x - boundRadius); + maxX = Mathf.Max(maxX, centerPosShadowCamVS.x + boundRadius); + minY = Mathf.Min(minY, centerPosShadowCamVS.y - boundRadius); + maxY = Mathf.Max(maxY, centerPosShadowCamVS.y + boundRadius); + minZ = Mathf.Min(minZ, centerPosShadowCamVS.z - boundRadius); + maxZ = Mathf.Max(maxZ, centerPosShadowCamVS.z + boundRadius); + } + + // force ortho frustum become a rectangle in xy plane, although it wastes more shadowmap space, it works with shadowbias much better! + // (see URP's main light's shadow bias C# code) + float width = Mathf.Abs(maxX - minX); + float height = Mathf.Abs(maxY - minY); + float diff = Mathf.Abs(width - height); + if (width > height) + { + minY -= diff / 2f; + maxY += diff / 2f; + } + else + { + minX -= diff / 2f; + maxX += diff / 2f; + } + + Matrix4x4 shadowCamProjectionMatrix = Matrix4x4.Ortho(minX, maxX, minY, maxY, minZ, maxZ); + +#if UNITY_EDITOR + bool isGameViewCamera = cameraData.cameraType == CameraType.Game && !cameraData.isPreviewCamera; + + // we only want to draw using game camera's transform data + // so we can render a stable white box in scene view + if (showShadowCameraDebugFrustum && isGameViewCamera) + { + Matrix4x4 I_V = (Matrix4x4.Scale(new Vector3(1, 1, -1)) * shadowCamViewMatrix).inverse; + Vector3 point1 = I_V.MultiplyPoint(new Vector3(minX, maxY, minZ)); + Vector3 point2 = I_V.MultiplyPoint(new Vector3(maxX, maxY, minZ)); + Vector3 point3 = I_V.MultiplyPoint(new Vector3(maxX, minY, minZ)); + Vector3 point4 = I_V.MultiplyPoint(new Vector3(minX, minY, minZ)); + Vector3 point5 = I_V.MultiplyPoint(new Vector3(minX, maxY, maxZ)); + Vector3 point6 = I_V.MultiplyPoint(new Vector3(maxX, maxY, maxZ)); + Vector3 point7 = I_V.MultiplyPoint(new Vector3(maxX, minY, maxZ)); + Vector3 point8 = I_V.MultiplyPoint(new Vector3(minX, minY, maxZ)); + + // draw shadow camera visible ortho box + Debug.DrawLine(point1, point2, Color.red); + Debug.DrawLine(point2, point3, Color.red); + Debug.DrawLine(point3, point4, Color.red); + Debug.DrawLine(point4, point1, Color.red); + + Debug.DrawLine(point5, point6, Color.white); + Debug.DrawLine(point6, point7, Color.white); + Debug.DrawLine(point7, point8, Color.white); + Debug.DrawLine(point8, point5, Color.white); + + Debug.DrawLine(point1, point5, Color.white); + Debug.DrawLine(point2, point6, Color.white); + Debug.DrawLine(point3, point7, Color.white); + Debug.DrawLine(point4, point8, Color.white); + + foreach (var character in finalValidCharList) + { + Color color = Color.yellow; + color.a = 0.05f; + DrawSphere(character.GetCharacterBoundCenter(), character.GetCharacterBoundRadius(), color); + } + } +#endif + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // (X, NiloToon doesn't do custom cull logic for RG) + // set culling for shadow camera -> do culling + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /* + camera.TryGetCullingParameters(out var cullingParameters); + + // update culling matrix + cullingParameters.cullingMatrix = shadowCamProjectionMatrix * shadowCamViewMatrix; + + // update culling planes + GeometryUtility.CalculateFrustumPlanes(cullingParameters.cullingMatrix, cameraPlanes); + for (int i = 0; i < cameraPlanes.Length; i++) + { + cullingParameters.SetCullingPlane(i, cameraPlanes[i]); + } + + CullingResults cullResults; + + bool terrainExist = false; + if (settings.terrainCrashSafeGuard) + { + terrainExist = Terrain.activeTerrains.Length != 0; + } + + + if (settings.perfectCullingForShadowCasters && !terrainExist) + { + // use the above new cullResults in DrawRenderers() below, + // so even a renderer is not visible in the perspective of main camera, + // it can still render correctly in shadow camera's perspective due to this new culling + + // (2021-07-14) unity will crash if code running this line and terrain exist in scene + // (2024-03-21) enable this will make VLB's SRP batcher mode flicker randomly, not sure why, should we do something to revert this culling line? + cullResults = context.Cull(ref cullingParameters); // original working code, but will crash if terrain exist + } + else + + { + // (2021-07-14) a special temp fix to avoid terrain crashing unity, but will make shadow culling not always correctly if shadow caster is not existing on screen + cullResults = renderingData.cullResults; + } + */ + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // Set uniform (before context.DrawRenderers) + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + Matrix4x4 GPU_P = GL.GetGPUProjectionMatrix(shadowCamProjectionMatrix, true); + + // [copied from URP16's ShadowUtils.cs -> GetShadowBias(...)] + // + float frustumSize = 2.0f / shadowCamProjectionMatrix.m00; + // depth and normal bias scale is in shadowmap texel size in world space + float texelSize = frustumSize / shadowMapSize; + + Matrix4x4 GPU_worldToClip = GPU_P * shadowCamViewMatrix; + passData._NiloToonSelfShadowWorldToClip = GPU_worldToClip; + passData._NiloToonSelfShadowParam = new Vector4(1f / shadowMapSize, 1f / shadowMapSize, + shadowMapSize, shadowMapSize); + passData._NiloToonGlobalSelfShadowCasterDepthBias = -depthBias * texelSize; + passData._NiloToonGlobalSelfShadowCasterNormalBias = -normalBias * texelSize; + passData._NiloToonGlobalSelfShadowReceiverDepthBias = receiverDepthBias * texelSize; + passData._NiloToonGlobalSelfShadowReceiverNormalBias = receiverNormalBias * texelSize; + passData._NiloToonSelfShadowLightDirection = + shadowCamViewMatrix.inverse.MultiplyVector(Vector3.forward); + passData._NiloToonSelfShadowUseNdotLFix = settings.useNdotLFix ? 1 : 0; + passData._NiloToonSelfShadowRange = + finalShadowAllowedEndRangeVS; // or farestShadowCasterEndRangeVS? + passData._GlobalReceiveNiloToonSelfShadowMap = v.charSelfShadowStrength.value; + + // Only for supporting NiloToon 0.13.8 shader (Warudo / asset bundle), not used in the latest shader + //-------------------------------------------------------------------------------- + passData._NiloToonGlobalSelfShadowDepthBias = depthBias; + passData._NiloToonGlobalSelfShadowNormalBias = normalBias; + //-------------------------------------------------------------------------------- + + float softShadowQualityID; + if (settings.useSoftShadow) + { + softShadowQualityID = (float)settings.softShadowQuality; + } + else + { + softShadowQualityID = 0; + } + + float softShadowResharpWidth = Mathf.Lerp(0.5f, 0.05f, settings.resharpenStregth); + passData._NiloToonSelfShadowSoftShadowParam = new Vector4(softShadowQualityID, + settings.useSoftShadowResharpen ? 1 : 0, softShadowResharpWidth, 0); + } + builder.SetRenderFunc((PassData data, RasterGraphContext context) => ExecutePass(data, context)); + builder.SetGlobalTextureAfterPass(shadowMapRT, Shader.PropertyToID("_NiloToonCharSelfShadowMapRT")); } } @@ -847,17 +1256,11 @@ namespace NiloToon.NiloToonURP { var cmd = context.cmd; - // temp WIP code: set the only required cmd - ; - cmd.SetKeyword(GlobalKeyword.Create(_NILOTOON_RECEIVE_SELF_SHADOW_Keyword), false); - return; - //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - // early exit if no render needed if (!data.shouldRender) { // set the only required cmd - cmd.SetKeyword(new GlobalKeyword(_NILOTOON_RECEIVE_SELF_SHADOW_Keyword), false); + cmd.SetKeyword(GlobalKeyword.Create(_NILOTOON_RECEIVE_SELF_SHADOW_Keyword), false); // no draw // (X) @@ -866,8 +1269,29 @@ namespace NiloToon.NiloToonURP } // set cmd - //... + cmd.ClearRenderTarget(true,true,Color.black); + + cmd.SetGlobalMatrix("_NiloToonSelfShadowWorldToClip", data._NiloToonSelfShadowWorldToClip); + cmd.SetGlobalVector("_NiloToonSelfShadowParam", data._NiloToonSelfShadowParam); + cmd.SetGlobalFloat("_NiloToonGlobalSelfShadowCasterDepthBias", data._NiloToonGlobalSelfShadowCasterDepthBias); + cmd.SetGlobalFloat("_NiloToonGlobalSelfShadowCasterNormalBias", data._NiloToonGlobalSelfShadowCasterNormalBias); + cmd.SetGlobalFloat("_NiloToonGlobalSelfShadowReceiverDepthBias", data._NiloToonGlobalSelfShadowReceiverDepthBias); + cmd.SetGlobalFloat("_NiloToonGlobalSelfShadowReceiverNormalBias", data._NiloToonGlobalSelfShadowReceiverNormalBias); + cmd.SetGlobalVector("_NiloToonSelfShadowLightDirection", data._NiloToonSelfShadowLightDirection); + cmd.SetGlobalFloat("_NiloToonSelfShadowUseNdotLFix", data._NiloToonSelfShadowUseNdotLFix); + cmd.SetGlobalFloat("_NiloToonSelfShadowRange", data._NiloToonSelfShadowRange); // or farestShadowCasterEndRangeVS? + cmd.SetGlobalFloat("_GlobalReceiveNiloToonSelfShadowMap", data._GlobalReceiveNiloToonSelfShadowMap); + + // Only for supporting NiloToon 0.13.8 shader (Warudo / asset bundle), not used in the latest shader + //-------------------------------------------------------------------------------- + cmd.SetGlobalFloat("_NiloToonGlobalSelfShadowDepthBias", data._NiloToonGlobalSelfShadowDepthBias); + cmd.SetGlobalFloat("_NiloToonGlobalSelfShadowNormalBias", data._NiloToonGlobalSelfShadowNormalBias); + //-------------------------------------------------------------------------------- + cmd.SetGlobalVector("_NiloToonSelfShadowSoftShadowParam", data._NiloToonSelfShadowSoftShadowParam); + + cmd.SetKeyword(GlobalKeyword.Create(_NILOTOON_RECEIVE_SELF_SHADOW_Keyword), true); + // Draw the objects in the list cmd.DrawRendererList(data.rendererListHandle); } diff --git a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonDrawSkyboxPass.cs b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonDrawSkyboxPass.cs new file mode 100644 index 00000000..9978c038 --- /dev/null +++ b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonDrawSkyboxPass.cs @@ -0,0 +1,117 @@ +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +#if UNITY_6000_0_OR_NEWER +using UnityEngine.Rendering.RenderGraphModule; +#endif + +namespace NiloToon.NiloToonURP +{ + /// + /// Draw the skybox into the given color buffer using the given depth buffer for depth testing. + /// + /// This pass renders the standard Unity skybox. + /// + public class NiloToonDrawSkyboxPass : ScriptableRenderPass + { + public NiloToonDrawSkyboxPass(RenderPassEvent evt) + { + base.profilingSampler = new ProfilingSampler(nameof(NiloToonDrawSkyboxPass)); + renderPassEvent = evt; + } + + /// + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) + { + CameraData cameraData = renderingData.cameraData; + Camera camera = cameraData.camera; + +#if ENABLE_VR && ENABLE_XR_MODULE + // XRTODO: Remove this code once Skybox pass is moved to SRP land. + if (cameraData.xr.enabled) + { + // Setup Legacy XR buffer states + if (cameraData.xr.singlePassEnabled) + { + // Setup legacy skybox stereo buffer + camera.SetStereoProjectionMatrix(Camera.StereoscopicEye.Left, cameraData.GetProjectionMatrix(0)); + camera.SetStereoViewMatrix(Camera.StereoscopicEye.Left, cameraData.GetViewMatrix(0)); + camera.SetStereoProjectionMatrix(Camera.StereoscopicEye.Right, cameraData.GetProjectionMatrix(1)); + camera.SetStereoViewMatrix(Camera.StereoscopicEye.Right, cameraData.GetViewMatrix(1)); + + CommandBuffer cmd = CommandBufferPool.Get(); + + // Use legacy stereo instancing mode to have legacy XR code path configured + cmd.SetSinglePassStereo(SystemInfo.supportsMultiview ? SinglePassStereoMode.Multiview : SinglePassStereoMode.Instancing); + context.ExecuteCommandBuffer(cmd); + cmd.Clear(); + + // Calling into built-in skybox pass - use old API for compatibility +#if UNITY_2022_1_OR_NEWER + var skyboxRendererList = context.CreateSkyboxRendererList(camera); + cmd.DrawRendererList(skyboxRendererList); +#else + context.DrawSkybox(camera); +#endif + + // Disable Legacy XR path + cmd.SetSinglePassStereo(SinglePassStereoMode.None); + context.ExecuteCommandBuffer(cmd); + // We do not need to submit here due to special handling of stereo matrices in core. + // context.Submit(); + CommandBufferPool.Release(cmd); + + camera.ResetStereoProjectionMatrices(); + camera.ResetStereoViewMatrices(); + } + else + { + camera.projectionMatrix = cameraData.GetProjectionMatrix(0); + camera.worldToCameraMatrix = cameraData.GetViewMatrix(0); + +#if UNITY_2022_1_OR_NEWER + var skyboxRendererList = context.CreateSkyboxRendererList(camera); + CommandBuffer cmd = CommandBufferPool.Get(); + cmd.DrawRendererList(skyboxRendererList); + context.ExecuteCommandBuffer(cmd); + CommandBufferPool.Release(cmd); +#else + context.DrawSkybox(camera); +#endif + + // XRTODO: remove this call because it creates issues with nested profiling scopes + // See examples in UniversalRenderPipeline.RenderSingleCamera() and in ScriptableRenderer.Execute() + context.Submit(); // Submit and execute the skybox pass before resetting the matrices + + camera.ResetProjectionMatrix(); + camera.ResetWorldToCameraMatrix(); + } + } + else +#endif + { +#if UNITY_2022_1_OR_NEWER + var skyboxRendererList = context.CreateSkyboxRendererList(camera); + CommandBuffer cmd = CommandBufferPool.Get(); + cmd.DrawRendererList(skyboxRendererList); + context.ExecuteCommandBuffer(cmd); + CommandBufferPool.Release(cmd); +#else + context.DrawSkybox(camera); +#endif + } + } + +#if UNITY_6000_0_OR_NEWER + /// + /// Empty RG implementation - does nothing but satisfies RG requirements + /// + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameContext) + { + // Empty implementation - RG pass does nothing + // This satisfies the RG system but doesn't actually render anything + } +#endif + } +} \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonDrawSkyboxPass.cs.meta b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonDrawSkyboxPass.cs.meta new file mode 100644 index 00000000..e8a2316a --- /dev/null +++ b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonDrawSkyboxPass.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 25854bb345e8f824ab85b2ae1f5bb10f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonMotionBlurPass.cs b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonMotionBlurPass.cs index d92a10ee..7bcbee29 100644 --- a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonMotionBlurPass.cs +++ b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonMotionBlurPass.cs @@ -16,6 +16,7 @@ using UnityEngine.Rendering.Universal; #if UNITY_6000_0_OR_NEWER using UnityEngine.Rendering.RenderGraphModule; +using UnityEngine.Experimental.Rendering; #endif namespace NiloToon.NiloToonURP @@ -214,7 +215,127 @@ namespace NiloToon.NiloToonURP var motionBlurPP = VolumeManager.instance.stack.GetComponent(); return motionBlurPP.IsActive() && settings.allowRender; } - + + ///////////////////////////////////////////////////////////////////// + // SHARED KINO MOTION BLUR ALGORITHM CORE + ///////////////////////////////////////////////////////////////////// + private void ExecuteKinoMotionBlurCore(CommandBuffer cmd, RenderTextureDescriptor descriptor, + float intensity, float rt_TargetLength) + { + const float kMaxBlurRadius = 5f; // max blur is 5% of screen + Material material = blurMaterial; + + // Texture format for storing 2D vectors. + RenderTextureFormat m_VectorRTFormat = RenderTextureFormat.RGHalf; + // Texture format for storing packed velocity/depth. + RenderTextureFormat m_PackedRTFormat = RenderTextureFormat.ARGB2101010; + + float shutterAngle = 180f * intensity; + int sampleCount = 32; + + // Calculate the maximum blur radius in pixels. + int maxBlurPixels = (int)(kMaxBlurRadius * rt_TargetLength / 100); + + // Calculate the TileMax size. + // It should be a multiple of 8 and larger than maxBlur. + int tileSize = ((maxBlurPixels - 1) / 8 + 1) * 8; + + // Pass 1 - Velocity/depth packing + var velocityScale = shutterAngle / 360f; + cmd.SetGlobalFloat(Uniforms._VelocityScale, velocityScale); + cmd.SetGlobalFloat(Uniforms._MaxBlurRadius, maxBlurPixels); + cmd.SetGlobalFloat(Uniforms._RcpMaxBlurRadius, 1f / maxBlurPixels); + + int vbuffer = Uniforms._VelocityTex; + cmd.GetTemporaryRT(vbuffer, descriptor.width, descriptor.height, 0, FilterMode.Point, m_PackedRTFormat, RenderTextureReadWrite.Linear); + cmd.Blit((Texture)null, vbuffer, material, (int)Pass.VelocitySetup); + + // Pass 2 - First TileMax filter (1/2 downsize) + int tile2 = Uniforms._Tile2RT; + cmd.GetTemporaryRT(tile2, descriptor.width / 2, descriptor.height / 2, 0, FilterMode.Point, m_VectorRTFormat, RenderTextureReadWrite.Linear); + cmd.SetGlobalTexture(Uniforms._MainTex, vbuffer); + cmd.Blit(vbuffer, tile2, material, (int)Pass.TileMax1); + + // Pass 3 - Second TileMax filter (1/2 downsize) + int tile4 = Uniforms._Tile4RT; + cmd.GetTemporaryRT(tile4, descriptor.width / 4, descriptor.height / 4, 0, FilterMode.Point, m_VectorRTFormat, RenderTextureReadWrite.Linear); + cmd.SetGlobalTexture(Uniforms._MainTex, tile2); + cmd.Blit(tile2, tile4, material, (int)Pass.TileMax2); + cmd.ReleaseTemporaryRT(tile2); + + // Pass 4 - Third TileMax filter (1/2 downsize) + int tile8 = Uniforms._Tile8RT; + cmd.GetTemporaryRT(tile8, descriptor.width / 8, descriptor.height / 8, 0, FilterMode.Point, m_VectorRTFormat, RenderTextureReadWrite.Linear); + cmd.SetGlobalTexture(Uniforms._MainTex, tile4); + cmd.Blit(tile4, tile8, material, (int)Pass.TileMax2); + cmd.ReleaseTemporaryRT(tile4); + + // Pass 5 - Fourth TileMax filter (reduce to tileSize) + var tileMaxOffs = Vector2.one * (tileSize / 8f - 1f) * -0.5f; + cmd.SetGlobalVector(Uniforms._TileMaxOffs, tileMaxOffs); + cmd.SetGlobalFloat(Uniforms._TileMaxLoop, (int)(tileSize / 8f)); + + int tile = Uniforms._TileVRT; + cmd.GetTemporaryRT(tile, descriptor.width / tileSize, descriptor.height / tileSize, 0, FilterMode.Point, m_VectorRTFormat, RenderTextureReadWrite.Linear); + cmd.SetGlobalTexture(Uniforms._MainTex, tile8); + cmd.Blit(tile8, tile, material, (int)Pass.TileMaxV); + cmd.ReleaseTemporaryRT(tile8); + + // Pass 6 - NeighborMax filter + int neighborMax = Uniforms._NeighborMaxTex; + int neighborMaxWidth = descriptor.width / tileSize; + int neighborMaxHeight = descriptor.height / tileSize; + cmd.GetTemporaryRT(neighborMax, neighborMaxWidth, neighborMaxHeight, 0, FilterMode.Point, m_VectorRTFormat, RenderTextureReadWrite.Linear); + cmd.SetGlobalTexture(Uniforms._MainTex, tile); + cmd.Blit(tile, neighborMax, material, (int)Pass.NeighborMax); + cmd.ReleaseTemporaryRT(tile); + + // Set up for reconstruction (loop count) + cmd.SetGlobalFloat(Uniforms._LoopCount, Mathf.Clamp(sampleCount / 2, 1, 64)); + + cmd.ReleaseTemporaryRT(vbuffer); + cmd.ReleaseTemporaryRT(neighborMax); + } + + // Non-RG version with RTHandle parameters + private void ExecuteKinoMotionBlur(CommandBuffer cmd, RenderTextureDescriptor descriptor, + float intensity, float rt_TargetLength, RTHandle sourceRT, RTHandle destinationRT, RTHandle copyBuffer) + { + // Execute core algorithm + ExecuteKinoMotionBlurCore(cmd, descriptor, intensity, rt_TargetLength); + + // Copy the color buffer to use for sampling during the blur pass + cmd.Blit(sourceRT, copyBuffer); + + // Pass 7 - Reconstruction pass + cmd.SetGlobalTexture(Uniforms._MainTex, copyBuffer); + cmd.Blit(copyBuffer, destinationRT, blurMaterial, (int)Pass.Reconstruction); + } + +#if UNITY_6000_0_OR_NEWER + // RG version with TextureHandle parameters + private void ExecuteKinoMotionBlurRG(CommandBuffer cmd, RenderTextureDescriptor descriptor, + float intensity, float rt_TargetLength, TextureHandle sourceTexture, TextureHandle destinationTexture) + { + // Execute core algorithm + ExecuteKinoMotionBlurCore(cmd, descriptor, intensity, rt_TargetLength); + + // Copy the color buffer to use for sampling during the blur pass + int copyRT = Shader.PropertyToID("_CopyTexture_RG"); + cmd.GetTemporaryRT(copyRT, descriptor.width, descriptor.height, 0, FilterMode.Bilinear, descriptor.colorFormat); + cmd.Blit(sourceTexture, copyRT); + + // Pass 7 - Reconstruction pass + cmd.SetGlobalTexture(Uniforms._MainTex, copyRT); + cmd.Blit(copyRT, destinationTexture, blurMaterial, (int)Pass.Reconstruction); + + cmd.ReleaseTemporaryRT(copyRT); + } +#endif + + ///////////////////////////////////////////////////////////////////// + // NON-RG EXECUTE METHOD - Uses shared algorithm + ///////////////////////////////////////////////////////////////////// public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { if(!ShouldRender(renderingData.cameraData.camera)) return; @@ -230,9 +351,7 @@ namespace NiloToon.NiloToonURP using (new ProfilingScope(cmd, new ProfilingSampler(profilerTag))) { var descriptor = renderingData.cameraData.cameraTargetDescriptor; - float rt_TargetLength = GetRTTargetLength(descriptor); - float intensity = GetIntensity(); Camera currentCam = renderingData.cameraData.camera; @@ -254,98 +373,13 @@ namespace NiloToon.NiloToonURP */ lastFrameIsSafeToApplyMotionBlur = thisFrameIsSafeToApplyMotionBlur; - if (intensity > 0 && thisFrameIsSafeToApplyMotionBlur) { - // [kino motion blur execute] - - // setup var (this section added by Nilo) - //----------------------------------------- - CommandBuffer cb = cmd; - const float kMaxBlurRadius = 5f; // max blur is 5% of screen - Material material = blurMaterial; + RTHandle destination = renderingData.cameraData.renderer.cameraColorTargetHandle; - // Texture format for storing 2D vectors. - RenderTextureFormat m_VectorRTFormat = RenderTextureFormat.RGHalf; - - // Texture format for storing packed velocity/depth. - RenderTextureFormat m_PackedRTFormat = RenderTextureFormat.ARGB2101010; - - float shutterAngle = 180f * intensity; - int sampleCount = 32; - - RTHandle destination =renderingData.cameraData.renderer.cameraColorTargetHandle; - //----------------------------------------- - - // Calculate the maximum blur radius in pixels. - int maxBlurPixels = (int)(kMaxBlurRadius * rt_TargetLength / 100); - - // Calculate the TileMax size. - // It should be a multiple of 8 and larger than maxBlur. - int tileSize = ((maxBlurPixels - 1) / 8 + 1) * 8; - - // Pass 1 - Velocity/depth packing - var velocityScale = shutterAngle / 360f; - cb.SetGlobalFloat(Uniforms._VelocityScale, velocityScale); - cb.SetGlobalFloat(Uniforms._MaxBlurRadius, maxBlurPixels); - cb.SetGlobalFloat(Uniforms._RcpMaxBlurRadius, 1f / maxBlurPixels); - - int vbuffer = Uniforms._VelocityTex; - cb.GetTemporaryRT(vbuffer, descriptor.width, descriptor.height, 0, FilterMode.Point, m_PackedRTFormat, RenderTextureReadWrite.Linear); - cb.Blit((Texture)null, vbuffer, material, (int)Pass.VelocitySetup); - - // Pass 2 - First TileMax filter (1/2 downsize) - int tile2 = Uniforms._Tile2RT; - cb.GetTemporaryRT(tile2, descriptor.width / 2, descriptor.height / 2, 0, FilterMode.Point, m_VectorRTFormat, RenderTextureReadWrite.Linear); - cb.SetGlobalTexture(Uniforms._MainTex, vbuffer); - cb.Blit(vbuffer, tile2, material, (int)Pass.TileMax1); - - // Pass 3 - Second TileMax filter (1/2 downsize) - int tile4 = Uniforms._Tile4RT; - cb.GetTemporaryRT(tile4, descriptor.width / 4, descriptor.height / 4, 0, FilterMode.Point, m_VectorRTFormat, RenderTextureReadWrite.Linear); - cb.SetGlobalTexture(Uniforms._MainTex, tile2); - cb.Blit(tile2, tile4, material, (int)Pass.TileMax2); - cb.ReleaseTemporaryRT(tile2); - - // Pass 4 - Third TileMax filter (1/2 downsize) - int tile8 = Uniforms._Tile8RT; - cb.GetTemporaryRT(tile8, descriptor.width / 8, descriptor.height / 8, 0, FilterMode.Point, m_VectorRTFormat, RenderTextureReadWrite.Linear); - cb.SetGlobalTexture(Uniforms._MainTex, tile4); - cb.Blit(tile4, tile8, material, (int)Pass.TileMax2); - cb.ReleaseTemporaryRT(tile4); - - // Pass 5 - Fourth TileMax filter (reduce to tileSize) - var tileMaxOffs = Vector2.one * (tileSize / 8f - 1f) * -0.5f; - cb.SetGlobalVector(Uniforms._TileMaxOffs, tileMaxOffs); - cb.SetGlobalFloat(Uniforms._TileMaxLoop, (int)(tileSize / 8f)); - - int tile = Uniforms._TileVRT; - cb.GetTemporaryRT(tile, descriptor.width / tileSize, descriptor.height / tileSize, 0, FilterMode.Point, m_VectorRTFormat, RenderTextureReadWrite.Linear); - cb.SetGlobalTexture(Uniforms._MainTex, tile8); - cb.Blit(tile8, tile, material, (int)Pass.TileMaxV); - cb.ReleaseTemporaryRT(tile8); - - // Pass 6 - NeighborMax filter - int neighborMax = Uniforms._NeighborMaxTex; - int neighborMaxWidth = descriptor.width / tileSize; - int neighborMaxHeight = descriptor.height / tileSize; - cb.GetTemporaryRT(neighborMax, neighborMaxWidth, neighborMaxHeight, 0, FilterMode.Point, m_VectorRTFormat, RenderTextureReadWrite.Linear); - cb.SetGlobalTexture(Uniforms._MainTex, tile); - cb.Blit(tile, neighborMax, material, (int)Pass.NeighborMax); - cb.ReleaseTemporaryRT(tile); - - // Copy the color buffer to use for sampling during the blur pass - Blitter.BlitCameraTexture(cmd, source, copyRT); - - // Pass 7 - Reconstruction pass - cb.SetGlobalFloat(Uniforms._LoopCount, Mathf.Clamp(sampleCount / 2, 1, 64)); - cb.SetGlobalTexture(Uniforms._MainTex, copyRT); - - cb.Blit(copyRT, destination, material, (int)Pass.Reconstruction); - - cb.ReleaseTemporaryRT(vbuffer); - cb.ReleaseTemporaryRT(neighborMax); + // Call shared algorithm + ExecuteKinoMotionBlur(cmd, descriptor, intensity, rt_TargetLength, source, destination, copyRT); } } @@ -370,10 +404,70 @@ namespace NiloToon.NiloToonURP ///////////////////////////////////////////////////////////////////// // RG support ///////////////////////////////////////////////////////////////////// -#if UNITY_6000_0_OR_NEWER +#if UNITY_6000_0_OR_NEWER + // Render Graph data structures + private class MotionBlurPassData + { + public Material material; + public TextureHandle source; + public TextureHandle destination; + public float intensity; + public float rt_TargetLength; + public RenderTextureDescriptor descriptor; + } + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameContext) { - // TODO + var cameraData = frameContext.Get(); + var resourceData = frameContext.Get(); + + if (!ShouldRender(cameraData.camera)) + return; + + float intensity = GetIntensity(); + var descriptor = cameraData.cameraTargetDescriptor; + float rt_TargetLength = GetRTTargetLength(descriptor); + + Camera currentCam = cameraData.camera; + bool thisFrameIsSafeToApplyMotionBlur = IsCameraSafeToApplyMotionBlur( + lastValidCameraViewProjMatrix, + currentCam.projectionMatrix * currentCam.worldToCameraMatrix, + lastValidCameraPosWS, + currentCam.transform.position); + + lastValidCameraPosWS = currentCam.transform.position; + lastValidCameraViewProjMatrix = currentCam.projectionMatrix * currentCam.worldToCameraMatrix; + lastFrameIsSafeToApplyMotionBlur = thisFrameIsSafeToApplyMotionBlur; + + if (intensity <= 0 || !thisFrameIsSafeToApplyMotionBlur) + return; + + using (var builder = renderGraph.AddUnsafePass(profilerTag, out var passData)) + { + passData.material = blurMaterial; + passData.source = resourceData.activeColorTexture; + passData.destination = resourceData.activeColorTexture; + passData.intensity = intensity; + passData.rt_TargetLength = rt_TargetLength; + passData.descriptor = descriptor; + + builder.UseTexture(resourceData.activeColorTexture, AccessFlags.Read); + builder.UseTexture(resourceData.activeColorTexture, AccessFlags.Write); + + builder.SetRenderFunc((MotionBlurPassData data, UnsafeGraphContext context) => + { + ExecuteMotionBlurRenderGraph(data, context); + }); + } + } + + private void ExecuteMotionBlurRenderGraph(MotionBlurPassData data, UnsafeGraphContext context) + { + var cmd = CommandBufferHelpers.GetNativeCommandBuffer(context.cmd); + + // Call shared algorithm - RG version + ExecuteKinoMotionBlurRG(cmd, data.descriptor, data.intensity, data.rt_TargetLength, + data.source, data.destination); } #endif @@ -384,4 +478,4 @@ namespace NiloToon.NiloToonURP } #endif } -} +} \ No newline at end of file diff --git a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonPrepassBufferRTPass.cs b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonPrepassBufferRTPass.cs index de34ee23..13137410 100644 --- a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonPrepassBufferRTPass.cs +++ b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonPrepassBufferRTPass.cs @@ -16,6 +16,7 @@ using System; using UnityEngine; using UnityEngine.Experimental.Rendering; using UnityEngine.Rendering; +using UnityEngine.Rendering.RendererUtils; using UnityEngine.Rendering.Universal; #if UNITY_6000_0_OR_NEWER @@ -181,9 +182,69 @@ namespace NiloToon.NiloToonURP // RG support ///////////////////////////////////////////////////////////////////// #if UNITY_6000_0_OR_NEWER + private class PrepassBufferPassData + { + public UniversalCameraData cameraData; + public TextureHandle colorTarget; + public TextureHandle depthTarget; + public RendererListHandle rendererList; + } + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameContext) { - // TODO + var cameraData = frameContext.Get(); + var resourceData = frameContext.Get(); + var renderingData = frameContext.Get(); + + // Skip Preview cameras - same check as Execute + if (cameraData.camera.cameraType == CameraType.Preview) + return; + + using (var builder = renderGraph.AddRasterRenderPass("NiloToon Prepass Buffer", out var passData, base.profilingSampler)) + { + passData.cameraData = cameraData; + + // Create render textures for RG - EXACT same descriptors as OnCameraSetup + var colorDesc = cameraData.cameraTargetDescriptor; + colorDesc.graphicsFormat = GraphicsFormat.R8G8B8A8_UNorm; // Match: we don't need HDR color, since this RT's color is just a mask + colorDesc.depthBufferBits = 0; + colorDesc.msaaSamples = 1; + + var depthDesc = cameraData.cameraTargetDescriptor; + depthDesc.graphicsFormat = GraphicsFormat.None; // Match: Depth only rendering + depthDesc.depthStencilFormat = cameraData.cameraTargetDescriptor.depthStencilFormat; + depthDesc.msaaSamples = 1; + + passData.colorTarget = UniversalRenderer.CreateRenderGraphTexture(renderGraph, colorDesc, "_NiloToonPrepassBufferColor", false); + passData.depthTarget = UniversalRenderer.CreateRenderGraphTexture(renderGraph, depthDesc, "_NiloToonPrepassBufferDepth", false); + + // Create renderer list - EXACT same settings as Execute + var renderListDesc = new RendererListDesc(shaderTagId, renderingData.cullResults, cameraData.camera) + { + sortingCriteria = cameraData.defaultOpaqueSortFlags, // Match: var sortFlags = renderingData.cameraData.defaultOpaqueSortFlags; + renderQueueRange = RenderQueueRange.opaque, // Match: var filterSetting = new FilteringSettings(RenderQueueRange.opaque); + }; + passData.rendererList = renderGraph.CreateRendererList(renderListDesc); + + // Set up render targets - Match ConfigureTarget behavior + builder.SetRenderAttachment(passData.colorTarget, 0, AccessFlags.Write); + builder.SetRenderAttachmentDepth(passData.depthTarget, AccessFlags.Write); + + builder.UseRendererList(passData.rendererList); + + // Set global textures - Match cmd.SetGlobalTexture behavior + builder.SetGlobalTextureAfterPass(passData.colorTarget, Shader.PropertyToID("_NiloToonPrepassBufferTex")); + builder.SetGlobalTextureAfterPass(passData.depthTarget, Shader.PropertyToID("_NiloToonPrepassBufferDepthTex")); + + builder.SetRenderFunc((PrepassBufferPassData data, RasterGraphContext context) => + { + // Match ConfigureClear(ClearFlag.All, Color.black) behavior + context.cmd.ClearRenderTarget(RTClearFlags.All, Color.black, 1.0f, 0); + + // Match context.DrawRenderers behavior + context.cmd.DrawRendererList(data.rendererList); + }); + } } #endif } diff --git a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonSetToonParamPass.cs b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonSetToonParamPass.cs index 81eab6a2..3783dce7 100644 --- a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonSetToonParamPass.cs +++ b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonSetToonParamPass.cs @@ -251,6 +251,8 @@ namespace NiloToon.NiloToonURP static readonly int _NiloToonGlobalAllowUnityCameraDepthTextureWriteOutlineExtrudedPosition_SID = Shader.PropertyToID("_NiloToonGlobalAllowUnityCameraDepthTextureWriteOutlineExtrudedPosition"); + static readonly int _NiloToonGlobalAllowUnityCameraDepthTextureWriteFaceZOffset_SID = Shader.PropertyToID("_NiloToonGlobalAllowUnityCameraDepthTextureWriteFaceZOffset"); + static readonly int _NiloToonGlobalPerCharFaceForwardDirWSArray_SID = Shader.PropertyToID("_NiloToonGlobalPerCharFaceForwardDirWSArray"); static readonly int _NiloToonGlobalPerCharFaceUpwardDirWSArray_SID = Shader.PropertyToID("_NiloToonGlobalPerCharFaceUpwardDirWSArray"); static readonly int _NiloToonGlobalPerCharBoundCenterPosWSArray_SID = Shader.PropertyToID("_NiloToonGlobalPerCharBoundCenterPosWSArray"); @@ -417,7 +419,8 @@ namespace NiloToon.NiloToonURP passData.Setting = Setting; passData.visibleLights = renderingData.lightData.visibleLights; passData.renderer = renderingData.cameraData.renderer; - passData.needCorrectDepthTextureDepthWrite = GetNeedCorrectDepthTextureDepthWrite(renderingData.cameraData.renderer); + passData.forwardDepthPrimingEnabled = GetForwardDepthPriming(renderingData.cameraData.renderer); + passData.isDeferredRendering = isDeferredRendering; FillInPassDataArray(passData); @@ -441,7 +444,8 @@ namespace NiloToon.NiloToonURP public Settings Setting; public NativeArray visibleLights; public ScriptableRenderer renderer; - public bool needCorrectDepthTextureDepthWrite; + public bool forwardDepthPrimingEnabled; + public bool isDeferredRendering; public Vector4[] perCharFaceForwardDirWSArray; public Vector4[] perCharFaceUpwardDirWSArray; @@ -455,7 +459,7 @@ namespace NiloToon.NiloToonURP public Vector4[] perUnityVisibleLightNiloToonDataArray2; } - public bool GetNeedCorrectDepthTextureDepthWrite(ScriptableRenderer inputRenderer) + public bool GetForwardDepthPriming(ScriptableRenderer inputRenderer) { bool isForwardDepthPrimingModeActive = false; @@ -484,14 +488,8 @@ namespace NiloToon.NiloToonURP isForwardDepthPrimingModeActive = useDepthPriming_Getter(renderer); //isForwardDepthPrimingModeActive = (bool)useDepthPriming_PropertyInfo.GetValue(renderer); } - bool needCorrectDepthTextureDepthWrite = isDeferredRendering || isForwardDepthPrimingModeActive; - - if(!isDeferredRendering && isForwardDepthPrimingModeActive) - { - Debug.LogWarning("[NiloToon]Forward/Forward+ together with DepthPriming will make face pixel's rendering rejected, you need to set (DepthPrimingMode = Disable) when using NiloToon_Character's 'IsFace?' feature."); - } - - return needCorrectDepthTextureDepthWrite; + + return isForwardDepthPrimingModeActive; } private static CommandBuffer ExecutePassShared(CommandBuffer cmd, PassData passData) @@ -722,7 +720,11 @@ namespace NiloToon.NiloToonURP // rendering path related ////////////////////////////////////////////////////////////////////////////////////////////////// - cmd.SetGlobalFloat(_NiloToonGlobalAllowUnityCameraDepthTextureWriteOutlineExtrudedPosition_SID, passData.needCorrectDepthTextureDepthWrite ? 0 : 1); + // Deferred: outline extrude = 0, face offset = 1 (only outline cancelled) + // Forward + depth priming: outline extrude = 0, face offset = 0 (both cancelled) + // Forward (no depth priming): outline extrude = 1, face offset = 1 (nothing cancelled) + cmd.SetGlobalFloat(_NiloToonGlobalAllowUnityCameraDepthTextureWriteOutlineExtrudedPosition_SID, (passData.isDeferredRendering || passData.forwardDepthPrimingEnabled) ? 0 : 1); + cmd.SetGlobalFloat(_NiloToonGlobalAllowUnityCameraDepthTextureWriteFaceZOffset_SID, (!passData.isDeferredRendering && passData.forwardDepthPrimingEnabled) ? 0 : 1); ////////////////////////////////////////////////////////////////////////////////////////////////// // Resolve LightModifier(s) for Main Light's rim multiplier @@ -1101,7 +1103,6 @@ namespace NiloToon.NiloToonURP // per active light modifier loop var lightModifiersList = NiloToonLightSourceModifier.AllNiloToonLightModifiers; bool isMainLightExist = mainLightIndex != -1; - int NiloToonDataArrayIndexOffset = isMainLightExist ? -1 : 0; for (int lightModifierIndex = 0; lightModifierIndex < activeLightModifierScriptCount; lightModifierIndex++) { NiloToonLightSourceModifier script = lightModifiersList[lightModifierIndex]; @@ -1109,9 +1110,14 @@ namespace NiloToon.NiloToonURP if (!script) continue; // C# visibleLights native array contains these lights in order: - // 1. Main Light x1 (always at index 0 if exists, it will not exist if main directional light is not active / intensity = 0) - // 2. Additional Directional lights xN - // 3. All point/spot lights x M + // 1. All Directional lights xN, first + // 2. All point/spot lights x M, second + + // [Which directional light in\s main light?] + // For main light index, see URP's UniversalRenderPipeline.cs -> GetMainLightIndex(...) + // - If Sun exists, it is main light (RenderSettings.sun) + // - If Sun not exists, the brightest directional light is main light + // - If multiple brightest directional light exist, the first one found is main light, so it is random // you must follow URP's ForwardLights.cs -> SetupAdditionalLightConstants(...) for how to match light index in shader // the NiloToon code below is following URP12.1.12's code light loop structure for setting up GPU light data array @@ -1130,7 +1136,11 @@ namespace NiloToon.NiloToonURP // - if main light exists, we need to skip main light x1 at index 0, so 'index -1' is needed // - if main light doesn't exist, we don't need to skip main light x1 at index 0, so 'index -1' is not needed - // see URP14 UniversalRenderPipeline.cs -> InitializeLightData(...) for example code about index offset + // see URP UniversalRenderPipeline.cs -> CreateLightData(...) for code about index offset + // we only apply index offset for lights that have an index after main light, + // since there is a special situation that multiple directional light having the same brightness, so that main light is not always the first one (index 0) + // for lights that has index in front of main light, we need to skip the index offset else we will produce "negative index" which leads to error + int NiloToonDataArrayIndexOffset = isMainLightExist && (lightIter > mainLightIndex) ? -1 : 0; UpdatePerUnityVisibleLightNiloToonDataArray(lightIter + NiloToonDataArrayIndexOffset, script); } } @@ -1223,7 +1233,8 @@ namespace NiloToon.NiloToonURP passData.Setting = Setting; passData.visibleLights = lightData.visibleLights; passData.renderer = cameraData.renderer; - passData.needCorrectDepthTextureDepthWrite = GetNeedCorrectDepthTextureDepthWrite(cameraData.renderer); + passData.forwardDepthPrimingEnabled = GetForwardDepthPriming(cameraData.renderer); + passData.isDeferredRendering = isDeferredRendering; FillInPassDataArray(passData); //-------------------------------------- diff --git a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonUberPostProcessPass.cs b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonUberPostProcessPass.cs index 33b9f545..1397b0b7 100644 --- a/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonUberPostProcessPass.cs +++ b/Assets/External/NiloToonURP/Runtime/RendererFeatures/Passes/NiloToonUberPostProcessPass.cs @@ -48,6 +48,7 @@ Bloom.shader - Bloom Upsample = sample _SourceTex and _SourceTexLowMip using System; using System.Runtime.Serialization.Formatters; using UnityEngine; +using UnityEngine.Assertions; using UnityEngine.Experimental.Rendering; using UnityEngine.Profiling; using UnityEngine.Rendering; @@ -537,7 +538,335 @@ namespace NiloToon.NiloToonURP #if UNITY_6000_0_OR_NEWER public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameContext) { - // TODO + var resourceData = frameContext.Get(); + var cameraData = frameContext.Get(); + + // Start by pre-fetching all builtin effect settings we need + var stack = VolumeManager.instance.stack; + m_Bloom = stack.GetComponent(); + m_ColorLookup = stack.GetComponent(); + m_ColorAdjustments = stack.GetComponent(); + m_Tonemapping = stack.GetComponent(); + + // Check if we need any effects + bool bloomActive = m_Bloom.IsActive() && settings.allowRenderNiloToonBloom && cameraData.postProcessEnabled; + bool tonemappingActive = m_Tonemapping.IsActive() && cameraData.postProcessEnabled; + bool uberNeeded = bloomActive || tonemappingActive; + + if (!uberNeeded) + return; + + // Create RG pass data + using (var builder = renderGraph.AddUnsafePass("NiloToon Uber PostProcess", out var passData)) + { + var resourcesData = frameContext.Get(); + + // Store references + passData.materials = m_Materials; + passData.bloom = m_Bloom; + passData.colorLookup = m_ColorLookup; + passData.colorAdjustments = m_ColorAdjustments; + passData.tonemapping = m_Tonemapping; + passData.descriptor = resourcesData.activeColorTexture.GetDescriptor(renderGraph); + passData.defaultHDRFormat = m_DefaultHDRFormat; + passData.useRGBM = m_UseRGBM; + passData.bloomActive = bloomActive; + passData.tonemappingActive = tonemappingActive; + + // Input: camera color + passData.cameraColorTexture = resourcesData.activeColorTexture; + builder.UseTexture(resourceData.activeColorTexture, AccessFlags.ReadWrite); + + // Output: write back to camera color + passData.outputTexture = resourcesData.cameraColor; + + // If bloom is active, create bloom textures + if (bloomActive) + { + SetupBloomRenderGraph(renderGraph, builder, passData, frameContext); + } + + // Create temporary texture for uber pass + passData.tempTexture = renderGraph.CreateTexture(passData.descriptor); + builder.UseTexture(passData.tempTexture,AccessFlags.ReadWrite); + + builder.AllowPassCulling(false); + builder.AllowGlobalStateModification(true); + + // Set render function + builder.SetRenderFunc((NiloToonUberPassData data, UnsafeGraphContext context) => + { + ExecuteRenderGraph(data, context); + }); + } + } + + private void SetupBloomRenderGraph(RenderGraph renderGraph, IUnsafeRenderGraphBuilder builder, NiloToonUberPassData passData, ContextContainer frameData) + { + // Calculate bloom dimensions + int th, tw; + if (m_Bloom.renderTextureOverridedToFixedHeight.overrideState) + { + th = m_Bloom.renderTextureOverridedToFixedHeight.value; + tw = (int)Mathf.Min(SystemInfo.maxTextureSize, th * ((float)passData.descriptor.width / (float)passData.descriptor.height)); + } + else + { + tw = passData.descriptor.width >> 1; + th = passData.descriptor.height >> 1; + } + + // Determine the iteration count + int maxSize = Mathf.Max(tw, th); + int iterations = Mathf.FloorToInt(Mathf.Log(maxSize, 2f) - 1); + int mipCount = Mathf.Clamp(iterations, 1, m_Bloom.maxIterations.value); + + passData.bloomMipCount = mipCount; + passData.bloomMipDown = new TextureHandle[mipCount]; + passData.bloomMipUp = new TextureHandle[mipCount]; + + // Create bloom texture descriptors + var desc = GetCompatibleDescriptor(tw, th, m_DefaultHDRFormat); + + for (int i = 0; i < mipCount; i++) + { + // Create down and up sample textures + passData.bloomMipDown[i] = builder.CreateTransientTexture(new TextureDesc(desc.width, desc.height) + { + colorFormat = desc.graphicsFormat, + filterMode = FilterMode.Bilinear, + wrapMode = TextureWrapMode.Clamp, + name = $"_NiloToonBloomMipDown{i}" + }); + + passData.bloomMipUp[i] = builder.CreateTransientTexture(new TextureDesc(desc.width, desc.height) + { + colorFormat = desc.graphicsFormat, + filterMode = FilterMode.Bilinear, + wrapMode = TextureWrapMode.Clamp, + name = $"_NiloToonBloomMipUp{i}" + }); + + desc.width = Mathf.Max(1, desc.width >> 1); + desc.height = Mathf.Max(1, desc.height >> 1); + } + } + + private void ExecuteRenderGraph(NiloToonUberPassData data, UnsafeGraphContext context) + { + var cmd = CommandBufferHelpers.GetNativeCommandBuffer(context.cmd); + + // Setup projection matrix + cmd.SetGlobalMatrix(ShaderConstants._FullscreenProjMat, GL.GetGPUProjectionMatrix(Matrix4x4.identity, true)); + + //using (new ProfilingScope(cmd, niloToonUberProfileSampler)) + { + // Reset uber keywords + data.materials.uber.shaderKeywords = null; + + // Setup bloom if active + if (data.bloomActive) + { + //using (new ProfilingScope(cmd, niloToonBloomProfileSampler)) + { + SetupBloomRenderGraph(cmd, data); + } + } + + // Setup color grading (always run) + SetupColorGradingRenderGraph(cmd, data); + + // Execute uber pass if needed + if (data.bloomActive || data.tonemappingActive) + { + // 1. Copy camera color to temp texture + Blitter.BlitCameraTexture(cmd, data.cameraColorTexture, data.tempTexture, + RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store, data.materials.blit, 0); + + // 2. Apply uber effects from temp to output + Blitter.BlitCameraTexture(cmd, data.tempTexture, data.outputTexture, + RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store, data.materials.uber, 0); + } + } + } + + private void SetupBloomRenderGraph(CommandBuffer cmd, NiloToonUberPassData data) + { + // Pre-filtering parameters + float clamp = data.bloom.clamp.value; + float threshold = Mathf.GammaToLinearSpace(data.bloom.threshold.value); + float thresholdKnee = threshold * 0.5f; + + // Material setup + float scatter = Mathf.Lerp(0.05f, 0.95f, data.bloom.scatter.value); + var bloomMaterial = data.materials.bloom; + bloomMaterial.SetVector(ShaderConstants._Params, new Vector4(scatter, clamp, threshold, thresholdKnee)); + CoreUtils.SetKeyword(bloomMaterial, ShaderKeywordStrings.BloomHQ, data.bloom.highQualityFiltering.value); + + // NiloToon specific bloom parameters + float finalThreshold = Mathf.GammaToLinearSpace(data.bloom.characterAreaOverridedThreshold.overrideState ? + data.bloom.characterAreaOverridedThreshold.value : data.bloom.threshold.value); + float finalThresholdKnee = finalThreshold * 0.5f; + bloomMaterial.SetFloat("_NiloToonBloomCharacterAreaThreshold", finalThreshold); + bloomMaterial.SetFloat("_NiloToonBloomCharacterAreaThresholdKnee", finalThresholdKnee); + bloomMaterial.SetFloat("_NiloToonBloomCharacterAreaBloomEmitMultiplier", data.bloom.characterAreaBloomEmitMultiplier.value); + + Vector4 HSV_applyToCharAreaOnly = new Vector4( + data.bloom.HueOffset.value, + data.bloom.SaturationBoost.value, + data.bloom.ValueMultiply.value, + data.bloom.ApplyHSVToCharAreaOnly.value + ); + bloomMaterial.SetVector("_NiloToonBloomHSVModifier", HSV_applyToCharAreaOnly); + + // Prefilter + Blitter.BlitCameraTexture(cmd, data.cameraColorTexture, data.bloomMipDown[0], + RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store, bloomMaterial, 0); + + // Downsample - gaussian pyramid + var lastDown = data.bloomMipDown[0]; + for (int i = 1; i < data.bloomMipCount; i++) + { + Blitter.BlitCameraTexture(cmd, lastDown, data.bloomMipUp[i], + RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store, bloomMaterial, 1); + Blitter.BlitCameraTexture(cmd, data.bloomMipUp[i], data.bloomMipDown[i], + RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store, bloomMaterial, 2); + lastDown = data.bloomMipDown[i]; + } + + // Upsample + for (int i = data.bloomMipCount - 2; i >= 0; i--) + { + var lowMip = (i == data.bloomMipCount - 2) ? data.bloomMipDown[i + 1] : data.bloomMipUp[i + 1]; + var highMip = data.bloomMipDown[i]; + var dst = data.bloomMipUp[i]; + + cmd.SetGlobalTexture(ShaderConstants._SourceTexLowMip, lowMip); + Blitter.BlitCameraTexture(cmd, highMip, dst, + RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store, bloomMaterial, 3); + } + + // Setup bloom on uber material + var tint = data.bloom.tint.value.linear; + var luma = ColorUtils.Luminance(tint); + tint = luma > 0f ? tint * (1f / luma) : Color.white; + + var bloomParams = new Vector4(data.bloom.intensity.value, tint.r, tint.g, tint.b); + data.materials.uber.SetVector(ShaderConstants._Bloom_Params, bloomParams); + data.materials.uber.SetFloat(ShaderConstants._Bloom_RGBM, data.useRGBM ? 1f : 0f); + data.materials.uber.SetFloat("_NiloToonBloomCharacterAreaIntensity", + data.bloom.characterAreaOverridedIntensity.overrideState ? + data.bloom.characterAreaOverridedIntensity.value : data.bloom.intensity.value); + + cmd.SetGlobalTexture(ShaderConstants._Bloom_Texture, data.bloomMipUp[0]); + + // Setup lens dirt + var dirtTexture = data.bloom.dirtTexture.value == null ? Texture2D.blackTexture : data.bloom.dirtTexture.value; + float dirtRatio = dirtTexture.width / (float)dirtTexture.height; + float screenRatio = data.descriptor.width / (float)data.descriptor.height; + var dirtScaleOffset = new Vector4(1f, 1f, 0f, 0f); + float dirtIntensity = data.bloom.dirtIntensity.value; + + if (dirtRatio > screenRatio) + { + dirtScaleOffset.x = screenRatio / dirtRatio; + dirtScaleOffset.z = (1f - dirtScaleOffset.x) * 0.5f; + } + else if (screenRatio > dirtRatio) + { + dirtScaleOffset.y = dirtRatio / screenRatio; + dirtScaleOffset.w = (1f - dirtScaleOffset.y) * 0.5f; + } + + data.materials.uber.SetVector(ShaderConstants._LensDirt_Params, dirtScaleOffset); + data.materials.uber.SetFloat(ShaderConstants._LensDirt_Intensity, dirtIntensity); + data.materials.uber.SetTexture(ShaderConstants._LensDirt_Texture, dirtTexture); + + // Keywords + if (data.bloom.highQualityFiltering.value) + data.materials.uber.EnableKeyword(dirtIntensity > 0f ? ShaderKeywordStrings.BloomHQDirt : ShaderKeywordStrings.BloomHQ); + else + data.materials.uber.EnableKeyword(dirtIntensity > 0f ? ShaderKeywordStrings.BloomLQDirt : ShaderKeywordStrings.BloomLQ); + } + + private void SetupColorGradingRenderGraph(CommandBuffer cmd, NiloToonUberPassData data) + { + // Use default LUT values since we don't have access to full post-processing data in RG + int lutHeight = 32; // Default LUT size + int lutWidth = lutHeight * lutHeight; + + float postExposureLinear = Mathf.Pow(2f, data.colorAdjustments.postExposure.value); + data.materials.uber.SetVector(ShaderConstants._Lut_Params, new Vector4(1f / lutWidth, 1f / lutHeight, lutHeight - 1f, postExposureLinear)); + data.materials.uber.SetTexture(ShaderConstants._UserLut, data.colorLookup.texture.value); + data.materials.uber.SetVector(ShaderConstants._UserLut_Params, !data.colorLookup.IsActive() + ? Vector4.zero + : new Vector4(1f / data.colorLookup.texture.value.width, + 1f / data.colorLookup.texture.value.height, + data.colorLookup.texture.value.height - 1f, + data.colorLookup.contribution.value) + ); + + // Setup tonemapping + switch (data.tonemapping.mode.value) + { + case TonemappingMode.Neutral: data.materials.uber.EnableKeyword(ShaderKeywordStrings.TonemapNeutral); break; + case TonemappingMode.ACES: data.materials.uber.EnableKeyword(ShaderKeywordStrings.TonemapACES); break; + case TonemappingMode.GT: + data.materials.uber.EnableKeyword("_TONEMAP_GRANTURISMO"); + break; + case TonemappingMode.ACES_CustomSR: + data.materials.uber.EnableKeyword("_TONEMAP_ACES_CUSTOM"); + data.materials.uber.SetFloat("_NiloToon_CustomACESParamA", 2.8f); + data.materials.uber.SetFloat("_NiloToon_CustomACESParamB", 0.4f); + data.materials.uber.SetFloat("_NiloToon_CustomACESParamC", 2.1f); + data.materials.uber.SetFloat("_NiloToon_CustomACESParamD", 0.5f); + data.materials.uber.SetFloat("_NiloToon_CustomACESParamE", 1.5f); + break; + case TonemappingMode.KhronosPBRNeutral: + data.materials.uber.EnableKeyword("_TONEMAP_KHRONOS_PBR_NEUTRAL"); + break; + case TonemappingMode.NiloNPRNeutralV1: + data.materials.uber.EnableKeyword("_TONEMAP_NILO_NPR_NEUTRAL_V1"); + break; + case TonemappingMode.NiloHybirdACES: + data.materials.uber.EnableKeyword("_TONEMAP_NILO_HYBIRD_ACES"); + break; + default: break; + } + + // NiloToon specific parameters + data.materials.uber.SetFloat("_NiloToonTonemappingCharacterAreaRemove", + 1 - data.tonemapping.ApplyToCharacter.value * data.tonemapping.intensity.value); + data.materials.uber.SetFloat("_NiloToonTonemappingCharacterAreaPreTonemapBrightnessMul", + data.tonemapping.BrightnessMulForCharacter.value * data.bloom.characterPreTonemapBrightness.value); + data.materials.uber.SetFloat("_NiloToonTonemappingNonCharacterAreaRemove", + 1 - data.tonemapping.ApplyToNonCharacter.value * data.tonemapping.intensity.value); + data.materials.uber.SetFloat("_NiloToonTonemappingNonCharacterAreaPreTonemapBrightnessMul", + data.tonemapping.BrightnessMulForNonCharacter.value); + } + + // RG Pass Data + private class NiloToonUberPassData + { + public MaterialLibrary materials; + public NiloToonBloomVolume bloom; + public ColorLookup colorLookup; + public ColorAdjustments colorAdjustments; + public NiloToonTonemappingVolume tonemapping; + public TextureDesc descriptor; + public GraphicsFormat defaultHDRFormat; + public bool useRGBM; + public bool bloomActive; + public bool tonemappingActive; + + public TextureHandle cameraColorTexture; + public TextureHandle outputTexture; + public TextureHandle tempTexture; + + // Bloom specific + public int bloomMipCount; + public TextureHandle[] bloomMipDown; + public TextureHandle[] bloomMipUp; } #endif diff --git a/Assets/External/NiloToonURP/Runtime/Utility/NiloToonPlanarReflectionHelper.cs b/Assets/External/NiloToonURP/Runtime/Utility/NiloToonPlanarReflectionHelper.cs index 1edbb6c1..e98cb64f 100644 --- a/Assets/External/NiloToonURP/Runtime/Utility/NiloToonPlanarReflectionHelper.cs +++ b/Assets/External/NiloToonURP/Runtime/Utility/NiloToonPlanarReflectionHelper.cs @@ -118,8 +118,9 @@ namespace NiloToon.NiloToonURP // for example, Asset {Mirrors and reflections for VR}'s spawned reflection camera will always have a name of "Reflection Camera for " + renderCamera.name + " (autoGen, not saved in scene)" string cameraName = camera.gameObject.name; // gameobject.name will have GC alloc isPlanarReflectionCamera |= ContainsStringIgnoreCase(cameraName, "Planar"); - isPlanarReflectionCamera |= ContainsStringIgnoreCase(cameraName, "Reflect"); + isPlanarReflectionCamera |= ContainsStringIgnoreCase(cameraName, "Reflect"); // PIDI 5, Mirrors and reflections for VR isPlanarReflectionCamera |= ContainsStringIgnoreCase(cameraName, "Mirror"); + isPlanarReflectionCamera |= ContainsStringIgnoreCase(cameraName, "RefCamera"); // PIDI 6 // planar reflection camera always render to a custom RenderTexture isPlanarReflectionCamera &= camera.targetTexture != null; diff --git a/Assets/External/NiloToonURP/Runtime/VolumePresetPicker/Scripts/NiloToonVolumePresetPicker.cs b/Assets/External/NiloToonURP/Runtime/VolumePresetPicker/Scripts/NiloToonVolumePresetPicker.cs index d94cc1b9..45647659 100644 --- a/Assets/External/NiloToonURP/Runtime/VolumePresetPicker/Scripts/NiloToonVolumePresetPicker.cs +++ b/Assets/External/NiloToonURP/Runtime/VolumePresetPicker/Scripts/NiloToonVolumePresetPicker.cs @@ -65,21 +65,50 @@ namespace NiloToon.NiloToonURP private void AssignVolumeProfileByIndex(int index) { - if (index == volumeProfiles.Count) index = 0; - if (index == -1) index = volumeProfiles.Count - 1; - + // Check if volumeProfiles is null or empty + if (volumeProfiles == null || volumeProfiles.Count == 0) + { + Debug.LogWarning("Volume profiles list is null or empty"); + return; + } + + // Clamp index to valid range + if (index >= volumeProfiles.Count) index = 0; + if (index < 0) index = volumeProfiles.Count - 1; + + // Check if volume component exists + if (volume == null) + { + Debug.LogWarning("Volume component is null"); + return; + } + + // Check if the profile at index is not null + if (volumeProfiles[index] == null) + { + Debug.LogWarning($"Volume profile at index {index} is null"); + return; + } + volume.sharedProfile = volumeProfiles[index]; - volume.weight = weight; volume.priority = priority; volume.isGlobal = mode == VolumeMode.Global; - + _currentIndex = index; } // Use OnValidate to update changes during edit time private void OnValidate() { + // IMPORTANT: Prevent execution during build process to avoid NullReferenceException + // The Volume component may not be properly initialized during build time, + // causing volume.priority assignment to fail. This check ensures OnValidate + // only runs in editor when not building. +#if UNITY_EDITOR + if (UnityEditor.BuildPipeline.isBuildingPlayer) + return; +#endif AssignVolumeProfileByIndex(_currentIndex); } diff --git a/Assets/External/NiloToonURP/Shaders/NiloToonCharacter.shader b/Assets/External/NiloToonURP/Shaders/NiloToonCharacter.shader index 3d4d507e..6a3e1b23 100644 --- a/Assets/External/NiloToonURP/Shaders/NiloToonCharacter.shader +++ b/Assets/External/NiloToonURP/Shaders/NiloToonCharacter.shader @@ -100,6 +100,7 @@ because: - https://medium.com/@jasonbooth_86226/stalling-a-gpu-7faac66b11b9 - https://forum.unity.com/threads/branching-in-shaders.1231695/ - https://iquilezles.org/articles/gpuconditionals/ + - https://zhuanlan.zhihu.com/p/122467342 [TLDR] Just remember(even for mobile platform): @@ -222,6 +223,19 @@ see NiloToonCharacter_RiderSupport.hlsl for how to solve it 4. capture a frame 5. start shader profiler, click "hot spot" then you can see the cost(stall reason) of this shader for each used hlsl function from NiloToon/URP/Core's hlsl + +[Unity 6 version marco] +Shader preprocessor symbols: is updated for 6000.0.0 according to the following scheme: +#define UNITY_VERSION major10.000.000 + minor10.000 + patch +E.g. +60.000.000 for 6000.0.0b11 => #if UNITY_VERSION >= 60000000 +60.021.234 for 6000.2.1234f1 => #if UNITY_VERSION >= 60021234 +However, note that at this time it is still clamped to 202329 for 2023.2.9 (as it has been throughout the 2023.3 beta). + +#if UNITY_VERSION >= 60000000 (= 6.0) +#if UNITY_VERSION >= 60010000 (= 6.1) +#if UNITY_VERSION >= 60020000 (= 6.2) +Ref: https://discussions.unity.com/t/unity-6-new-naming-convention/942214 */ Shader "Universal Render Pipeline/NiloToon/NiloToon_Character" { @@ -844,12 +858,10 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Character" [Title(_DepthTextureRimLightAndShadowGroup, Rim Light Area)] [Advanced][Sub(_DepthTextureRimLightAndShadowGroup)]_DepthTexRimLightBlockByShadow("Block by Shadow", Range(0,1)) = 0 - [Tooltip(A positive bias will make 2D rim light occlude by nearby objects easier (removing more inner 2D rim light), great for producing a clean silhouette only rim light)] - [Tooltip()] - [Tooltip(A negative bias will produce more inner 2D rim light, which may not be desired)] + [Tooltip(A larger bias will make 2D rim light occlude by nearby objects easier (removing more inner 2D rim light), great for producing a clean silhouette only rim light)] [Tooltip()] [Tooltip(Recommend increase it to 0.5 for hair material to produce a cleaner hair 2D rim light.)] - [Advanced][Sub(_DepthTextureRimLightAndShadowGroup)]_DepthTexRimLightThresholdOffset("Occlusion bias", Range(-1,1)) = 0 + [Advanced][Sub(_DepthTextureRimLightAndShadowGroup)]_DepthTexRimLightThresholdOffset("Occlusion bias", Range(0,1)) = 0 [Tooltip(Rim light will fadeout softly when a nearby occulder appears, you can control the fadeout softness.)] [Advanced][Sub(_DepthTextureRimLightAndShadowGroup)]_DepthTexRimLightFadeoutRange("Fadeout Softness", Range(0.01,10)) = 1 @@ -3661,6 +3673,47 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Character" [Tooltip(Enable this toggle to force Color Map equals 1.)] [Sub(_OverrideOutlineColorByTextureGroup)]_OverrideOutlineColorTexIgnoreAlphaChannel(" Ignore Alpha?", Range(0,1)) = 0 + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + [Title(Per material effect options)] + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // Per Material Dissolve + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + [Main(_PerMaterialDissolveGroup,_PER_MAT_DISSOLVE_ON)]_EnablePerMaterialDissolve("Dissolve", Float) = 0 + //[Helpbox((Very High performance cost when threshold is not 1))] + + [Title(Threshold)] + [Sub(_PerMaterialDissolveGroup)]_PerMaterialDissolveCutoff("Threshold", Range(-1.0, 2.0)) = -1 + + [Title(Dissolve Map)] + [Preset(_PerMaterialDissolveGroup,NiloToonCharacter_PerMaterialDissolveThresholdMap_LWGUI_ShaderPropertyPreset)] _DissolveThresholdMapPreset ("Preset", float) = 0 + [Tooltip(A map that contains the direction of dissolve using a grayscale gradient)] + [Tex(_PerMaterialDissolveGroup)][NoScaleOffset]_PerMaterialDissolveThresholdMap("Map", 2D) = "linearGrey" {} + [Sub(_PerMaterialDissolveGroup)]_PerMaterialDissolveThresholdMapUVTiling(" UV Tiling", Float) = 1 + [SubEnum(_PerMaterialDissolveGroup,UV0,0,UV1,1,UV2,2,UV3,3)]_PerMaterialDissolveThresholdMapUVIndex(" UV Index", Float) = 0 + [ChannelDrawer(_PerMaterialDissolveGroup)]_PerMaterialDissolveThresholdMapChannelMask(" Extract from", Vector) = (0,1,0,0) + [SubToggle(_PerMaterialDissolveGroup, _)]_PerMaterialDissolveThresholdMapInvertColor(" Invert?", Float) = 0 + + [Title(Pattern Map)] + [Sub(_PerMaterialDissolveGroup)]_PerMaterialDissolvePatternMapStrength("Strength", Range(0.0, 1.0)) = 0.1 + + [Preset(_PerMaterialDissolveGroup,NiloToonCharacter_PerMaterialDissolvePatternMap_LWGUI_ShaderPropertyPreset)] _DissolvePatternMapPreset ("Preset", float) = 0 + [Tooltip(A map that contains any loop pattern to add details to the dissolve effect)] + [Tex(_PerMaterialDissolveGroup)][NoScaleOffset]_PerMaterialDissolvePatternMap("Map", 2D) = "linearGrey" {} + [Sub(_PerMaterialDissolveGroup)]_PerMaterialDissolvePatternMapUVTiling(" UV Tiling", Float) = 1 + [SubEnum(_PerMaterialDissolveGroup,UV0,0,UV1,1,UV2,2,UV3,3)]_PerMaterialDissolvePatternMapUVIndex(" UV Index", Float) = 0 + [ChannelDrawer(_PerMaterialDissolveGroup)]_PerMaterialDissolvePatternMapChannelMask(" Extract from", Vector) = (1,0,0,0) + [SubToggle(_PerMaterialDissolveGroup, _)]_PerMaterialDissolvePatternMapInvertColor(" Invert?", Float) = 0 + + [Title(Edge Color)] + [Sub(_PerMaterialDissolveGroup)]_PerMaterialDissolveEdgeWidth("Width", Range(0.0, 1.0)) = 0.05 + [HDR][Sub(_PerMaterialDissolveGroup)]_PerMaterialDissolveEdgeColor("Color",Color) = (16,8,0) + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -3683,6 +3736,15 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Character" [Tooltip(you can disable this toggle for every other materials, and only enable this toggle for the target materials.)] [SubToggle(_PerCharacterEffectGroup,_)]_AllowPerCharacterDitherFadeout("Allow Dither Fadeout?", Float) = 1 + + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + [Title(Dissolve options)] + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// [Title(_PerCharacterEffectGroup, Dissolve)] [Tooltip(Useful when you want only some materials to apply the dissolve effect from NiloToonPerCharacterRenderController.)] [Tooltip()] @@ -3690,6 +3752,15 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Character" [Tooltip(you can disable this toggle for every other materials, and only enable this toggle for the target materials.)] [SubToggle(_PerCharacterEffectGroup,_)]_AllowPerCharacterDissolve("Allow Dissolve?", Float) = 1 + // WIP + /* + [SubToggle(_PerCharacterEffectGroup,_NILOTOON_FORCE_MATERIAL_DISSOLVE)]_NiloToonForcePerCharDissolveOn(" Force on?", Float) = 0 + + [SubToggle(_PerCharacterEffectGroup)]_ShouldMaterialOverrideDissolveAmount("Override Dissolve Amount?", Float) = 0 + [ShowIf(_ShouldMaterialOverrideDissolveAmount, Equal, 1)] + [Sub(_PerCharacterEffectGroup)]_MaterialOverriddenDissolveAmount("Overridden Dissolve Amount", Range(0,1)) = 1 + */ + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -4024,6 +4095,9 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Character" #pragma multi_compile _ _NILOTOON_FORCE_MINIMUM_SHADER #pragma multi_compile_local _ _NILOTOON_DISSOLVE + // per material effect + #pragma shader_feature_local _PER_MAT_DISSOLVE_ON + // to support Unity AssetStore asset "ClothDynamics" #pragma shader_feature_local _NILOTOON_SUPPORT_CLOTHDYNAMICS #pragma shader_feature_local USE_BUFFERS // set by Unity AssetStore asset "ClothDynamics"'s GPUClothDynamics.cs script @@ -4215,7 +4289,7 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Character" #pragma multi_compile _ _LIGHT_LAYERS // Starting from 6.1, _FORWARD_PLUS is replaced by _CLUSTER_LIGHT_LOOP - #if UNITY_VERSION >= 60000100 + #if UNITY_VERSION >= 60010000 #pragma multi_compile _ _CLUSTER_LIGHT_LOOP #elif UNITY_VERSION >= 202220 #pragma multi_compile _ _FORWARD_PLUS @@ -4224,7 +4298,7 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Character" #pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION - #if UNITY_VERSION >= 60000100 + #if UNITY_VERSION >= 60010000 #pragma multi_compile_fragment _ _REFLECTION_PROBE_ATLAS #endif @@ -4268,7 +4342,7 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Character" // In NiloToon, we force dynamic_branch for fog if possible (dynamic_branch fog introduced in Unity6.1), // - https://docs.unity3d.com/6000.2/Documentation/Manual/urp/shader-stripping-fog.html // this trades a little bit GPU performance for cutting 50~75% memory usage and 2x~4x faster build time, which is worth it - #if UNITY_VERSION >= 60000100 + #if UNITY_VERSION >= 60010000 #pragma dynamic_branch _ FOG_LINEAR FOG_EXP FOG_EXP2 // NiloToon's choice, no shader variant //#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl" // URP's original code #else @@ -4458,7 +4532,7 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Character" #pragma multi_compile _ _LIGHT_LAYERS // Starting from 6.1, _FORWARD_PLUS is replaced by _CLUSTER_LIGHT_LOOP - #if UNITY_VERSION >= 60000100 + #if UNITY_VERSION >= 60010000 #pragma multi_compile _ _CLUSTER_LIGHT_LOOP #elif UNITY_VERSION >= 202220 #pragma multi_compile _ _FORWARD_PLUS @@ -4472,7 +4546,7 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Character" #ifndef SHADER_API_MOBILE #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION - #if UNITY_VERSION >= 60000100 + #if UNITY_VERSION >= 60010000 #pragma multi_compile_fragment _ _REFLECTION_PROBE_ATLAS #endif #endif @@ -4516,7 +4590,7 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Character" // In NiloToon, we force dynamic_branch for fog if possible (dynamic_branch fog introduced in Unity6.1), // - https://docs.unity3d.com/6000.2/Documentation/Manual/urp/shader-stripping-fog.html // this trades a little bit GPU performance for cutting 50~75% memory usage and 2x~4x faster build time, which is worth it - #if UNITY_VERSION >= 60000100 + #if UNITY_VERSION >= 60010000 #pragma dynamic_branch _ FOG_LINEAR FOG_EXP FOG_EXP2 // NiloToon's choice, no shader variant //#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl" // URP's original code #else @@ -5175,7 +5249,7 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Character" //#pragma multi_compile _ LOD_FADE_CROSSFADE // NiloToon doesn't support #pragma shader_feature_local_vertex _ADD_PRECOMPUTED_VELOCITY - #if UNITY_VERSION >= 60000100 + #if UNITY_VERSION >= 60010000 #define APPLICATION_SPACE_WARP_MOTION 1 // starting from Unity6.1, the 'APLICATION' typo is fixed, now the correct one is 'APPLICATION'. See Unity6.1's ComplexLit.shader's XRMotionVectors pass #else #define APLICATION_SPACE_WARP_MOTION 1 // this is the 'correct' typo (APLICATION) for Unity6.0 version. See Unity6.0's ComplexLit.shader's XRMotionVectors pass diff --git a/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_LightingEquation.hlsl b/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_LightingEquation.hlsl index f88d4dd8..07f59ea2 100644 --- a/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_LightingEquation.hlsl +++ b/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_LightingEquation.hlsl @@ -566,7 +566,7 @@ half4 ShadeMainLight(inout ToonSurfaceData surfaceData, Varyings input, ToonLigh // let shadow fadeout softly and smoothly when depth difference is too small // _DepthTexShadowFadeoutRange will allow user controlling how the fadeout should look like depthDiffShadow = saturate((depthTexShadowLinearDepthVS - (lightingData.selfLinearEyeDepth - depthTexShadowDepthDiffThreshold)) * 50 / _DepthTexShadowFadeoutRange); - depthDiffShadow = lerp(1,depthDiffShadow,_DepthTexShadowUsage); + depthDiffShadow = lerp(1,depthDiffShadow,_DepthTexShadowUsage * _NiloToonGlobalAllowUnityCameraDepthTextureWriteFaceZOffset); } else { diff --git a/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_ObjectMotionVectors.hlsl b/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_ObjectMotionVectors.hlsl index 6f13d299..7f7aab70 100644 --- a/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_ObjectMotionVectors.hlsl +++ b/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_ObjectMotionVectors.hlsl @@ -127,15 +127,6 @@ MotionVectorVaryings vert(MotionVectorAttributes input) // ------------------------------------- // Fragment -#if defined(APLICATION_SPACE_WARP_MOTION) - // ASW 함수가 없는 경우를 위한 대체 구현 - float2 CalcAswNdcMotionVectorFromCsPositions(float4 posCS, float4 prevPosCS) - { - float2 motionVector = CalcNdcMotionVectorFromCsPositions(posCS, prevPosCS); - return motionVector; - } -#endif - float4 frag(MotionVectorVaryings input) : SV_Target { UNITY_SETUP_INSTANCE_ID(input); @@ -159,11 +150,9 @@ float4 frag(MotionVectorVaryings input) : SV_Target #endif #if defined(APLICATION_SPACE_WARP_MOTION) - float2 motionVector = CalcAswNdcMotionVectorFromCsPositions(input.positionCSNoJitter, input.previousPositionCSNoJitter); - return float4(motionVector.x, motionVector.y, 0, 1); + return float4(CalcAswNdcMotionVectorFromCsPositions(input.positionCSNoJitter, input.previousPositionCSNoJitter), 1); #else - float2 motionVector = CalcNdcMotionVectorFromCsPositions(input.positionCSNoJitter, input.previousPositionCSNoJitter); - return float4(motionVector.x, motionVector.y, 0, 0); + return float4(CalcNdcMotionVectorFromCsPositions(input.positionCSNoJitter, input.previousPositionCSNoJitter), 0, 0); #endif } diff --git a/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_RiderSupport.hlsl b/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_RiderSupport.hlsl index 934fa1cf..4e4727bd 100644 --- a/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_RiderSupport.hlsl +++ b/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_RiderSupport.hlsl @@ -39,6 +39,7 @@ #define _ALPHAOVERRIDEMAP 1 #define _NILOTOON_PERCHARACTER_BASEMAP_OVERRIDE 1 #define _NILOTOON_DISSOLVE 1 +#define _PER_MAT_DISSOLVE_ON 1 #define _ADDITIONAL_LIGHTS 1 #define _ADDITIONAL_LIGHTS_VERTEX 1 #define _NILOTOON_RECEIVE_SELF_SHADOW 1 diff --git a/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_Shared.hlsl b/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_Shared.hlsl index ca684a89..e1945ec5 100644 --- a/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_Shared.hlsl +++ b/Assets/External/NiloToonURP/Shaders/NiloToonCharacter_HLSL/NiloToonCharacter_Shared.hlsl @@ -54,6 +54,13 @@ #define ShouldReceiveURPShadow 1 #endif +// to support change in Unity6.1 (The _FORWARD_PLUS shader keyword is deprecated in Unity6.1) +#if UNITY_VERSION >= 60010000 + #define NILO_USE_CLUSTER_LIGHT_LOOP USE_CLUSTER_LIGHT_LOOP +#else + #define NILO_USE_CLUSTER_LIGHT_LOOP USE_FORWARD_PLUS +#endif + // We don't have "UnityCG.cginc" in SRP/URP's package anymore, so: // Including the following two hlsl files is enough for shading with Universal Pipeline. Everything is included in them. // - Core.hlsl will include SRP shader library, all constant buffers not related to materials (perobject, percamera, perframe). @@ -360,6 +367,10 @@ TEXTURE2D(_BaseMap); SAMPLER(sampler_BaseMap); #if _NILOTOON_DISSOLVE sampler2D _DissolveThresholdMap; #endif +#if _PER_MAT_DISSOLVE_ON + sampler2D _PerMaterialDissolveThresholdMap; + sampler2D _PerMaterialDissolvePatternMap; +#endif #if _NILOTOON_PERCHARACTER_BASEMAP_OVERRIDE TEXTURE2D(_PerCharacterBaseMapOverrideMap); #endif @@ -415,7 +426,8 @@ TEXTURE2D(_NiloToonCharSelfShadowMapRT); SAMPLER_CMP(sampler_NiloToonCharSelf // - (vivo Y73s) (vivo Y72) (TAS_AN00) (mate40) (Huawei Honor 9x), all are Mali-G__ GPU + vulkan. // safe devices list: // - "Adreno GPU + vulkan" is safe (Xiaomi8)(Samsung A70)(RedmiNote9Pro) -// - "OpenGLES + any GPU" is safe also +// - "OpenGLES + any GPU" is safe also +// *Split a big CBUFFER into 2 CBUFFER(UnityPerMaterial, UnityPerMaterialTwo) doesn't work #ifndef SHADER_API_VULKAN CBUFFER_START(UnityPerMaterial) #endif @@ -1187,6 +1199,20 @@ CBUFFER_START(UnityPerMaterial) float _DissolveBorderRange; half3 _DissolveBorderTintColor; + // per material dissolve + half _PerMaterialDissolveCutoff; + half _PerMaterialDissolveThresholdMapUVTiling; + uint _PerMaterialDissolveThresholdMapUVIndex; + half _PerMaterialDissolvePatternMapStrength; + half4 _PerMaterialDissolveThresholdMapChannelMask; + half _PerMaterialDissolveThresholdMapInvertColor; + half _PerMaterialDissolvePatternMapUVTiling; + uint _PerMaterialDissolvePatternMapUVIndex; + half4 _PerMaterialDissolvePatternMapChannelMask; + half _PerMaterialDissolvePatternMapInvertColor; + half _PerMaterialDissolveEdgeWidth; + half3 _PerMaterialDissolveEdgeColor; + // per character basemap override half _PerCharacterBaseMapOverrideAmount; float4 _PerCharacterBaseMapOverrideTilingOffset; @@ -1346,6 +1372,7 @@ float _GlobalShouldDisableNiloToonDepthTextureRimLightAndShadow; // rendering path related float _NiloToonGlobalAllowUnityCameraDepthTextureWriteOutlineExtrudedPosition; +float _NiloToonGlobalAllowUnityCameraDepthTextureWriteFaceZOffset; // global debug float _GlobalToonShadeDebugCase; @@ -1736,15 +1763,17 @@ float ShouldRenderOutline() bool ShouldDisableRendering() { - // user can disable rendering per material + // user can disable rendering: + // - per material + // - per NiloToonChar script bool shouldDisableRendering = !(_EnableRendering && _RenderCharacter); // when _DitherFadeoutAmount or _DissolveAmount is 100% (character is completely not visible due to NiloToonPerCharacterRenderController's dither or dissolve setting), // discard all rendering in this vertex shader so we don't pollute URP's shadowmap and depth texture / depth normal texture // it also helps improving performance because of skipping the fragment shader shouldDisableRendering = shouldDisableRendering || - ((_DitherFadeoutAmount == 1) && _AllowPerCharacterDitherFadeout) || - ((_DissolveAmount == 1) && _AllowPerCharacterDissolve); + (_AllowPerCharacterDitherFadeout && (_DitherFadeoutAmount >= 1.0)) || + (_AllowPerCharacterDissolve && (_DissolveAmount >= 1.0)); // when rendering to _CameraColorTexture, this section will allow material's _RenderOutline toggle or per character script's _PerCharacterRenderOutline to control render outline or not, per material. // Be careful not to run this section in DepthOnly/DepthNormalsOnly pass, @@ -1754,7 +1783,7 @@ bool ShouldDisableRendering() shouldDisableRendering = shouldDisableRendering || !ShouldRenderOutline(); #endif - // Materials's "Pass On/Off" section + // Material's "Pass On/Off" section bool shouldRenderingExtraThickOutline = _AllowRenderExtraThickOutlinePass && _ExtraThickOutlineEnabled; bool shouldRenderingCharacterAreaColorFill = _AllowRenderNiloToonCharacterAreaColorFillPass && _CharacterAreaColorFillEnabled; bool shouldRenderCharacterAreaStencilBufferFill = (shouldRenderingExtraThickOutline || shouldRenderingCharacterAreaColorFill) && _AllowRenderNiloToonCharacterAreaStencilBufferFillPass; @@ -2312,7 +2341,7 @@ Varyings VertexShaderAllWork(Attributes input) cameraDepthTextureZOffsetMask = lightingNormalWS_faceArea.w; #endif // zoffset should be always greater or equal to depthDiffThreshold, to avoid face cast 2D depth texture self shadow - ZOffsetFinalSum += -_FaceAreaCameraDepthTextureZWriteOffset * cameraDepthTextureZOffsetMask; + ZOffsetFinalSum += -_FaceAreaCameraDepthTextureZWriteOffset * cameraDepthTextureZOffsetMask * _NiloToonGlobalAllowUnityCameraDepthTextureWriteFaceZOffset; #endif ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -3102,7 +3131,7 @@ struct NiloToonPerAdditionalLightData NiloToonPerAdditionalLightData GetNiloToonPerAdditionalLightData(int lightIndex) { // copy the code of GetAdditionalLight(...) for find the final GPU array index - #if USE_FORWARD_PLUS + #if NILO_USE_CLUSTER_LIGHT_LOOP int realGPULightArrayIndex = lightIndex; #else int realGPULightArrayIndex = GetPerObjectLightIndex(lightIndex); @@ -3250,9 +3279,11 @@ ToonLightingData InitializeLightingData(Varyings input, half3 normalTS, float fa //-------------------------------------------------------------------- // MainLight Note //-------------------------------------------------------------------- - // [Which directional light in main light?] - // - If Sun Light is present, Sun Light will be treated as Main Light - // - If Sun Light is not present, the brightest directional light will be treated as Main Light + // [Which directional light is main light?] + // For main light index, see URP's UniversalRenderPipeline.cs -> GetMainLightIndex(...) + // - If Sun exists, it is main light (RenderSettings.sun) + // - If Sun not exists, the brightest directional light is main light + // - If multiple brightest directional light exist, the first one found is main light, so it is random // // It is shaded outside the light loop and it has a specific set of variables and shading path // so we can be as fast as possible in the case when there's only a single directional light in scene @@ -3356,10 +3387,14 @@ ToonLightingData InitializeLightingData(Varyings input, half3 normalTS, float fa // and is only looping directional lights as additional light, not including main directional light, or any point/spot light // Note: as Directional lights would be in all clusters since they don't have a 3D volume, so they don't go into the cluster structure. // Instead, they are stored first in the light buffer(array), so here we can loop them easily starting from index 0. - #if USE_FORWARD_PLUS + #if NILO_USE_CLUSTER_LIGHT_LOOP for (uint lightIndex = 0; lightIndex < min(URP_FP_DIRECTIONAL_LIGHTS_COUNT, MAX_VISIBLE_LIGHTS); lightIndex++) - { + { + #if UNITY_VERSION >= 60010000 + CLUSTER_LIGHT_LOOP_SUBTRACTIVE_LIGHT_CHECK + #else FORWARD_PLUS_SUBTRACTIVE_LIGHT_CHECK + #endif Light light = GetAdditionalLight(lightIndex, input.positionWS_ZOffsetFinalSum.xyz); // since URP10, you must provide shadowMask in order to receive shadowmap @@ -3832,10 +3867,14 @@ half3 ShadeAllLights(inout ToonSurfaceData surfaceData, ToonLightingData lightin // and is only looping directional lights as additional light, not including main directional light, or any point/spot light // Note: as Directional lights would be in all clusters since they don't have a 3D volume, so they don't go into the cluster structure. // Instead, they are stored first in the light buffer array, so here we can loop them easily starting from index 0. - #if USE_FORWARD_PLUS + #if NILO_USE_CLUSTER_LIGHT_LOOP for (uint lightIndex = 0; lightIndex < min(URP_FP_DIRECTIONAL_LIGHTS_COUNT, MAX_VISIBLE_LIGHTS); lightIndex++) { + #if UNITY_VERSION >= 60010000 + CLUSTER_LIGHT_LOOP_SUBTRACTIVE_LIGHT_CHECK + #else FORWARD_PLUS_SUBTRACTIVE_LIGHT_CHECK + #endif Light light = GetAdditionalLight(lightIndex, input.positionWS_ZOffsetFinalSum.xyz, shadowMask); // since URP10, you must provide shadowMask in order to receive shadowmap @@ -4107,9 +4146,27 @@ void ApplyPerCharacterEffectColorEdit(inout half3 color, ToonLightingData lighti /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // fragment shared functions (Step7: dissolve) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +void DoPerMatDissolve(inout half3 color, Varyings input, ToonLightingData lightingData, UVData uvData) +{ + #if _PER_MAT_DISSOLVE_ON + half dissolveSampleValue = dot(tex2D(_PerMaterialDissolveThresholdMap, uvData.GetUV(_PerMaterialDissolveThresholdMapUVIndex) * _PerMaterialDissolveThresholdMapUVTiling), _PerMaterialDissolveThresholdMapChannelMask); + dissolveSampleValue = _PerMaterialDissolveThresholdMapInvertColor ? 1-dissolveSampleValue : dissolveSampleValue; + half dissolvePatternSampleValue = dot(tex2D(_PerMaterialDissolvePatternMap, uvData.GetUV(_PerMaterialDissolvePatternMapUVIndex) * _PerMaterialDissolvePatternMapUVTiling), _PerMaterialDissolvePatternMapChannelMask); + dissolvePatternSampleValue = _PerMaterialDissolvePatternMapInvertColor ? 1-dissolvePatternSampleValue : dissolvePatternSampleValue; + half patternOffset = (dissolvePatternSampleValue * 2.0 - 1.0) * _PerMaterialDissolvePatternMapStrength; + half finalClipValue = dissolveSampleValue - _PerMaterialDissolveCutoff + patternOffset; + clip(finalClipValue); + // color at edge + color.rgb = lerp(color.rgb, _PerMaterialDissolveEdgeColor, _PerMaterialDissolveCutoff > 0 ? invLerpClamp(_PerMaterialDissolveEdgeWidth,0, finalClipValue) : 0); + #endif +} void ApplyDissolve(inout half3 color, Varyings input, ToonLightingData lightingData, UVData uvData) { + // do per material dissolve first + DoPerMatDissolve(color, input, lightingData, uvData); + //------------------------------------------------------------ + // then do per character dissolve #if _NILOTOON_DISSOLVE // matching to NiloToonPerCharacterRenderController.cs's enum DissolveMode #define DISSOLVEMODE_UV1 1 @@ -4297,7 +4354,12 @@ void InitAllData(inout Varyings input, float facing, out UVData uvData, out Toon void FragmentShaderAllWork(Varyings input, FRONT_FACE_TYPE IsFrontFace : FRONT_FACE_SEMANTIC , out half4 outColor : SV_Target0 #ifdef _WRITE_RENDERING_LAYERS + // Unity6.2 changed float4 -> uint + #if UNITY_VERSION >= 60020000 + , out uint outRenderingLayers : SV_Target1 + #else , out float4 outRenderingLayers : SV_Target1 + #endif #endif ) { @@ -4463,8 +4525,13 @@ void FragmentShaderAllWork(Varyings input, FRONT_FACE_TYPE IsFrontFace : FRONT_F outColor.rgb *= _PreMultiplyAlphaIntoRGBOutput ? outColor.a : 1; #ifdef _WRITE_RENDERING_LAYERS + // Unity6.2 changed API + #if UNITY_VERSION >= 60020000 + outRenderingLayers = EncodeMeshRenderingLayer(); + #else uint renderingLayers = GetMeshRenderingLayer(); outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); + #endif #endif } @@ -4525,7 +4592,12 @@ half BaseColorAlphaClipTest(Varyings input, FRONT_FACE_TYPE IsFrontFace : FRONT_ void BaseColorAlphaClipTest_AndDepthNormalColorOutput(Varyings input, FRONT_FACE_TYPE IsFrontFace : FRONT_FACE_SEMANTIC , out half4 outNormalWS : SV_Target0 #ifdef _WRITE_RENDERING_LAYERS + // Unity6.2 changed float4 -> uint + #if UNITY_VERSION >= 60020000 + , out uint outRenderingLayers : SV_Target1 + #else , out float4 outRenderingLayers : SV_Target1 + #endif #endif ) { @@ -4548,10 +4620,15 @@ void BaseColorAlphaClipTest_AndDepthNormalColorOutput(Varyings input, FRONT_FACE // TODO: should we apply? //outNormalWS *= saturate(1 - _DitherFadeoutAmount * _AllowPerCharacterDitherFadeout * _DitherFadeoutNormalScaleFix); - #ifdef _WRITE_RENDERING_LAYERS - uint renderingLayers = GetMeshRenderingLayer(); - outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); +#ifdef _WRITE_RENDERING_LAYERS + // Unity6.2 changed API + #if UNITY_VERSION >= 60020000 + outRenderingLayers = EncodeMeshRenderingLayer(); + #else + uint renderingLayers = GetMeshRenderingLayer(); + outRenderingLayers = float4(EncodeMeshRenderingLayer(renderingLayers), 0, 0, 0); #endif +#endif } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/Assets/External/NiloToonURP/Shaders/NiloToonEnvironment.shader b/Assets/External/NiloToonURP/Shaders/NiloToonEnvironment.shader index e2166f1f..c9b891d4 100644 --- a/Assets/External/NiloToonURP/Shaders/NiloToonEnvironment.shader +++ b/Assets/External/NiloToonURP/Shaders/NiloToonEnvironment.shader @@ -211,7 +211,7 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Environment" #pragma multi_compile _ _LIGHT_LAYERS // Starting from 6.1, _FORWARD_PLUS is replaced by _CLUSTER_LIGHT_LOOP - #if UNITY_VERSION >= 60000100 + #if UNITY_VERSION >= 60010000 #pragma multi_compile _ _CLUSTER_LIGHT_LOOP #elif UNITY_VERSION >= 202220 #pragma multi_compile _ _FORWARD_PLUS @@ -222,7 +222,7 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Environment" #pragma multi_compile_fragment _ _ADDITIONAL_LIGHT_SHADOWS #pragma multi_compile_fragment _ _REFLECTION_PROBE_BLENDING #pragma multi_compile_fragment _ _REFLECTION_PROBE_BOX_PROJECTION - #if UNITY_VERSION >= 60000100 + #if UNITY_VERSION >= 60010000 #pragma multi_compile_fragment _ _REFLECTION_PROBE_ATLAS #endif @@ -244,7 +244,7 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Environment" #pragma multi_compile _ SHADOWS_SHADOWMASK #pragma multi_compile _ DIRLIGHTMAP_COMBINED #pragma multi_compile _ LIGHTMAP_ON - #if UNITY_VERSION >= 60000100 + #if UNITY_VERSION >= 60010000 #pragma multi_compile_fragment _ LIGHTMAP_BICUBIC_SAMPLING #endif #pragma multi_compile _ DYNAMICLIGHTMAP_ON @@ -255,7 +255,7 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Environment" // [fog] // In NiloToon, we force dynamic_branch for fog if possible (dynamic_branch fog introduced in Unity6.1), // this trades a little bit GPU performance for cutting 50~75% memory usage and 2x~4x faster build time, which is worth it - #if UNITY_VERSION >= 60000100 + #if UNITY_VERSION >= 60010000 #pragma dynamic_branch _ FOG_LINEAR FOG_EXP FOG_EXP2 // NiloToon's choice, no shader variant //#include_with_pragmas "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Fog.hlsl" // URP's original code #else @@ -722,7 +722,7 @@ Shader "Universal Render Pipeline/NiloToon/NiloToon_Environment" #pragma multi_compile _ LOD_FADE_CROSSFADE #pragma shader_feature_local_vertex _ADD_PRECOMPUTED_VELOCITY - #if UNITY_VERSION >= 60000100 + #if UNITY_VERSION >= 60010000 #define APPLICATION_SPACE_WARP_MOTION 1 // starting from Unity6.1, the 'APLICATION' typo is fixed, now the correct one is 'APPLICATION'. See Unity6.1's ComplexLit.shader's XRMotionVectors pass #else #define APLICATION_SPACE_WARP_MOTION 1 // this is the 'correct' typo (APLICATION) for Unity6.0 version. See Unity6.0's ComplexLit.shader's XRMotionVectors pass diff --git a/Assets/External/NiloToonURP/Textures/DissolvePattern.meta b/Assets/External/NiloToonURP/Textures/DissolvePattern.meta new file mode 100644 index 00000000..84abd44b --- /dev/null +++ b/Assets/External/NiloToonURP/Textures/DissolvePattern.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4a85636614f4d2d42ad5375e8ac3893d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Textures/DissolvePattern/DissolvePattern_Pattern01.png b/Assets/External/NiloToonURP/Textures/DissolvePattern/DissolvePattern_Pattern01.png new file mode 100644 index 00000000..f943161d --- /dev/null +++ b/Assets/External/NiloToonURP/Textures/DissolvePattern/DissolvePattern_Pattern01.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:848cc1f4cee627906d4ce7ca3edcca72d15712568c9ff486fb4734ee4a3b85e2 +size 446233 diff --git a/Assets/External/NiloToonURP/Textures/DissolvePattern/DissolvePattern_Pattern01.png.meta b/Assets/External/NiloToonURP/Textures/DissolvePattern/DissolvePattern_Pattern01.png.meta new file mode 100644 index 00000000..18527a7d --- /dev/null +++ b/Assets/External/NiloToonURP/Textures/DissolvePattern/DissolvePattern_Pattern01.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 54b42a48abaee614086743c8c1c8b50a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 2 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Textures/DissolveThreshold.meta b/Assets/External/NiloToonURP/Textures/DissolveThreshold.meta new file mode 100644 index 00000000..1ef172f1 --- /dev/null +++ b/Assets/External/NiloToonURP/Textures/DissolveThreshold.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9101d60f4bb1c7e4e96932a9a9c11810 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Textures/DissolveThreshold/DissolveThreshold_BottomToTop.png b/Assets/External/NiloToonURP/Textures/DissolveThreshold/DissolveThreshold_BottomToTop.png new file mode 100644 index 00000000..38867866 --- /dev/null +++ b/Assets/External/NiloToonURP/Textures/DissolveThreshold/DissolveThreshold_BottomToTop.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:926cac38009f226f52d2dda9284323019f12a6da502cf6c9427a11aba2207eb7 +size 5436 diff --git a/Assets/External/NiloToonURP/Textures/DissolveThreshold/DissolveThreshold_BottomToTop.png.meta b/Assets/External/NiloToonURP/Textures/DissolveThreshold/DissolveThreshold_BottomToTop.png.meta new file mode 100644 index 00000000..22b83689 --- /dev/null +++ b/Assets/External/NiloToonURP/Textures/DissolveThreshold/DissolveThreshold_BottomToTop.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: ecb70a0e4491c2b4cb068cd624dc3891 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 2 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 32 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/Textures/DissolveThreshold/DissolveThreshold_LeftToRight.png b/Assets/External/NiloToonURP/Textures/DissolveThreshold/DissolveThreshold_LeftToRight.png new file mode 100644 index 00000000..58e49782 --- /dev/null +++ b/Assets/External/NiloToonURP/Textures/DissolveThreshold/DissolveThreshold_LeftToRight.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a6d74f9d86d0bde0e64c8a19d3db64c71514ae1c98f66e5ab319aa8c281d3f3 +size 11943 diff --git a/Assets/External/NiloToonURP/Textures/DissolveThreshold/DissolveThreshold_LeftToRight.png.meta b/Assets/External/NiloToonURP/Textures/DissolveThreshold/DissolveThreshold_LeftToRight.png.meta new file mode 100644 index 00000000..b586177c --- /dev/null +++ b/Assets/External/NiloToonURP/Textures/DissolveThreshold/DissolveThreshold_LeftToRight.png.meta @@ -0,0 +1,147 @@ +fileFormatVersion: 2 +guid: 0746ca37d1bbaac478f88c48cda26121 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 2 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 32 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/NiloToonURP/package.json b/Assets/External/NiloToonURP/package.json index 5488be66..894b063b 100644 --- a/Assets/External/NiloToonURP/package.json +++ b/Assets/External/NiloToonURP/package.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef91d7c8db358b904f5e3128cdba5501725b371966d52553c9b03a834f280e77 -size 828 +oid sha256:fbe3a95d7db8f9a136b0fc919d6f2a766700145246e7bd1197378a076332f69a +size 827 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/LOD0.mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/LOD0.mat index 204b4971..569549ac 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/LOD0.mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/LOD0.mat @@ -128,4 +128,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/LOD1.mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/LOD1.mat index 140225d8..a84d7853 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/LOD1.mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/LOD1.mat @@ -128,4 +128,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/LOD2.mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/LOD2.mat index 1a83981c..08489f16 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/LOD2.mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/LOD2.mat @@ -128,4 +128,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/Lit_Floor.mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/Lit_Floor.mat index a9465395..24edb278 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/Lit_Floor.mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Demo Scenes/Universal Rendering Pipeline/Materials/Lit_Floor.mat @@ -128,4 +128,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Metallic (Alpha).mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Metallic (Alpha).mat index 37461ee9..020a7d62 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Metallic (Alpha).mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Metallic (Alpha).mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Metallic 1.mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Metallic 1.mat index 0e5eb6d0..f088dc35 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Metallic 1.mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Metallic 1.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Metallic.mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Metallic.mat index 60cb7c41..676dc4d3 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Metallic.mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Metallic.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Specular (Alpha).mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Specular (Alpha).mat index fc5f7158..bb72565d 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Specular (Alpha).mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Specular (Alpha).mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Specular.mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Specular.mat index fe18bcb5..854f1ba7 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Specular.mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/PBR/Specular.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Unlit/Debug Depth.mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Unlit/Debug Depth.mat index 27ddec1b..bec08435 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Unlit/Debug Depth.mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Unlit/Debug Depth.mat @@ -113,4 +113,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Unlit/Reflection Only.mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Unlit/Reflection Only.mat index 9dd904b9..d2362e51 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Unlit/Reflection Only.mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Unlit/Reflection Only.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Unlit/Simple Tinted.mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Unlit/Simple Tinted.mat index 9a723cf9..bc1ab946 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Unlit/Simple Tinted.mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Unlit/Simple Tinted.mat @@ -118,4 +118,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Water/Shader Graphs_Water (Advanced).mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Water/Shader Graphs_Water (Advanced).mat index d83a58c8..7418bb8e 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Water/Shader Graphs_Water (Advanced).mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Water/Shader Graphs_Water (Advanced).mat @@ -81,4 +81,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Water/Shader Graphs_Water (No Refraction).mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Water/Shader Graphs_Water (No Refraction).mat index 49e8f118..c74ac0c0 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Water/Shader Graphs_Water (No Refraction).mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Water/Shader Graphs_Water (No Refraction).mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Water/Shader Graphs_Water (Simple).mat b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Water/Shader Graphs_Water (Simple).mat index 8810c6ef..4f20f671 100644 --- a/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Water/Shader Graphs_Water (Simple).mat +++ b/Assets/External/PIDI Game Development Framework/Planar Reflections 5/Universal Rendering Pipeline/Shaders/Water/Shader Graphs_Water (Simple).mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/VolumetricLightBeam/Samples/Materials/geometry_urp.mat b/Assets/External/VolumetricLightBeam/Samples/Materials/geometry_urp.mat index 75aa272c..6c385b3b 100644 --- a/Assets/External/VolumetricLightBeam/Samples/Materials/geometry_urp.mat +++ b/Assets/External/VolumetricLightBeam/Samples/Materials/geometry_urp.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/External/websocket-sharp/websocket-sharp.csproj.meta b/Assets/External/websocket-sharp/websocket-sharp.csproj.meta new file mode 100644 index 00000000..66af5f92 --- /dev/null +++ b/Assets/External/websocket-sharp/websocket-sharp.csproj.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ae0a68acee725e141b02318f249f7990 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Settings/Streamingle Render Pipeline Asset.asset b/Assets/Resources/Settings/Streamingle Render Pipeline Asset.asset index 148e189e..142e0fd4 100644 --- a/Assets/Resources/Settings/Streamingle Render Pipeline Asset.asset +++ b/Assets/Resources/Settings/Streamingle Render Pipeline Asset.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b45c1cfaf0913c3e51e2bee4989ae33ce2fb3c2848b4aba269f4654c466feb23 +oid sha256:a4a413b381f9d59e5557a7606394b3a695482aa270f7f7d0e4c4fc8c8134163b size 4346 diff --git a/Assets/Resources/Settings/UniversalRenderPipelineGlobalSettings.asset b/Assets/Resources/Settings/UniversalRenderPipelineGlobalSettings.asset index 7079b9f3..85e300da 100644 --- a/Assets/Resources/Settings/UniversalRenderPipelineGlobalSettings.asset +++ b/Assets/Resources/Settings/UniversalRenderPipelineGlobalSettings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1a39e1cebcd339098f742c03ee667824e74e54c2dcd082c4e55c33b27a09723b -size 14193 +oid sha256:746c070e75212f44f3c62c913ebd92d871a115d2a21830668b498d26d6905df5 +size 21605 diff --git a/Assets/ResourcesData/Background/250504_HololiveConcert/Default.mat b/Assets/ResourcesData/Background/250504_HololiveConcert/Default.mat index b4e9ab19..c2d9fd34 100644 --- a/Assets/ResourcesData/Background/250504_HololiveConcert/Default.mat +++ b/Assets/ResourcesData/Background/250504_HololiveConcert/Default.mat @@ -135,4 +135,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/250504_HololiveConcert/Frame.mat b/Assets/ResourcesData/Background/250504_HololiveConcert/Frame.mat index e5b9d115..26d40e17 100644 --- a/Assets/ResourcesData/Background/250504_HololiveConcert/Frame.mat +++ b/Assets/ResourcesData/Background/250504_HololiveConcert/Frame.mat @@ -135,4 +135,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/250504_HololiveConcert/LED.mat b/Assets/ResourcesData/Background/250504_HololiveConcert/LED.mat index 88545baa..0a71fc90 100644 --- a/Assets/ResourcesData/Background/250504_HololiveConcert/LED.mat +++ b/Assets/ResourcesData/Background/250504_HololiveConcert/LED.mat @@ -135,4 +135,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/250504_HololiveConcert/Material.001.mat b/Assets/ResourcesData/Background/250504_HololiveConcert/Material.001.mat index afc94a8f..76da7eb6 100644 --- a/Assets/ResourcesData/Background/250504_HololiveConcert/Material.001.mat +++ b/Assets/ResourcesData/Background/250504_HololiveConcert/Material.001.mat @@ -135,4 +135,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/250504_HololiveConcert/Material.mat b/Assets/ResourcesData/Background/250504_HololiveConcert/Material.mat index 1e32ac42..545c4dad 100644 --- a/Assets/ResourcesData/Background/250504_HololiveConcert/Material.mat +++ b/Assets/ResourcesData/Background/250504_HololiveConcert/Material.mat @@ -135,4 +135,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/250504_HololiveConcert/Screen.mat b/Assets/ResourcesData/Background/250504_HololiveConcert/Screen.mat index 78df63a4..f46bf0fd 100644 --- a/Assets/ResourcesData/Background/250504_HololiveConcert/Screen.mat +++ b/Assets/ResourcesData/Background/250504_HololiveConcert/Screen.mat @@ -135,4 +135,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/250504_HololiveConcert/Stage_Bound.mat b/Assets/ResourcesData/Background/250504_HololiveConcert/Stage_Bound.mat index a2303e03..274142da 100644 --- a/Assets/ResourcesData/Background/250504_HololiveConcert/Stage_Bound.mat +++ b/Assets/ResourcesData/Background/250504_HololiveConcert/Stage_Bound.mat @@ -135,4 +135,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/250504_HololiveConcert/X.mat b/Assets/ResourcesData/Background/250504_HololiveConcert/X.mat index ef94ce40..901ab5d0 100644 --- a/Assets/ResourcesData/Background/250504_HololiveConcert/X.mat +++ b/Assets/ResourcesData/Background/250504_HololiveConcert/X.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/[ColorD03].mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/[ColorD03].mat index 92cb92d7..a90ae0a6 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/[ColorD03].mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/[ColorD03].mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/[ColorI07].mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/[ColorI07].mat index a89d660c..49a23e0a 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/[ColorI07].mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/[ColorI07].mat @@ -138,4 +138,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-1.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-1.mat index 82b5a106..74cd5433 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-1.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-1.mat @@ -142,4 +142,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-2.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-2.mat index 8ed79d7c..5303cff0 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-2.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-2.mat @@ -142,4 +142,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-3.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-3.mat index 4c63b986..fdbf5360 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-3.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-3.mat @@ -142,4 +142,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-4.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-4.mat index 4678c303..763b86ae 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-4.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-4.mat @@ -142,4 +142,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-5.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-5.mat index 32f377f3..0c58a94e 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-5.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/f-5.mat @@ -142,4 +142,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/floor.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/floor.mat index adb73550..42e04f2e 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/floor.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/floor.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/g-1.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/g-1.mat index 403bb84d..08e80082 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/g-1.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/g-1.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/g-2.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/g-2.mat index cc2ff1e0..c31f2d84 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/g-2.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/g-2.mat @@ -138,4 +138,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/g-3.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/g-3.mat index 617487ee..70a14212 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/g-3.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/g-3.mat @@ -138,4 +138,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/glass.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/glass.mat index 6cc916d7..0eba6eee 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/glass.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/glass.mat @@ -139,4 +139,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble1.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble1.mat index 496e95b8..bfe37c8c 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble1.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble1.mat @@ -142,4 +142,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble2.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble2.mat index fe343075..b28e0264 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble2.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble2.mat @@ -133,4 +133,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble3.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble3.mat index 2305cdd0..4888eb72 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble3.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble3.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble4.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble4.mat index 76bc5fcb..c5f7cc1e 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble4.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/marble4.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/roof.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/roof.mat index 2966404b..7ee9e506 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/roof.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/roof.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/roof2.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/roof2.mat index f386009d..42091436 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/roof2.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/roof2.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/silver.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/silver.mat index 621694d4..5005365e 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/silver.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/silver.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/stone.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/stone.mat index 839f83f2..6ea7607e 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/stone.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/stone.mat @@ -133,4 +133,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/stone3.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/stone3.mat index 9397cf94..8475cf6c 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/stone3.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/stone3.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/wall.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/wall.mat index 54f2eb86..3e532ab6 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/wall.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/wall.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/window.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/window.mat index 5f6032df..cbc6db36 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/window.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/window.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/wood.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/wood.mat index 8e2139b2..d5119786 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/wood.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/wood.mat @@ -133,4 +133,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/wood1.mat b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/wood1.mat index c50ac76f..5edc3e87 100644 --- a/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/wood1.mat +++ b/Assets/ResourcesData/Background/Cathedral_medieval_Fantastic/Glb/Cathedral_medieval_Fantastic.Materials/wood1.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Dance Practice Room - 아이시아/Glb/IA-Dance Practice Room.Materials/_496.mat b/Assets/ResourcesData/Background/Dance Practice Room - 아이시아/Glb/IA-Dance Practice Room.Materials/_496.mat index f6a32ef3..af5dddf6 100644 --- a/Assets/ResourcesData/Background/Dance Practice Room - 아이시아/Glb/IA-Dance Practice Room.Materials/_496.mat +++ b/Assets/ResourcesData/Background/Dance Practice Room - 아이시아/Glb/IA-Dance Practice Room.Materials/_496.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Prop/Material/RingCon.Materials/mBody.mat b/Assets/ResourcesData/Background/Prop/Material/RingCon.Materials/mBody.mat index 8885a4a1..96a0d181 100644 --- a/Assets/ResourcesData/Background/Prop/Material/RingCon.Materials/mBody.mat +++ b/Assets/ResourcesData/Background/Prop/Material/RingCon.Materials/mBody.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 @@ -29,7 +29,7 @@ Material: - _NORMALMAP m_InvalidKeywords: - _ALPHABLEND_ON - m_LightmapFlags: 0 + m_LightmapFlags: 2 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: 2000 diff --git a/Assets/ResourcesData/Background/White Horizon/Material/Grid.mat b/Assets/ResourcesData/Background/White Horizon/Material/Grid.mat index 3b083d00..3ee9024e 100644 --- a/Assets/ResourcesData/Background/White Horizon/Material/Grid.mat +++ b/Assets/ResourcesData/Background/White Horizon/Material/Grid.mat @@ -135,4 +135,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/White Horizon/Material/White.mat b/Assets/ResourcesData/Background/White Horizon/Material/White.mat index 562959e1..12446338 100644 --- a/Assets/ResourcesData/Background/White Horizon/Material/White.mat +++ b/Assets/ResourcesData/Background/White Horizon/Material/White.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/YAMO_Concert_01/Fbx/Material/MainScreen.mat b/Assets/ResourcesData/Background/YAMO_Concert_01/Fbx/Material/MainScreen.mat index 9835e353..20f956aa 100644 --- a/Assets/ResourcesData/Background/YAMO_Concert_01/Fbx/Material/MainScreen.mat +++ b/Assets/ResourcesData/Background/YAMO_Concert_01/Fbx/Material/MainScreen.mat @@ -258,4 +258,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/YAMO_Concert_01/Fbx/Material/Side Screen_.mat b/Assets/ResourcesData/Background/YAMO_Concert_01/Fbx/Material/Side Screen_.mat index 1a21ee39..72e9c1ea 100644 --- a/Assets/ResourcesData/Background/YAMO_Concert_01/Fbx/Material/Side Screen_.mat +++ b/Assets/ResourcesData/Background/YAMO_Concert_01/Fbx/Material/Side Screen_.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/YAMO_Concert_01/Fbx/Material/Stage Floor.mat b/Assets/ResourcesData/Background/YAMO_Concert_01/Fbx/Material/Stage Floor.mat index cefebaa0..74fcdd0f 100644 --- a/Assets/ResourcesData/Background/YAMO_Concert_01/Fbx/Material/Stage Floor.mat +++ b/Assets/ResourcesData/Background/YAMO_Concert_01/Fbx/Material/Stage Floor.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Base.mat b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Base.mat index 57368da8..bcf5e1c9 100644 --- a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Base.mat +++ b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Base.mat @@ -135,4 +135,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Luz1.mat b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Luz1.mat index 36ab0f83..9deca5a0 100644 --- a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Luz1.mat +++ b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Luz1.mat @@ -14,7 +14,7 @@ Material: m_ValidKeywords: - _EMISSION m_InvalidKeywords: [] - m_LightmapFlags: 1 + m_LightmapFlags: 3 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 @@ -136,4 +136,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Material.001.mat b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Material.001.mat index 2db2eafa..cdf5635b 100644 --- a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Material.001.mat +++ b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Material.001.mat @@ -135,4 +135,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Material.002.mat b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Material.002.mat index 627de54e..92b8b046 100644 --- a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Material.002.mat +++ b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Material.002.mat @@ -135,4 +135,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Material.003.mat b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Material.003.mat index a71e5568..842ef9b9 100644 --- a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Material.003.mat +++ b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Material.003.mat @@ -139,4 +139,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Parafuso.mat b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Parafuso.mat index ee35d795..b93b141f 100644 --- a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Parafuso.mat +++ b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Parafuso.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Stage.mat b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Stage.mat index 008578ed..fb6a2f16 100644 --- a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Stage.mat +++ b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/Stage.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/lambert1.mat b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/lambert1.mat index c0066611..81d96a7f 100644 --- a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/lambert1.mat +++ b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/lambert1.mat @@ -135,4 +135,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/material.mat b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/material.mat index 9d726686..87f0b0a6 100644 --- a/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/material.mat +++ b/Assets/ResourcesData/Background/Yamo_Edu_Stage/Material/material.mat @@ -135,4 +135,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.023.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.023.mat index 792da081..50cc02fb 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.023.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.023.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.024.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.024.mat index fbcf0dc5..940d010e 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.024.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.024.mat @@ -11,8 +11,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.049.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.049.mat index c5d873bc..4f1cb2c0 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.049.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.049.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.056.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.056.mat index cc977831..08243220 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.056.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.056.mat @@ -11,8 +11,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_0.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_0.mat index 5308ec78..76af1092 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_0.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_0.mat @@ -11,8 +11,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_10.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_10.mat index fdc8fc29..e1e21f8c 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_10.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_10.mat @@ -11,8 +11,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_11.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_11.mat index 59a19014..801c3007 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_11.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_11.mat @@ -11,8 +11,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_15.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_15.mat index aa244c35..a6b16fa5 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_15.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_15.mat @@ -11,8 +11,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_17.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_17.mat index 48e7653b..d688c58f 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_17.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_17.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_18.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_18.mat index 5cc77407..5972442c 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_18.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_18.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_19.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_19.mat index 4dbc7167..eb7aa776 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_19.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_19.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_20.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_20.mat index 6893d4b7..1e3041ce 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_20.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_20.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_24.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_24.mat index 8ac8f2ca..77ed2ef5 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_24.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_24.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_27.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_27.mat index 1ab7ee62..a21a2276 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_27.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_27.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_30.001.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_30.001.mat index 660cc943..7a7479c7 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_30.001.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_30.001.mat @@ -11,8 +11,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_30.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_30.mat index 64a8528c..fa15840a 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_30.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_30.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_32.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_32.mat index 4596f5ce..b1585f31 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_32.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_32.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_33.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_33.mat index 2b725ed0..7dcbcf56 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_33.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_33.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_34.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_34.mat index 08ab3148..f3da1254 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_34.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_34.mat @@ -11,8 +11,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_35.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_35.mat index b1c84dbe..827af46f 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_35.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_35.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_36.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_36.mat index ac4d9b96..2d0ce872 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_36.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_36.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_37.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_37.mat index 6e06aadb..ea8a2082 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_37.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_37.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_38.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_38.mat index e05d6472..483fb3f7 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_38.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_38.mat @@ -11,8 +11,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_39.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_39.mat index 37889d12..5a8357c7 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_39.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_39.mat @@ -11,8 +11,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_4.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_4.mat index 1f1efbac..6be07dfc 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_4.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_4.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_6.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_6.mat index 4fde1761..6fb4d561 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_6.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_6.mat @@ -11,8 +11,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_9.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_9.mat index cea16bdb..d90c7c8a 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_9.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.074_9.mat @@ -11,8 +11,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.077.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.077.mat index 0c45b844..b8734011 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.077.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.077.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.082.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.082.mat index 8c411b8b..940cf8bc 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.082.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.082.mat @@ -11,8 +11,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.104.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.104.mat index 550a1e8b..860d465a 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.104.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Material.104.mat @@ -11,8 +11,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Tasten_2.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Tasten_2.mat index e5c28a4e..8776df68 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Tasten_2.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/Tasten_2.mat @@ -24,8 +24,7 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: - - _EMISSION + m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 0 m_EnableInstancingVariants: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/WOOD-2.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/WOOD-2.mat index 3154dcb1..3d487f45 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/WOOD-2.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/WOOD-2.mat @@ -28,7 +28,7 @@ Material: m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 + m_DoubleSidedGI: 1 m_CustomRenderQueue: -1 stringTagMap: RenderType: Opaque @@ -161,7 +161,7 @@ Material: - _ClearCoat: 0 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 - - _Cull: 2 + - _Cull: 0 - _Cutoff: 0.5 - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_.mat index fe93ead1..b9f7e97d 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_.mat @@ -11,15 +11,19 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: [] + m_ValidKeywords: + - _ALPHAPREMULTIPLY_ON + - _SURFACE_TYPE_TRANSPARENT m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 + m_CustomRenderQueue: 3000 stringTagMap: - RenderType: Opaque - disabledShaderPasses: [] + RenderType: Transparent + disabledShaderPasses: + - DepthOnly + - SHADOWCASTER m_LockedProperties: m_SavedProperties: serializedVersion: 3 @@ -152,20 +156,20 @@ Material: - _Cutoff: 0.5 - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _DstBlendAlpha: 0 + - _DstBlend: 10 + - _DstBlendAlpha: 10 - _EnvironmentReflections: 1 - _GlossMapScale: 0 - _Glossiness: 0 - _GlossyReflections: 0 - - _Metallic: 0 + - _Metallic: 0.347 - _OcclusionStrength: 1 - _Parallax: 0.005 - _QueueOffset: 0 - _ReceiveShadows: 1 - _ScreenSpaceOutlineIntensity: 1 - _ScreenSpaceOutlineWidth: 1 - - _Smoothness: 0 + - _Smoothness: 1 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SplatAlbedoMapATiling: 1 @@ -188,12 +192,12 @@ Material: - _SplatSmoothnessMultiplierR: 1 - _SrcBlend: 1 - _SrcBlendAlpha: 1 - - _Surface: 0 + - _Surface: 1 - _WorkflowMode: 1 - _XRMotionVectorsPass: 1 - - _ZWrite: 1 + - _ZWrite: 0 m_Colors: - - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BaseColor: {r: 1, g: 1, b: 1, a: 0.27058825} - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _ScreenSpaceOutlineColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_A05_52.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_A05_52.mat index 744fe7a1..b28af4c3 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_A05_52.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_A05_52.mat @@ -11,14 +11,15 @@ Material: m_Shader: {fileID: 4800000, guid: 50e19b7c9fbe3324e978246ad9789e96, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 - m_ValidKeywords: [] + m_ValidKeywords: + - _ALPHATEST_ON m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 + m_DoubleSidedGI: 1 + m_CustomRenderQueue: 2450 stringTagMap: - RenderType: Opaque + RenderType: TransparentCutout disabledShaderPasses: [] m_LockedProperties: m_SavedProperties: @@ -139,8 +140,8 @@ Material: m_Ints: [] m_Floats: - _AddPrecomputedVelocity: 0 - - _AlphaClip: 0 - - _AlphaToMask: 0 + - _AlphaClip: 1 + - _AlphaToMask: 1 - _Blend: 0 - _BlendModePreserveSpecular: 1 - _BlendOp: 0 @@ -148,7 +149,7 @@ Material: - _ClearCoat: 0 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 - - _Cull: 2 + - _Cull: 0 - _Cutoff: 0.5 - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_A05_56.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_A05_56.mat index 6bf12fdf..49848c9f 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_A05_56.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_A05_56.mat @@ -171,14 +171,14 @@ Material: - _GlossMapScale: 0 - _Glossiness: 0 - _GlossyReflections: 0 - - _Metallic: 0 + - _Metallic: 0.482 - _OcclusionStrength: 1 - _Parallax: 0.005 - _QueueOffset: 0 - _ReceiveShadows: 1 - _ScreenSpaceOutlineIntensity: 1 - _ScreenSpaceOutlineWidth: 1 - - _Smoothness: 0 + - _Smoothness: 1 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SplatAlbedoMapATiling: 1 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_A05_61 1.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_A05_61 1.mat index 924ecd69..7a1451b8 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_A05_61 1.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_A05_61 1.mat @@ -164,7 +164,7 @@ Material: - _GlossMapScale: 0 - _Glossiness: 0 - _GlossyReflections: 0 - - _Metallic: 0.771 + - _Metallic: 0.694 - _OcclusionStrength: 1 - _Parallax: 0.005 - _QueueControl: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_B02_4.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_B02_4.mat index 0b170def..f82f8c86 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_B02_4.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_B02_4.mat @@ -158,14 +158,14 @@ Material: - _GlossMapScale: 0 - _Glossiness: 0 - _GlossyReflections: 0 - - _Metallic: 0 + - _Metallic: 0.045 - _OcclusionStrength: 1 - _Parallax: 0.005 - _QueueOffset: 0 - _ReceiveShadows: 1 - _ScreenSpaceOutlineIntensity: 1 - _ScreenSpaceOutlineWidth: 1 - - _Smoothness: 0 + - _Smoothness: 0.945 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SplatAlbedoMapATiling: 1 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_D04_.mat b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_D04_.mat index 11a0354b..b5bb8640 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_D04_.mat +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Glb/첸나 방송 방 배경.Materials/_Color_D04_.mat @@ -15,7 +15,7 @@ Material: m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 + m_DoubleSidedGI: 1 m_CustomRenderQueue: -1 stringTagMap: RenderType: Opaque @@ -148,7 +148,7 @@ Material: - _ClearCoat: 0 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 - - _Cull: 2 + - _Cull: 0 - _Cutoff: 0.5 - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방.unity b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방.unity index 23257a99..07d8c9d9 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방.unity +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b62dae084c73bfb8e3fc0d30e2063c488ebeab6575e0fc80064f1bd316457d23 -size 217165 +oid sha256:32b3085a1b04b3c8a66a7849d4ce25b353e9d1ffbb623e790ba16e139b7f7b24 +size 264 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/LightingData.asset b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/LightingData.asset index c4c029a7..aea881d5 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/LightingData.asset +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/LightingData.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8aaf12908ac6ff254228cf37d6909d57ee3133a493f528c92c12d5bdf805789c -size 88449 +oid sha256:581f77b44a0a00108f6f93ca092e9ecd681cdcb15be892e521b4f4f577a9f27e +size 88769 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_dir.png b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_dir.png index afafe30e..59959c04 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_dir.png +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_dir.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f2a97b75588f9861cb8e0a0c2c91d0e23cea66017dc8684418f4f72e6a4e512 -size 1110889 +oid sha256:a0592d2365b355fea0891c41f4a687f5938a9d76111ffa78de9a6b921e9b6ecf +size 1073266 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_dir.png.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_dir.png.meta index 8bf698e3..a52b7988 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_dir.png.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_dir.png.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_light.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_light.exr index c670ba2e..0e180bf1 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_light.exr +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_light.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:199daa5adb6b980a651b996248d76d931be37a7cfb5c6d5a2fb50397cb7be66a -size 9372379 +oid sha256:565d82f34a6eae1a9aabb455e7dfdb1b5f7224046e3d63d334dba260b88fe8f7 +size 9101995 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_light.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_light.exr.meta index 04361e8b..1f5c7662 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_light.exr.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-0_comp_light.exr.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_dir.png b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_dir.png index aa406771..bf207353 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_dir.png +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_dir.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:507f4f4ccc2de98bc9548ca680a7c9ced14dc6f573eeb1f7dc4c13ac24ad6498 -size 179934 +oid sha256:f045a5caf3438fcaab7ccf33783d7f9e47c1c326195b73367ffe5968293c7ceb +size 180859 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_dir.png.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_dir.png.meta index 0267e25d..a12a82e1 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_dir.png.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_dir.png.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_light.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_light.exr index 6be02041..7f06bbd0 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_light.exr +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_light.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:377e815e6d3fb4762fe6130990a478da1cc382749c46630c65e20becca74a879 -size 3019584 +oid sha256:964a2dbf6fe7c821dc8493db1e56fae7cf12d202edaba079e88b378a80e86217 +size 2713993 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_light.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_light.exr.meta index 262d7afd..23b3c46a 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_light.exr.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-10_comp_light.exr.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-11_comp_dir.png b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-11_comp_dir.png new file mode 100644 index 00000000..35589233 --- /dev/null +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-11_comp_dir.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:644525f79d2ab5f75f05e69cbe362d65ca41bc241818a03d03321a65a0adaf4b +size 229207 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-11_comp_dir.png.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-11_comp_dir.png.meta new file mode 100644 index 00000000..2cf4f97d --- /dev/null +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-11_comp_dir.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 5dc1e451186b9fc4f87671a054f45863 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 1 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 3 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 12 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-11_comp_light.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-11_comp_light.exr new file mode 100644 index 00000000..1f39a9bd --- /dev/null +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-11_comp_light.exr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1909d5f6afcf35315571922aeccca70f94f7b19aed25114386b4c84b88bd2267 +size 3251606 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-11_comp_light.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-11_comp_light.exr.meta new file mode 100644 index 00000000..c30d3192 --- /dev/null +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-11_comp_light.exr.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 90fbf66542b933d4c957198b02a812f8 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 1 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 3 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 6 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-12_comp_dir.png b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-12_comp_dir.png new file mode 100644 index 00000000..bb5c535f --- /dev/null +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-12_comp_dir.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b71e92f1f93b946f1193f8a8c8a61e618d486d71b3da19fc15d2e16f7da60ec3 +size 206010 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-12_comp_dir.png.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-12_comp_dir.png.meta new file mode 100644 index 00000000..52c566a0 --- /dev/null +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-12_comp_dir.png.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: fbd330f524ff26e4bb85f006a3d8b320 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 0 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 1 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 3 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 12 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-12_comp_light.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-12_comp_light.exr new file mode 100644 index 00000000..7895aae3 --- /dev/null +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-12_comp_light.exr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90dd1e54d62f3d8ef0261ff225e3c8d1c6221ed5b327eed2b3b5d878ec17f040 +size 3396482 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-12_comp_light.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-12_comp_light.exr.meta new file mode 100644 index 00000000..7f569421 --- /dev/null +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-12_comp_light.exr.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: 2021fe0efa907a8469bc716126fe5df6 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 1 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 3 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 0 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 6 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_dir.png b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_dir.png index e8f8cdba..0602aa06 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_dir.png +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_dir.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e30954577f44456ea5ace5b9a0a5c38d3e120461d733f2c7fa4cb2b8aaf7a89a -size 796849 +oid sha256:2a691193bd48a46748edbb51db83b14cd90727e355589de75b6fd996d6fa2be2 +size 764564 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_dir.png.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_dir.png.meta index 4e6c5151..85767409 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_dir.png.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_dir.png.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_light.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_light.exr index 7d224e1b..6a059471 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_light.exr +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_light.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73b08a6e12223f0294cf321f916f1aa31d112792953eccd535a9eae617dfb818 -size 7911807 +oid sha256:a0b872bb1c9f6fbfffb145c748b8ca6ea39a33f52a72262b389506091ba73319 +size 7284833 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_light.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_light.exr.meta index 48b97200..d8954b79 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_light.exr.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-1_comp_light.exr.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_dir.png b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_dir.png index 16594dff..67b57845 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_dir.png +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_dir.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:99a13bbae66a18ae22f443bc275827991224d76553daacf4e8582934fc0bee9a -size 665788 +oid sha256:f16cfabb4aea83160ca65206a2cb2bf79f594aebfb2743d61065d4d9b54ba01c +size 789908 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_dir.png.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_dir.png.meta index a007c214..12a35858 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_dir.png.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_dir.png.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_light.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_light.exr index 8643c049..7b2bdbea 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_light.exr +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_light.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31012eea90383acf4f41f2911aac8888f45bd3863a70d196074da0651bc9be99 -size 7454880 +oid sha256:78d7d27da8eb34f20eb9435a08de296f056615f0e7608b138940a0508340c467 +size 8187778 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_light.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_light.exr.meta index cdab436f..f7f6bf20 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_light.exr.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-2_comp_light.exr.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_dir.png b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_dir.png index 35292b5c..553920bd 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_dir.png +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_dir.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d00352902d30afdc6f1b8862d7ed83f5f0bedbd10421a3eb3a7b1248d04ddf44 -size 1076002 +oid sha256:07184a8d6ffb02b2dae221b1091e01964435ca9099cb8aec73df2095804458d5 +size 972253 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_dir.png.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_dir.png.meta index aa0616da..19d93831 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_dir.png.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_dir.png.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_light.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_light.exr index f3d9386b..fb9e9870 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_light.exr +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_light.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a40bceb4fe8b8032a2ec5e20e6878afbc83edaf2ce13fe7ebdb16f2daac51ecb -size 8564815 +oid sha256:325f24c270bb13cf5c0bb33fe08261cf681400f76ea7dd4a85e3e59f9212095b +size 8189700 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_light.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_light.exr.meta index 9b8ed2b6..f6c38eb1 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_light.exr.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-3_comp_light.exr.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_dir.png b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_dir.png index 1a4aeb50..e31f8266 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_dir.png +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_dir.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:87b6fe25cae6070ed123e146e7cba291336d6f04facc0565d981827f83abebbc -size 598074 +oid sha256:d2c18629eb14065cbb1a53781991061c665785753eecbda361a152639a01af7b +size 660848 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_dir.png.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_dir.png.meta index 8f64a7d3..e2406c6b 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_dir.png.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_dir.png.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_light.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_light.exr index ec72a894..5965d9a7 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_light.exr +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_light.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5251cbd50f5ebef395c0fe7aa5824b9946054838f53931e0c2f970dca491f6bb -size 5576020 +oid sha256:dc1c8b346098eadbf73e0a73fff0a298561b3dde9fbe79ed7d833d307016364c +size 6509950 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_light.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_light.exr.meta index 8f2bc5d9..f372002e 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_light.exr.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-4_comp_light.exr.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_dir.png b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_dir.png index 80fc6f23..7b13e393 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_dir.png +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_dir.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e06703672a977fe70f9884239e93d3d834cb7b58961875d9e42e1fa586eea68 -size 502915 +oid sha256:6473d8c2e4df6cf0f52b26f83b0a3a633906a6e154c8384325832cfd6fcabbcc +size 705889 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_dir.png.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_dir.png.meta index 34e91a85..61557637 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_dir.png.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_dir.png.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_light.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_light.exr index 1549fb6a..1f4484b9 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_light.exr +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_light.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:925af02ced3209d984bb04068a7e3dfb0f8ba8b77ca40198238e0b4b72087974 -size 5938231 +oid sha256:ca20b14480c26f9724006726cca704a6bac06303bca32ebc82f782d4662504bf +size 7178718 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_light.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_light.exr.meta index 7e4dfd96..5b274cd5 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_light.exr.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-5_comp_light.exr.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_dir.png b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_dir.png index dca38fc1..fe658407 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_dir.png +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_dir.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff0871b0e7ba5bc2c10f35f3a115924f574e85372323da56cbda575204102979 -size 455527 +oid sha256:814a8aff145ddcd98fd75024a3e466c281b2045112655af58b2d0e35a1ea87fc +size 768585 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_dir.png.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_dir.png.meta index e887c205..4140eb8f 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_dir.png.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_dir.png.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_light.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_light.exr index cd2f3f73..aef2eb15 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_light.exr +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_light.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad0cd5739db9955e8535eb7c1fe8b47913a84b6842da54486e178f95a656d6f4 -size 6057918 +oid sha256:d3518057966b106f4f77199044a216abf1c47a05da78082fa7973b3f475b2b00 +size 7117731 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_light.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_light.exr.meta index 398e4fc2..8801bcfe 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_light.exr.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-6_comp_light.exr.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_dir.png b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_dir.png index ef0ed983..0a5d96c6 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_dir.png +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_dir.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e2b62595b7c5d46717eea0526bee4496029ef22d0c87bbd182ea925df475528 -size 399499 +oid sha256:d5739159fb00f17012f8fdc7de5f9ac2f7592d48de2d111c31905ddf64208ff8 +size 614732 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_dir.png.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_dir.png.meta index bc937a5c..8e2258e7 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_dir.png.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_dir.png.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_light.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_light.exr index ff87dd7b..e2105896 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_light.exr +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_light.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7bd3bd66b7e804b5025d27c3fe908dbb72e41bccf5ca99fac622142980f2005d -size 6604941 +oid sha256:d8d3491e091aec299f82a720b3402a99659cd25ec3bf6416a00f9ea0cd143081 +size 5849284 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_light.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_light.exr.meta index d728ddfc..0bd6eccd 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_light.exr.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-7_comp_light.exr.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_dir.png b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_dir.png index 08cb6564..efc8af1a 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_dir.png +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_dir.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:869866eeedfa051f0d306eddeb04289eb132e858cc637fe281a092b3a1c1c4c5 -size 177344 +oid sha256:61936d06e95ca133b6643beb9597bfe1add8362823cf14563d3406bb78e21409 +size 441910 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_dir.png.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_dir.png.meta index e5f0a34c..624465b7 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_dir.png.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_dir.png.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_light.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_light.exr index 74e755df..62fd822c 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_light.exr +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_light.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5ddd8afe50db101f95852fd326f5b32a4e4f5ab6a6f5f10d0db0ed794ae15b4 -size 2775806 +oid sha256:f9fb2febb6109b1c24e03cfbba3c78486f3e9878c7e78e4e3bc48b2718a1cd4b +size 5618796 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_light.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_light.exr.meta index d532f324..d2fd8300 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_light.exr.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-8_comp_light.exr.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_dir.png b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_dir.png index 86ca5d65..ff07f781 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_dir.png +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_dir.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43168dea034467f38740452db7a3f9eba762f010cc0703be245c19fd750a9fd8 -size 218022 +oid sha256:a19f4dfe8d7c5773e3b9cb65c1a45cfb1ebb5807ffd966a4738a76bde0600313 +size 452013 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_dir.png.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_dir.png.meta index ddd1f508..ff791b71 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_dir.png.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_dir.png.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_light.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_light.exr index 1d538328..f3ba07bb 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_light.exr +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_light.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d42b5ca52cf91eeaa2717f5528e548c469a0f5cfc61aa6eaf025830cc271ea48 -size 3303467 +oid sha256:ae254c57ad80c768082f84c0b27f70b19d86a7803957ea25c6371a70b57c25b3 +size 6844019 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_light.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_light.exr.meta index ebe3d8ed..aeaf9e23 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_light.exr.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/Lightmap-9_comp_light.exr.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-0.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-0.exr index 3cbf41ac..6cec8130 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-0.exr +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-0.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fec047715601ca16eaaeea1aab2ec515e7e456f64a282060513c263d71690a72 -size 4921145 +oid sha256:7d4ebbaf90968c096075f2cb5979acc442b03b35e7b75578c388c2c8dfacd0cf +size 4460680 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-0.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-0.exr.meta index ca67fa83..0785964b 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-0.exr.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-0.exr.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-1.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-1.exr index 802fd029..c1cd3ddb 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-1.exr +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-1.exr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1621f95dab8b1c321b6dfb0a5c00226fbae459608cc6895e12e250aa21e0c9e -size 5147623 +oid sha256:e1df1692bb2eda7a19f304eca3e0f963fa83396b9872fd847ec7bd9faaa824f2 +size 4941566 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-1.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-1.exr.meta index 473558c0..c65dca7e 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-1.exr.meta +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-1.exr.meta @@ -107,6 +107,8 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + spriteCustomMetadata: + entries: [] nameFileIdTable: {} mipmapLimitGroupName: pSDRemoveMatte: 0 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-2.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-2.exr new file mode 100644 index 00000000..59ac8775 --- /dev/null +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-2.exr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dd03f8569e4b0d4d2eb6549ac893b86b686492e4a6936778ad0b7800fc7ed52 +size 4593726 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-2.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-2.exr.meta new file mode 100644 index 00000000..7fb29752 --- /dev/null +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-2.exr.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: b626a8812938dc947921397a1a35f280 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 1 + seamlessCubemap: 1 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 0 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 2 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-3.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-3.exr new file mode 100644 index 00000000..324dcac4 --- /dev/null +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-3.exr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dc518306f88f6755b89f2fe3075088b7e34f6b894ce560af08841651c84e6ba +size 5148305 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-3.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-3.exr.meta new file mode 100644 index 00000000..f57a9019 --- /dev/null +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-3.exr.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: da158cbec2aca6e4683ad2c0c514da17 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 1 + seamlessCubemap: 1 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 0 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 2 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-4.exr b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-4.exr new file mode 100644 index 00000000..6cec8130 --- /dev/null +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-4.exr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d4ebbaf90968c096075f2cb5979acc442b03b35e7b75578c388c2c8dfacd0cf +size 4460680 diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-4.exr.meta b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-4.exr.meta new file mode 100644 index 00000000..1f6f93d5 --- /dev/null +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/ReflectionProbe-4.exr.meta @@ -0,0 +1,117 @@ +fileFormatVersion: 2 +guid: e5cf20be179bc1346a3f6bae06390fc2 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 1 + seamlessCubemap: 1 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 0 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 2 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 100 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/[첸나]방송용 방 Baking Set.asset b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/[첸나]방송용 방 Baking Set.asset index 481b3fad..d5b4aeac 100644 --- a/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/[첸나]방송용 방 Baking Set.asset +++ b/Assets/ResourcesData/Background/[첸나]방송용 방/Scene/[첸나]방송용 방/[첸나]방송용 방 Baking Set.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1bdb467bc77788b7b54edb5099bb290753e8ce42067d365db4f08fbfd927bc5 -size 10062 +oid sha256:f4eae325c7f2feb29be0acd03d3cdfd062b00ea76ac30dc2bac216b81ef05ef6 +size 10607 diff --git a/Packages/manifest.json b/Packages/manifest.json index e066d512..f42ca0e1 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:85dde36fd47a8dac79533fbb5f108d18febd262b788602f093f815e16708b267 -size 2567 +oid sha256:82db22723c6a76dffd87cda48fb8278c4686913a191301c9f8d71844db7d1d95 +size 2613 diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 78c95936..1cd6b549 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a94c304c8935196c9a1c81912cbb008c741980f2cec863f0af9ce93ddfd70a65 -size 15674 +oid sha256:5f0885d9201efcc7356f702a6eafbc4c65d787e6d68267347d6f314d405fc07c +size 15792 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index e4ec5831..63264c69 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f78f9733fdc457eda19c01f0c7c404006a6bf7e875608f740f71d62bf3ca530e -size 83 +oid sha256:9f5160cf914f94162e015cd44cb18c354b41ba5d3de8e82fd76cb2189ea51da7 +size 85 diff --git a/ProjectSettings/ShaderGraphSettings.asset b/ProjectSettings/ShaderGraphSettings.asset index 62cf15df..30d0e441 100644 --- a/ProjectSettings/ShaderGraphSettings.asset +++ b/ProjectSettings/ShaderGraphSettings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:773803237466ffe9bbfed9ecef9bbe25f63196dd47ab6b3003f0cd1649fd2bd0 -size 524 +oid sha256:cdba1e5d65bcf6e3269d76ed3e60b6c21f98322002996642c9d74f1eb89f6b91 +size 556 diff --git a/ProjectSettings/URPProjectSettings.asset b/ProjectSettings/URPProjectSettings.asset index 2572cd60..26ae555a 100644 --- a/ProjectSettings/URPProjectSettings.asset +++ b/ProjectSettings/URPProjectSettings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3a626cb529ccfc0a82e388b8cd32bc60888f7226c33412fad3bc50aba802cd7 -size 410 +oid sha256:596d5c8bf4f957b03684c949bebc252ae1918f25415a1147a00684c4b086efda +size 411 diff --git a/RemoteMotionCapture/Documentation/PROJECT_ROADMAP.md b/RemoteMotionCapture/Documentation/PROJECT_ROADMAP.md new file mode 100644 index 00000000..9a7488d2 --- /dev/null +++ b/RemoteMotionCapture/Documentation/PROJECT_ROADMAP.md @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb88666040e519fce4bcc21d2eda4b85ea636e0a60e3e0fd78ef32fc423e404a +size 7960 diff --git a/RemoteMotionCapture/Documentation/TECHNICAL_SPECIFICATIONS.md b/RemoteMotionCapture/Documentation/TECHNICAL_SPECIFICATIONS.md new file mode 100644 index 00000000..b1f1cd4f --- /dev/null +++ b/RemoteMotionCapture/Documentation/TECHNICAL_SPECIFICATIONS.md @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3639cc6de7a3c8a3b30fc0bd26b49a7f9535e77452d22841116f17021964db4 +size 13101 diff --git a/RemoteMotionCapture/README.md b/RemoteMotionCapture/README.md new file mode 100644 index 00000000..06d7a7f4 --- /dev/null +++ b/RemoteMotionCapture/README.md @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9b55e0685b4517e56624aacc391874e53f3265e8edd2d836cdc3afb5025d20a +size 6440 diff --git a/RemoteMotionCapture/Unity/README.md b/RemoteMotionCapture/Unity/README.md new file mode 100644 index 00000000..9c6350a9 --- /dev/null +++ b/RemoteMotionCapture/Unity/README.md @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2873f191e2900f207085439271abf53592e83984e61c6a69bc90ef0975de70f5 +size 1223 diff --git a/RemoteMotionCapture/WebClient/README.md b/RemoteMotionCapture/WebClient/README.md new file mode 100644 index 00000000..df26a91a --- /dev/null +++ b/RemoteMotionCapture/WebClient/README.md @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbd6387942f986d914eceb52abca2493adbdb868e3fb81474cec2830a9195b2f +size 2017