summaryrefslogtreecommitdiff
path: root/VRCSDK3Worlds/Assets/Bakery/ftGlobalStorage.cs
diff options
context:
space:
mode:
authortylermurphy534 <tylermurphy534@gmail.com>2022-11-06 15:12:42 -0500
committertylermurphy534 <tylermurphy534@gmail.com>2022-11-06 15:12:42 -0500
commiteb84bb298d2b95aec7b2ae12cbf25ac64f25379a (patch)
treeefd616a157df06ab661c6d56651853431ac6b08b /VRCSDK3Worlds/Assets/Bakery/ftGlobalStorage.cs
downloadunityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.tar.gz
unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.tar.bz2
unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.zip
move to self host
Diffstat (limited to 'VRCSDK3Worlds/Assets/Bakery/ftGlobalStorage.cs')
-rw-r--r--VRCSDK3Worlds/Assets/Bakery/ftGlobalStorage.cs399
1 files changed, 399 insertions, 0 deletions
diff --git a/VRCSDK3Worlds/Assets/Bakery/ftGlobalStorage.cs b/VRCSDK3Worlds/Assets/Bakery/ftGlobalStorage.cs
new file mode 100644
index 00000000..39a5c178
--- /dev/null
+++ b/VRCSDK3Worlds/Assets/Bakery/ftGlobalStorage.cs
@@ -0,0 +1,399 @@
+using UnityEngine;
+using System.Collections.Generic;
+
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+
+public class ftGlobalStorage : ScriptableObject
+{
+
+#if UNITY_EDITOR
+
+ [System.Serializable]
+ public struct AdjustedMesh
+ {
+ //[SerializeField]
+ //public string assetPath;
+
+ [SerializeField]
+ public List<string> meshName;
+
+ [SerializeField]
+ public List<int> padding;
+
+ [SerializeField]
+ public List<int> unwrapper;
+ };
+
+ [System.Serializable]
+ public enum Unwrapper
+ {
+ Default,
+ xatlas
+ };
+
+ [System.Serializable]
+ public enum AtlasPacker
+ {
+ Default,
+ xatlas
+ }
+
+ [System.Serializable]
+ public enum DenoiserType
+ {
+ Optix5 = 5, // "Legacy denoiser"
+ Optix6 = 6, // Default denoiser
+ Optix7 = 7, // New denoiser
+ OpenImageDenoise = 100
+ };
+
+ // UV adjustment
+
+ [SerializeField]
+ public List<string> modifiedAssetPathList = new List<string>();
+
+ [SerializeField]
+ public List<int> modifiedAssetPaddingHash = new List<int>();
+
+ // Legacy
+ [SerializeField]
+ public List<Mesh> modifiedMeshList = new List<Mesh>();
+ [SerializeField]
+ public List<int> modifiedMeshPaddingList = new List<int>();
+
+ [SerializeField]
+ public List<AdjustedMesh> modifiedAssets = new List<AdjustedMesh>();
+
+ // UV overlap marks
+
+ [SerializeField]
+ public List<string> assetList = new List<string>();
+
+ [SerializeField]
+ public List<int> uvOverlapAssetList = new List<int>(); // -1 = no UV1, 0 = no overlap, 1 = overlap
+
+ [SerializeField]
+ public bool xatlasWarningShown = false;
+
+ [SerializeField]
+ public bool foundCompatibleSetup = false;
+
+ [SerializeField]
+ public string gpuName = "";
+
+ [SerializeField]
+ public bool runsNonRTX = true;
+
+ [SerializeField]
+ public bool runsOptix5 = true;
+
+ [SerializeField]
+ public bool runsOptix6 = true;
+
+ [SerializeField]
+ public bool runsOptix7 = true;
+
+ [SerializeField]
+ public bool runsOIDN = true;
+
+ [SerializeField]
+ public bool alwaysEnableRTX = false;
+
+ [SerializeField]
+ public bool checkerPreviewOn = false;
+
+ [SerializeField]
+ public bool rtSceneViewPreviewOn = false;
+
+ // Defaults
+ [SerializeField]
+ public int renderSettingsBounces = 5;
+ [SerializeField]
+ public int renderSettingsGISamples = 16;
+ [SerializeField]
+ public float renderSettingsGIBackFaceWeight = 0;
+ [SerializeField]
+ public int renderSettingsTileSize = 512;
+ [SerializeField]
+ public float renderSettingsPriority = 2;
+ [SerializeField]
+ public float renderSettingsTexelsPerUnit = 20;
+ [SerializeField]
+ public bool renderSettingsForceRefresh = true;
+ [SerializeField]
+ public bool renderSettingsForceRebuildGeometry = true;
+ [SerializeField]
+ public bool renderSettingsPerformRendering = true;
+ [SerializeField]
+ public int renderSettingsUserRenderMode = 0;
+ [SerializeField]
+ public bool renderSettingsDistanceShadowmask = false;
+ [SerializeField]
+ public int renderSettingsSettingsMode = 0;
+ [SerializeField]
+ public bool renderSettingsFixSeams = true;
+ [SerializeField]
+ public bool renderSettingsDenoise = true;
+ [SerializeField]
+ public bool renderSettingsDenoise2x = false;
+ [SerializeField]
+ public bool renderSettingsEncode = true;
+ [SerializeField]
+ public int renderSettingsEncodeMode = 0;
+ [SerializeField]
+ public bool renderSettingsOverwriteWarning = false;
+ [SerializeField]
+ public bool renderSettingsAutoAtlas = true;
+ [SerializeField]
+ public bool renderSettingsUnwrapUVs = true;
+ [SerializeField]
+ public bool renderSettingsForceDisableUnwrapUVs = false;
+ [SerializeField]
+ public int renderSettingsMaxAutoResolution = 4096;
+ [SerializeField]
+ public int renderSettingsMinAutoResolution = 16;
+ [SerializeField]
+ public bool renderSettingsUnloadScenes = true;
+ [SerializeField]
+ public bool renderSettingsAdjustSamples = true;
+ [SerializeField]
+ public int renderSettingsGILODMode = 2;
+ [SerializeField]
+ public bool renderSettingsGILODModeEnabled = false;
+ [SerializeField]
+ public bool renderSettingsCheckOverlaps = false;
+ [SerializeField]
+ public bool renderSettingsSkipOutOfBoundsUVs = true;
+ [SerializeField]
+ public float renderSettingsHackEmissiveBoost = 1;
+ [SerializeField]
+ public float renderSettingsHackIndirectBoost = 1;
+ [SerializeField]
+ public string renderSettingsTempPath = "";
+ [SerializeField]
+ public string renderSettingsOutPath = "";
+ [SerializeField]
+ public bool renderSettingsUseScenePath = false;
+ [SerializeField]
+ public float renderSettingsHackAOIntensity = 0;
+ [SerializeField]
+ public int renderSettingsHackAOSamples = 16;
+ [SerializeField]
+ public float renderSettingsHackAORadius = 1;
+ [SerializeField]
+ public bool renderSettingsShowAOSettings = false;
+ [SerializeField]
+ public bool renderSettingsShowTasks = true;
+ [SerializeField]
+ public bool renderSettingsShowTasks2 = false;
+ [SerializeField]
+ public bool renderSettingsShowPaths = true;
+ [SerializeField]
+ public bool renderSettingsShowNet = true;
+ [SerializeField]
+ public bool renderSettingsOcclusionProbes = false;
+ [SerializeField]
+ public bool renderSettingsTexelsPerMap = false;
+ [SerializeField]
+ public float renderSettingsTexelsColor = 1;
+ [SerializeField]
+ public float renderSettingsTexelsMask = 1;
+ [SerializeField]
+ public float renderSettingsTexelsDir = 1;
+ [SerializeField]
+ public bool renderSettingsShowDirWarning = true;
+ [SerializeField]
+ public int renderSettingsRenderDirMode = 0;
+ [SerializeField]
+ public bool renderSettingsShowCheckerSettings = false;
+ [SerializeField]
+ public bool renderSettingsSamplesWarning = true;
+ [SerializeField]
+ public bool renderSettingsPrefabWarning = true;
+ [SerializeField]
+ public bool renderSettingsSplitByScene = false;
+ [SerializeField]
+ public bool renderSettingsUVPaddingMax = false;
+ [SerializeField]
+ public bool renderSettingsPostPacking = true;
+ [SerializeField]
+ public bool renderSettingsHoleFilling = false;
+ [SerializeField]
+ public bool renderSettingsBeepOnFinish = false;
+ [SerializeField]
+ public bool renderSettingsExportTerrainAsHeightmap = true;
+ [SerializeField]
+ public bool renderSettingsRTXMode = false;
+ [SerializeField]
+ public int renderSettingsLightProbeMode = 1;
+ [SerializeField]
+ public bool renderSettingsClientMode = false;
+ [SerializeField]
+ public string renderSettingsServerAddress = "127.0.0.1";
+ [SerializeField]
+ public int renderSettingsUnwrapper = 0;
+ [SerializeField]
+ public int renderSettingsDenoiserType = (int)DenoiserType.OpenImageDenoise;
+ [SerializeField]
+ public bool renderSettingsExportTerrainTrees = false;
+ [SerializeField]
+ public bool renderSettingsShowPerf = true;
+ [SerializeField]
+ public int renderSettingsSampleDiv = 1;
+ //[SerializeField]
+ //public bool renderSettingsLegacyDenoiser = false;
+ [SerializeField]
+ public AtlasPacker renderSettingsAtlasPacker = AtlasPacker.Default;
+ [SerializeField]
+ public bool renderSettingsBatchPoints = true;
+ [SerializeField]
+ public bool renderSettingsCompressVolumes = false;
+ [SerializeField]
+ public bool renderSettingsRTPVExport = true;
+ [SerializeField]
+ public bool renderSettingsRTPVSceneView = false;
+ [SerializeField]
+ public int renderSettingsRTPVWidth = 640;
+ [SerializeField]
+ public int renderSettingsRTPVHeight = 360;
+
+ // Temp
+
+ public Dictionary<string, int> modifiedMeshMap;
+ //public string modifiedMeshPaddingMapAssetName;
+ public List<int> modifiedMeshPaddingArray;
+ public List<int> modifiedMeshUnwrapperArray;
+
+ public void InitModifiedMeshMap(string assetPath) {
+
+ modifiedMeshMap = new Dictionary<string, int>();
+
+ var index = modifiedAssetPathList.IndexOf(assetPath);
+ if (index < 0) return;
+ var m = modifiedAssets[index];
+ for(int j=0; j<m.meshName.Count; j++)
+ {
+ modifiedMeshMap[m.meshName[j]] = j;//m.padding[j];
+ }
+
+ modifiedMeshPaddingArray = m.padding;
+ modifiedMeshUnwrapperArray = m.unwrapper;
+
+ //modifiedMeshPaddingMapAssetName = assetPath;
+ }
+
+ public void ConvertFromLegacy()
+ {
+ for(int a=0; a<modifiedAssetPathList.Count; a++)
+ {
+ while(modifiedAssets.Count <= a)
+ {
+ var str = new AdjustedMesh();
+ str.meshName = new List<string>();
+ str.padding = new List<int>();
+ modifiedAssets.Add(str);
+ }
+ var assetPath = modifiedAssetPathList[a];
+ for(int i=0; i<modifiedMeshList.Count; i++) {
+ var m = modifiedMeshList[i];
+ if (m == null) continue;
+ var mpath = AssetDatabase.GetAssetPath(m);
+ if (mpath != assetPath) continue;
+
+ modifiedAssets[a].meshName.Add(m.name);
+ modifiedAssets[a].padding.Add(modifiedMeshPaddingList[i]);
+ }
+ }
+ modifiedMeshList = new List<Mesh>();
+ modifiedMeshPaddingList = new List<int>();
+ }
+
+ public int CalculatePaddingHash(int id)
+ {
+ string s = "";
+ var list = modifiedAssets[id].padding;
+ for(int i=0; i<list.Count; i++) s += list[i]+"_";
+ return s.GetHashCode();
+ }
+
+#if UNITY_2017_1_OR_NEWER
+ public void SyncModifiedAsset(int index)
+ {
+ var importer = AssetImporter.GetAtPath(modifiedAssetPathList[index]) as ModelImporter;
+ if (importer == null)
+ {
+ Debug.LogError("Can't get importer for " + modifiedAssetPathList[index]);
+ return;
+ }
+ var data = modifiedAssets[index];
+ var str = JsonUtility.ToJson(data);
+ var props = importer.extraUserProperties;
+
+ // check if Bakery properties already present
+ int propID = -1;
+ for(int i=0; i<props.Length; i++)
+ {
+ if (props[i].Substring(0,7) == "#BAKERY")
+ {
+ propID = i;
+ break;
+ }
+ }
+
+ if (propID < 0)
+ {
+ // keep existing properties
+ var newProps = new string[props.Length + 1];
+ for(int i=0; i<props.Length; i++) newProps[i] = props[i];
+ props = newProps;
+ propID = props.Length - 1;
+ }
+
+ props[propID] = "#BAKERY" + str;
+
+ importer.extraUserProperties = props;
+ }
+#endif
+
+ public void ClearAssetModifications(int index)
+ {
+ var importer = AssetImporter.GetAtPath(modifiedAssetPathList[index]) as ModelImporter;
+ if (importer == null)
+ {
+ Debug.LogError("Can't get importer for " + modifiedAssetPathList[index]);
+ return;
+ }
+
+ modifiedAssetPathList.RemoveAt(index);
+ modifiedAssets.RemoveAt(index);
+ modifiedAssetPaddingHash.RemoveAt(index);
+ EditorUtility.SetDirty(this);
+
+#if UNITY_2017_1_OR_NEWER
+ var props = importer.extraUserProperties;
+ if (props == null)
+ {
+ Debug.LogError("extraUserProperties is null");
+ return;
+ }
+ var newProps = new List<string>();
+ for(int i=0; i<props.Length; i++)
+ {
+ var prop = props[i];
+ if (prop.Substring(0,7) != "#BAKERY")
+ {
+ newProps.Add(prop);
+ }
+ }
+ importer.extraUserProperties = newProps.ToArray();
+#endif
+
+ importer.SaveAndReimport();
+ }
+
+#endif
+
+}
+