internal static void AssignRenderData(HDProbe probe, string bakedTexturePath) { switch (probe.settings.type) { case ProbeSettings.ProbeType.PlanarProbe: { var planarProbe = (PlanarReflectionProbe)probe; var dataFile = bakedTexturePath + ".renderData"; if (File.Exists(dataFile)) { if (HDBakingUtilities.TryDeserializeFromDisk(dataFile, out HDProbe.RenderData renderData)) { HDProbeSystem.AssignRenderData(probe, renderData, ProbeSettings.Mode.Baked); EditorUtility.SetDirty(probe); } } break; } } }
static void RenderInCustomAsset(HDProbe probe, bool useExistingCustomAsset) { var provider = new TProvider(); string assetPath = null; if (useExistingCustomAsset && probe.customTexture != null && !probe.customTexture.Equals(null)) { assetPath = AssetDatabase.GetAssetPath(probe.customTexture); } if (string.IsNullOrEmpty(assetPath)) { assetPath = EditorUtility.SaveFilePanelInProject( "Save custom capture", probe.name, "exr", "Save custom capture"); } if (!string.IsNullOrEmpty(assetPath)) { var target = HDProbeSystem.CreateRenderTargetForMode( probe, ProbeSettings.Mode.Custom ); HDProbeSystem.Render( probe, null, target, out HDProbe.RenderData renderData, forceFlipY: probe.type == ProbeSettings.ProbeType.ReflectionProbe ); HDTextureUtilities.WriteTextureFileToDisk(target, assetPath); AssetDatabase.ImportAsset(assetPath); HDBakedReflectionSystem.ImportAssetAt(probe, assetPath); CoreUtils.Destroy(target); var assetTarget = AssetDatabase.LoadAssetAtPath <Texture>(assetPath); probe.SetTexture(ProbeSettings.Mode.Custom, assetTarget); probe.SetRenderData(ProbeSettings.Mode.Custom, renderData); EditorUtility.SetDirty(probe); } }
static void RenderInCustomAsset(HDProbe probe, bool useExistingCustomAsset) { var provider = new TProvider(); string assetPath = null; if (useExistingCustomAsset && probe.customTexture != null && !probe.customTexture.Equals(null)) { assetPath = AssetDatabase.GetAssetPath(probe.customTexture); } if (string.IsNullOrEmpty(assetPath)) { assetPath = EditorUtility.SaveFilePanelInProject( "Save custom capture", probe.name, "exr", "Save custom capture"); } if (!string.IsNullOrEmpty(assetPath)) { var target = (RenderTexture)HDProbeSystem.CreateRenderTargetForMode( probe, ProbeSettings.Mode.Custom ); HDBakedReflectionSystem.RenderAndWriteToFile( probe, assetPath, target, null, out var cameraSettings, out var cameraPositionSettings ); AssetDatabase.ImportAsset(assetPath); HDBakedReflectionSystem.ImportAssetAt(probe, assetPath); CoreUtils.Destroy(target); var assetTarget = AssetDatabase.LoadAssetAtPath <Texture>(assetPath); probe.SetTexture(ProbeSettings.Mode.Custom, assetTarget); probe.SetRenderData(ProbeSettings.Mode.Custom, new HDProbe.RenderData(cameraSettings, cameraPositionSettings)); EditorUtility.SetDirty(probe); } }
public void HDProbeSystemRegister() { using (ListPool <HDProbe> .Get(out var probes)) { // Create a lot of probe for (var i = 0; i < 10000; ++i) { var gameObject = new GameObject(i.ToString("0000")); // Deactivate the GameObject to avoid OnEnable calls (which register the probe) gameObject.SetActive(false); gameObject.AddComponent <ReflectionProbe>(); var probe = gameObject.AddComponent <HDAdditionalReflectionData>(); probe.enabled = false; probes.Add(probe); } // Measure registration Measure.Method(() => { foreach (var probe in probes) { HDProbeSystem.RegisterProbe(probe); } }).Run(); // Unregister foreach (var probe in probes) { HDProbeSystem.UnregisterProbe(probe); } // Delete the probes foreach (var probe in probes) { Object.DestroyImmediate(probe.gameObject); } } }