/// <summary> /// Enables or disables different GUI elements depending on the probe type. /// </summary> /// <param name="type">Probe type to show GUI elements for.</param> private void ToggleTypeSpecificFields(ReflectionProbeType type) { bool isBox = type == ReflectionProbeType.Box; radiusField.Active = !isBox; extentsField.Active = isBox; }
/// <inheritdoc/> protected internal override InspectableState Refresh() { ReflectionProbe probe = InspectedObject as ReflectionProbe; if (probe == null) { return(InspectableState.NotModified); } ReflectionProbeType probeType = probe.Type; if (probeTypeField.Value != (ulong)probeType) { ToggleTypeSpecificFields(probeType); } probeTypeField.Value = (ulong)probeType; radiusField.Value = probe.Radius; extentsField.Value = probe.Extents; customTextureField.Value = probe.CustomTexture; InspectableState oldState = modifyState; if (modifyState.HasFlag(InspectableState.Modified)) { modifyState = InspectableState.NotModified; } return(oldState); }
public void RenderAllRealtimeProbesFor(ReflectionProbeType probeType, Camera viewerCamera) { if ((probeType & ReflectionProbeType.PlanarReflection) != 0) { var length = Mathf.Min(m_PlanarReflectionProbe_PerCamera_RealtimeUpdate.Count, m_PlanarReflectionProbe_RealtimeUpdate_WorkArray.Length); m_PlanarReflectionProbe_PerCamera_RealtimeUpdate.CopyTo(m_PlanarReflectionProbe_RealtimeUpdate_WorkArray); // 1. Allocate if necessary target texture var renderCamera = GetRenderCamera(); for (var i = 0; i < length; i++) { var probe = m_PlanarReflectionProbe_RealtimeUpdate_WorkArray[i]; var hdCamera = HDCamera.Get(renderCamera, null, probe.frameSettings); if (!IsRealtimeTextureValid(probe.realtimeTexture, hdCamera)) { if (probe.realtimeTexture != null) { probe.realtimeTexture.Release(); } probe.realtimeTexture = NewRenderTarget(probe); } } // 2. Render for (var i = 0; i < length; i++) { var probe = m_PlanarReflectionProbe_RealtimeUpdate_WorkArray[i]; Render(probe, probe.realtimeTexture, viewerCamera); } } }
public void RenderAllRealtimeProbes(ReflectionProbeType probeTypes) { if ((probeTypes & ReflectionProbeType.PlanarReflection) != 0) { // Discard disabled probes in requested render probes m_PlanarReflectionProbe_RequestRealtimeRender.IntersectWith(m_PlanarReflectionProbes); // Include all realtime probe modes m_PlanarReflectionProbe_RequestRealtimeRender.UnionWith(m_PlanarReflectionProbe_RealtimeUpdate); var length = Mathf.Min(m_PlanarReflectionProbe_RequestRealtimeRender.Count, m_PlanarReflectionProbe_RealtimeUpdate_WorkArray.Length); m_PlanarReflectionProbe_RequestRealtimeRender.CopyTo(m_PlanarReflectionProbe_RealtimeUpdate_WorkArray); m_PlanarReflectionProbe_RequestRealtimeRender.Clear(); // 1. Allocate if necessary target texture for (var i = 0; i < length; i++) { var probe = m_PlanarReflectionProbe_RealtimeUpdate_WorkArray[i]; if (!IsRealtimeTextureValid(probe.realtimeTexture)) { if (probe.realtimeTexture != null) { probe.realtimeTexture.Release(); } probe.realtimeTexture = NewRenderTarget(probe); } } // 2. Render for (var i = 0; i < length; i++) { var probe = m_PlanarReflectionProbe_RealtimeUpdate_WorkArray[i]; Render(probe, probe.realtimeTexture); } } }
internal static CED.IDrawer InnerInspector(ReflectionProbeType type) { switch (type) { case ReflectionProbeType.PlanarReflection: return(CED.Group( CED.Action(Drawer_InfluenceAdvancedSwitch), CED.Action(Drawer_FieldShapeType), CED.FadeGroup( (s, d, o, i) => s.IsSectionExpanded_Shape((InfluenceShape)i), FadeOption.None, SectionShapeBoxPlanar, SectionShapeSpherePlanar ) )); case ReflectionProbeType.ReflectionProbe: return(CED.Group( CED.Action(Drawer_InfluenceAdvancedSwitch), CED.Action(Drawer_FieldShapeType), CED.FadeGroup( (s, d, o, i) => s.IsSectionExpanded_Shape((InfluenceShape)i), FadeOption.None, SectionShapeBox, SectionShapeSphere ) )); default: throw new System.ArgumentException("Unknown probe type"); } }
public void RenderAllRealtimeProbesFor(ReflectionProbeType probeType, Camera viewerCamera) { if ((probeType & ReflectionProbeType.PlanarReflection) != 0) { var length = Mathf.Min(m_PlanarReflectionProbe_PerCamera_RealtimeUpdate.Count, m_PlanarReflectionProbe_RealtimeUpdate_WorkArray.Length); var index = 0; foreach (var p in m_PlanarReflectionProbe_PerCamera_RealtimeUpdate) { m_PlanarReflectionProbe_RealtimeUpdate_WorkArray[index] = p; if (++index >= length) { break; } } #if DEBUG var discarded = m_PlanarReflectionProbe_PerCamera_RealtimeUpdate.Count - length; if (discarded > 0) { Debug.LogWarningFormat("There are more planar probe than supported in a single rendering, {0} probes discardeds", discarded); } #endif // 1. Allocate if necessary target texture var renderCamera = GetRenderCamera(); for (var i = 0; i < length; i++) { var probe = m_PlanarReflectionProbe_RealtimeUpdate_WorkArray[i]; var hdCamera = HDCamera.Get(renderCamera); if (hdCamera == null) { // Warning: this is a bad design pattern. // An individual system should not create an HDCamera (which is a shared resource). hdCamera = HDCamera.Create(renderCamera, null); } hdCamera.Update(probe.frameSettings, null, null); if (!IsRealtimeTextureValid(probe.realtimeTexture, hdCamera)) { if (probe.realtimeTexture != null) { probe.realtimeTexture.Release(); } probe.realtimeTexture = NewRenderTarget(probe); } } // 2. Render for (var i = 0; i < length; i++) { var probe = m_PlanarReflectionProbe_RealtimeUpdate_WorkArray[i]; Render(probe, probe.realtimeTexture, viewerCamera); } } }
public void RenderAllRealtimeProbes(ReflectionProbeType probeTypes) { if ((probeTypes & ReflectionProbeType.PlanarReflection) != 0) { // Discard disabled probes in requested render probes m_PlanarReflectionProbe_RequestRealtimeRender.IntersectWith(m_PlanarReflectionProbes); // Include all realtime probe modes m_PlanarReflectionProbe_RequestRealtimeRender.UnionWith(m_PlanarReflectionProbe_RealtimeUpdate); var length = Mathf.Min(m_PlanarReflectionProbe_RequestRealtimeRender.Count, m_PlanarReflectionProbe_RealtimeUpdate_WorkArray.Length); m_PlanarReflectionProbe_RequestRealtimeRender.CopyTo(m_PlanarReflectionProbe_RealtimeUpdate_WorkArray); m_PlanarReflectionProbe_RequestRealtimeRender.Clear(); // 1. Allocate if necessary target texture var camera = GetRenderCamera(); for (var i = 0; i < length; i++) { var probe = m_PlanarReflectionProbe_RealtimeUpdate_WorkArray[i]; var hdCamera = HDCamera.Get(camera); if (hdCamera == null) { // Warning: this is a bad design pattern. // An individual system should not create an HDCamera (which is a shared resource). hdCamera = HDCamera.Create(camera, null); } hdCamera.Update(probe.frameSettings, null, null); if (!IsRealtimeTextureValid(probe.realtimeTexture, hdCamera)) { if (probe.realtimeTexture != null) { probe.realtimeTexture.Release(); } probe.realtimeTexture = NewRenderTarget(probe); } } // 2. Render for (var i = 0; i < length; i++) { var probe = m_PlanarReflectionProbe_RealtimeUpdate_WorkArray[i]; Render(probe, probe.realtimeTexture); } } }
public void RenderAllRealtimeProbesFor(ReflectionProbeType probeType, Camera viewerCamera) { if ((probeType & ReflectionProbeType.PlanarReflection) != 0) { var length = Mathf.Min(m_PlanarReflectionProbe_PerCamera_RealtimeUpdate.Count, m_PlanarReflectionProbe_RealtimeUpdate_WorkArray.Length); var index = 0; foreach (var p in m_PlanarReflectionProbe_PerCamera_RealtimeUpdate) { m_PlanarReflectionProbe_RealtimeUpdate_WorkArray[index] = p; if (++index >= length) { break; } } #if DEBUG var discarded = m_PlanarReflectionProbe_PerCamera_RealtimeUpdate.Count - length; if (discarded > 0) { Debug.LogWarningFormat("There are more planar probe than supported in a single rendering, {0} probes discardeds", discarded); } #endif // 1. Allocate if necessary target texture for (var i = 0; i < length; i++) { var probe = m_PlanarReflectionProbe_RealtimeUpdate_WorkArray[i]; if (!IsRealtimeTextureValid(probe.realtimeTexture, true)) { if (probe.realtimeTexture != null) { probe.realtimeTexture.Release(); } probe.realtimeTexture = NewRenderTarget(probe); } } // 2. Render for (var i = 0; i < length; i++) { var probe = m_PlanarReflectionProbe_RealtimeUpdate_WorkArray[i]; Render(probe, probe.realtimeTexture, viewerCamera); } } }
public static void RenderAllRealtimeViewerDependentProbesFor(ReflectionProbeType probeType, Camera camera) { s_Instance.RenderAllRealtimeProbesFor(probeType, camera); }
public static void RenderAllRealtimeProbes(ReflectionProbeType probeTypes) { s_Instance.RenderAllRealtimeProbes(probeTypes); }
private static extern void Internal_setType(IntPtr thisPtr, ReflectionProbeType type);