diff options
author | tylermurphy534 <tylermurphy534@gmail.com> | 2022-11-06 15:12:42 -0500 |
---|---|---|
committer | tylermurphy534 <tylermurphy534@gmail.com> | 2022-11-06 15:12:42 -0500 |
commit | eb84bb298d2b95aec7b2ae12cbf25ac64f25379a (patch) | |
tree | efd616a157df06ab661c6d56651853431ac6b08b /VRCSDK3Worlds/Assets/Bakery/ftGlobalStorage.cs | |
download | unityprojects-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.cs | 399 |
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 + +} + |