void OnEnable() { if (instance && instance != this) { Debug.LogErrorFormat("Unexpected: AtmosphericScattering.instance already set (to: {0}). Still overriding with: {1}.", instance.name, name); } instance = this; }
void OnDisable() { UpdateKeywords(false); if (instance == this) { instance = null; } }
void OnDisable() { if (instance != this) { if (instance) { Debug.LogErrorFormat("Unexpected: AtmosphericScattering.instance set to: {0}, not to: {1}. Leaving alone.", instance.name, name); } } else { instance = null; } }
void OnEnable() { if (!m_isAwake) { return; } UpdateKeywords(true); UpdateStaticUniforms(); if (instance && instance != this) { Debug.LogErrorFormat("Unexpected: AtmosphericScattering.instance already set (to: {0}). Still overriding with: {1}.", instance.name, name); } instance = this; }
void OnDisable() { Camera.onPreCull -= m_precullCallback; UpdateKeywords(false); if (instance != this) { if (instance) { Debug.LogErrorFormat("Unexpected: AtmosphericScattering.instance set to: {0}, not to: {1}. Leaving alone.", instance.name, name); } } else { instance = null; } }
void OnEnable() { if (!m_isAwake) { return; } UpdateKeywords(true); UpdateStaticUniforms(); if (instance && instance != this) { DestroyImmediate(instance); } instance = this; if (AtmosphericScatteringSun.instance != null) { m_ActiveSun = AtmosphericScatteringSun.instance.sunLight; } m_SunTranform = m_ActiveSun.transform; if (!HasBuffers(m_ActiveSun)) { AddBuffers(m_ActiveSun); } occlusionId = Shader.PropertyToID("u_OcclusionTexture"); cameraPositionId = Shader.PropertyToID("_CameraPosition"); viewportCornderId = Shader.PropertyToID("_ViewportCorner"); viewportRightId = Shader.PropertyToID("_ViewportRight"); viewportUpId = Shader.PropertyToID("_ViewportUp"); refDistanceId = Shader.PropertyToID("_OcclusionSkyRefDistance"); if (m_currentCamera != Camera.main) { SetCurrentCamera(Camera.main); } }
public override void OnInspectorGUI() { //serializedObject.Update(); AtmosphericScattering a = (AtmosphericScattering)target; string errors = a.Validate().TrimEnd(); if (errors != "") { EditorGUILayout.HelpBox(errors, MessageType.Error); } DrawDefaultInspector(); if (GUILayout.Button("Update LookUp Tables")) { a.CalculateLightLUTs(); } //serializedObject.ApplyModifiedProperties(); }
void OnEnable() { Camera.onPreCull += m_precullCallback; if (!m_isAwake) { return; } UpdateKeywords(true); UpdateStaticUniforms(); UpdateDynamicUniforms(); m_currentCamera = null; if (instance && instance != this) { Debug.LogErrorFormat("Unexpected: AtmosphericScattering.instance already set (to: {0}). Still overriding with: {1}.", instance.name, name); } instance = this; }
public override void OnInspectorGUI() { //DrawDefaultInspector(); serializedObject.Update(); AtmosphericScattering a = (AtmosphericScattering)target; GUIStyle s = new GUIStyle(EditorStyles.label); s.normal.textColor = Color.red; string errors = a.Validate().TrimEnd(); if (errors != "") { GUILayout.Label(errors, s); } GUIStyle style = EditorStyles.foldout; FontStyle previousStyle = style.fontStyle; style.fontStyle = FontStyle.Bold; a.GeneralSettingsFoldout = EditorGUILayout.Foldout(a.GeneralSettingsFoldout, "General Settings", style); if (a.GeneralSettingsFoldout) { AtmosphericScattering.RenderMode rm = (AtmosphericScattering.RenderMode)EditorGUILayout.EnumPopup("Rendering Mode", (AtmosphericScattering.RenderMode)RenderingMode.enumValueIndex); RenderingMode.enumValueIndex = (int)rm; ScatteringComputeShader.objectReferenceValue = (ComputeShader)EditorGUILayout.ObjectField("Compute Shader", ScatteringComputeShader.objectReferenceValue, typeof(ComputeShader)); Sun.objectReferenceValue = (Light)EditorGUILayout.ObjectField("Sun", Sun.objectReferenceValue, typeof(Light)); } a.ScatteringFoldout = EditorGUILayout.Foldout(a.ScatteringFoldout, "Atmospheric Scattering"); if (a.ScatteringFoldout) { RenderAtmosphericFog.boolValue = EditorGUILayout.Toggle("Render Atm Fog", RenderAtmosphericFog.boolValue); IncomingLight.colorValue = EditorGUILayout.ColorField(new GUIContent("Incoming Light (*)"), IncomingLight.colorValue, false, false, true, new ColorPickerHDRConfig(0, 10, 0, 10)); RayleighScatterCoef.floatValue = EditorGUILayout.Slider("Rayleigh Coef (*)", RayleighScatterCoef.floatValue, 0, 4); MieScatterCoef.floatValue = EditorGUILayout.Slider("Mie Coef (*)", MieScatterCoef.floatValue, 0, 4); MieG.floatValue = EditorGUILayout.Slider("MieG", MieG.floatValue, 0, 0.999f); DistanceScale.floatValue = EditorGUILayout.FloatField("Distance Scale", DistanceScale.floatValue); GUILayout.Label("* - Change requires LookUp table update"); if (GUILayout.Button("Update LookUp Tables") && a.IsInitialized()) { ((AtmosphericScattering)target).CalculateLightLUTs(); } } a.SunFoldout = EditorGUILayout.Foldout(a.SunFoldout, "Sun"); if (a.SunFoldout) { RenderSun.boolValue = EditorGUILayout.Toggle("Render Sun", RenderSun.boolValue); SunIntensity.floatValue = EditorGUILayout.Slider("Sun Intensity", SunIntensity.floatValue, 0, 10); } a.DirLightFoldout = EditorGUILayout.Foldout(a.DirLightFoldout, "Directional Light"); if (a.DirLightFoldout) { UpdateLightColor.boolValue = EditorGUILayout.Toggle("Update Color", UpdateLightColor.boolValue); LightColorIntensity.floatValue = EditorGUILayout.Slider("Intensity", LightColorIntensity.floatValue, 0, 4); } a.AmbientFoldout = EditorGUILayout.Foldout(a.AmbientFoldout, "Ambient Light"); if (a.AmbientFoldout) { UpdateAmbientColor.boolValue = EditorGUILayout.Toggle("Update Color", UpdateAmbientColor.boolValue); AmbientColorIntensity.floatValue = EditorGUILayout.Slider("Intensity", AmbientColorIntensity.floatValue, 0, 4); } a.LightShaftsFoldout = EditorGUILayout.Foldout(a.LightShaftsFoldout, "Light Shafts"); if (a.LightShaftsFoldout) { bool renderLightShafts = RenderLightShafts.boolValue; RenderLightShafts.boolValue = EditorGUILayout.Toggle("Enable Light Shafts", RenderLightShafts.boolValue); if (renderLightShafts != RenderLightShafts.boolValue && a.IsInitialized()) // change { if (RenderLightShafts.boolValue) { a.EnableLightShafts(); } else { a.DisableLightShafts(); } } AtmosphericScattering.LightShaftsQuality quality = (AtmosphericScattering.LightShaftsQuality)LightShaftQuality.enumValueIndex; AtmosphericScattering.LightShaftsQuality currentQuality = (AtmosphericScattering.LightShaftsQuality)EditorGUILayout.EnumPopup("Quality", (AtmosphericScattering.LightShaftsQuality)LightShaftQuality.enumValueIndex); LightShaftQuality.enumValueIndex = (int)currentQuality; if (quality != currentQuality && a.IsInitialized()) { serializedObject.ApplyModifiedProperties(); a.InitializeLightShafts(); } SampleCount.intValue = EditorGUILayout.IntSlider("Sample Count", SampleCount.intValue, 1, 64); //maxRayLengthProp.floatValue = EditorGUILayout.FloatField("Max Ray Length", maxRayLengthProp.floatValue); } a.ReflectionProbeFoldout = EditorGUILayout.Foldout(a.ReflectionProbeFoldout, "Reflection Probe"); if (a.ReflectionProbeFoldout) { bool reflectionProbe = ReflectionProbe.boolValue; ReflectionProbe.boolValue = EditorGUILayout.Toggle("Enable Reflection Probe", ReflectionProbe.boolValue); if (reflectionProbe != ReflectionProbe.boolValue && a.IsInitialized()) { if (ReflectionProbe.boolValue) { a.EnableReflectionProbe(); } else { a.DisableReflectionProbe(); } } int resolution = ReflectionProbeResolution.intValue; ReflectionProbeResolution.intValue = GetResolution(EditorGUILayout.Popup("Resolution", GetResolutionIndex(ReflectionProbeResolution.intValue), ResolutionNames)); if (resolution != ReflectionProbeResolution.intValue && a.IsInitialized()) { serializedObject.ApplyModifiedProperties(); a.ChangeReflectionProbeResolution(); } } serializedObject.ApplyModifiedProperties(); }
void OnDisable() { UpdateKeywords(false); if(instance != this) { if(instance) Debug.LogErrorFormat("Unexpected: AtmosphericScattering.instance set to: {0}, not to: {1}. Leaving alone.", instance.name, name); } else { instance = null; } }
void OnEnable() { if(!m_isAwake) return; UpdateKeywords(true); UpdateStaticUniforms(); if(instance && instance != this) Debug.LogErrorFormat("Unexpected: AtmosphericScattering.instance already set (to: {0}). Still overriding with: {1}.", instance.name, name); instance = this; }
public override void OnInspectorGUI() { //DrawDefaultInspector(); serializedObject.Update(); AtmosphericScattering a = (AtmosphericScattering)target; GUIStyle s = new GUIStyle(EditorStyles.label); s.normal.textColor = Color.red; string errors = a.Validate().TrimEnd(); if (errors != "") { GUILayout.Label(errors, s); } GUIStyle style = EditorStyles.foldout; FontStyle previousStyle = style.fontStyle; style.fontStyle = FontStyle.Bold; a.GeneralSettingsFoldout = EditorGUILayout.Foldout(a.GeneralSettingsFoldout, "General Settings", style); if (a.GeneralSettingsFoldout) { AtmosphericScattering.RenderMode rm = (AtmosphericScattering.RenderMode)EditorGUILayout.EnumPopup("Rendering Mode", (AtmosphericScattering.RenderMode)RenderingMode.enumValueIndex); RenderingMode.enumValueIndex = (int)rm; ScatteringComputeShader.objectReferenceValue = (ComputeShader)EditorGUILayout.ObjectField("Compute Shader", ScatteringComputeShader.objectReferenceValue, typeof(ComputeShader)); FrostbiteReadShader.objectReferenceValue = (ComputeShader)EditorGUILayout.ObjectField("Read Compute Shader", FrostbiteReadShader.objectReferenceValue, typeof(ComputeShader)); FrostbiteWriteShader.objectReferenceValue = (ComputeShader)EditorGUILayout.ObjectField("Write Compute Shader", FrostbiteWriteShader.objectReferenceValue, typeof(ComputeShader)); Sun.objectReferenceValue = (Light)EditorGUILayout.ObjectField("Sun", Sun.objectReferenceValue, typeof(Light)); } a.ScatteringFoldout = EditorGUILayout.Foldout(a.ScatteringFoldout, "Atmospheric Scattering"); if (a.ScatteringFoldout) { RenderAtmosphericFog.boolValue = EditorGUILayout.Toggle("Render Atm Fog", RenderAtmosphericFog.boolValue); IncomingLight.colorValue = EditorGUILayout.ColorField(new GUIContent("Incoming Light (*)"), IncomingLight.colorValue, false, false, true, new ColorPickerHDRConfig(0, 10, 0, 10)); SunIlluminance.floatValue = EditorGUILayout.Slider("Sun Illuminance Ground Zenith", SunIlluminance.floatValue, 100000, 130000); RayleighScatterCoef.floatValue = EditorGUILayout.Slider("Rayleigh Coef (*)", RayleighScatterCoef.floatValue, 1, 10); MieScatterCoef.floatValue = EditorGUILayout.Slider("Mie Coef (*)", MieScatterCoef.floatValue, 1, 15); MieG.floatValue = EditorGUILayout.Slider("MieG", MieG.floatValue, 0, 0.999f); DistanceScale.floatValue = EditorGUILayout.FloatField("Distance Scale", DistanceScale.floatValue); HFBetaRayleighScatterCoef.floatValue = EditorGUILayout.Slider("HFBetaRayleighScatterCoef", HFBetaRayleighScatterCoef.floatValue, 0, 5000); HFBetaMieScatterCoef.floatValue = EditorGUILayout.Slider("HFBetaMieScatterCoef", HFBetaMieScatterCoef.floatValue, 0, 5000); HFBetaAbsorptionScatterCoef.floatValue = EditorGUILayout.Slider("HFBetaAbsorptionScatterCoef", HFBetaAbsorptionScatterCoef.floatValue, 0, 5000); HFMieAsymmetry.floatValue = EditorGUILayout.Slider("HFMieAsymmetry", HFMieAsymmetry.floatValue, 0, 0.999f); HFScaleHeight.floatValue = EditorGUILayout.FloatField("HFScaleHeight", HFScaleHeight.floatValue); HFAlbedoR.colorValue = EditorGUILayout.ColorField(new GUIContent("HFAlbedoR"), HFAlbedoR.colorValue, false, false, true, new ColorPickerHDRConfig(0, 10, 0, 10)); HFAlbedoM.colorValue = EditorGUILayout.ColorField(new GUIContent("HFAlbedoM"), HFAlbedoM.colorValue, false, false, true, new ColorPickerHDRConfig(0, 10, 0, 10)); WindDirection.vector3Value = EditorGUILayout.Vector3Field("Wind Direction", WindDirection.vector3Value); WindSpeed.floatValue = EditorGUILayout.Slider("Wind Speed", WindSpeed.floatValue, 0, 10); SigmaScattering.floatValue = EditorGUILayout.FloatField("Cloud Scattering", SigmaScattering.floatValue); SigmaExtinction.floatValue = EditorGUILayout.FloatField("Cloud Extinction", SigmaExtinction.floatValue); LowFreqUVScale.floatValue = EditorGUILayout.Slider("Low Freq UV Scale", LowFreqUVScale.floatValue, 1.0f, 10.0f); HighFreqUVScale.floatValue = EditorGUILayout.Slider("High Freq UV Scale", HighFreqUVScale.floatValue, 1.0f, 10.0f); GUILayout.Label("* - Change requires LookUp table update"); if (GUILayout.Button("Update LookUp Tables") && a.IsInitialized()) { ((AtmosphericScattering)target).CalculateAtmosphere(); } } a.SunFoldout = EditorGUILayout.Foldout(a.SunFoldout, "Sun"); if (a.SunFoldout) { RenderSun.boolValue = EditorGUILayout.Toggle("Render Sun", RenderSun.boolValue); SunIntensity.floatValue = EditorGUILayout.Slider("Sun Intensity", SunIntensity.floatValue, 0, 10); } a.DirLightFoldout = EditorGUILayout.Foldout(a.DirLightFoldout, "Directional Light"); if (a.DirLightFoldout) { UpdateLightColor.boolValue = EditorGUILayout.Toggle("Update Color", UpdateLightColor.boolValue); LightColorIntensity.floatValue = EditorGUILayout.Slider("Intensity", LightColorIntensity.floatValue, 0, 4); } a.AmbientFoldout = EditorGUILayout.Foldout(a.AmbientFoldout, "Ambient Light"); if (a.AmbientFoldout) { UpdateAmbientColor.boolValue = EditorGUILayout.Toggle("Update Color", UpdateAmbientColor.boolValue); AmbientColorIntensity.floatValue = EditorGUILayout.Slider("Intensity", AmbientColorIntensity.floatValue, 0, 4); } a.LightShaftsFoldout = EditorGUILayout.Foldout(a.LightShaftsFoldout, "Light Shafts"); if (a.LightShaftsFoldout) { bool renderLightShafts = RenderLightShafts.boolValue; RenderLightShafts.boolValue = EditorGUILayout.Toggle("Enable Light Shafts", RenderLightShafts.boolValue); AtmosphericScattering.LightShaftsQuality quality = (AtmosphericScattering.LightShaftsQuality)LightShaftQuality.enumValueIndex; AtmosphericScattering.LightShaftsQuality currentQuality = (AtmosphericScattering.LightShaftsQuality)EditorGUILayout.EnumPopup("Quality", (AtmosphericScattering.LightShaftsQuality)LightShaftQuality.enumValueIndex); LightShaftQuality.enumValueIndex = (int)currentQuality; SampleCount.intValue = EditorGUILayout.IntSlider("Sample Count", SampleCount.intValue, 1, 64); //maxRayLengthProp.floatValue = EditorGUILayout.FloatField("Max Ray Length", maxRayLengthProp.floatValue); } a.ReflectionProbeFoldout = EditorGUILayout.Foldout(a.ReflectionProbeFoldout, "Reflection Probe"); if (a.ReflectionProbeFoldout) { bool reflectionProbe = ReflectionProbe.boolValue; ReflectionProbe.boolValue = EditorGUILayout.Toggle("Enable Reflection Probe", ReflectionProbe.boolValue); int resolution = ReflectionProbeResolution.intValue; ReflectionProbeResolution.intValue = GetResolution(EditorGUILayout.Popup("Resolution", GetResolutionIndex(ReflectionProbeResolution.intValue), ResolutionNames)); } serializedObject.ApplyModifiedProperties(); }