public void DrawTemperatureSlider(LightEditor.Settings settings, SerializedProperty value, Rect rect) { using (new EditorGUI.IndentLevelScope(-EditorGUI.indentLevel)) { k_TemperatureSlider.Setup(settings); k_TemperatureSlider.Draw(rect, value); } }
public void DrawTemperatureSlider(LightEditor.Settings settings, SerializedProperty value, Rect rect) { using (new EditorGUI.IndentLevelScope(-EditorGUI.indentLevel)) { k_TemperatureSlider.Setup(settings); float val = value.floatValue; k_TemperatureSlider.Draw(rect, value, ref val); if (val != value.floatValue) { value.floatValue = val; } } }
static Texture2D GetKelvinGradientTexture(LightEditor.Settings settings) { if (s_KelvinGradientTexture == null) { var kelvinTexture = (Texture2D)typeof(LightEditor.Settings).GetField("m_KelvinGradientTexture", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(settings); // This seems to be the only way to gamma-correct the internal gradient tex (aside from drawing it manually). var kelvinTextureLinear = new Texture2D(kelvinTexture.width, kelvinTexture.height, TextureFormat.RGBA32, true); kelvinTextureLinear.SetPixels(kelvinTexture.GetPixels()); kelvinTextureLinear.Apply(); s_KelvinGradientTexture = kelvinTextureLinear; } return(s_KelvinGradientTexture); }
// Note: We could use the internal SliderWithTexture, however: the internal slider func forces a text-field (and no ability to opt-out of it). void SliderWithTextureNoTextField(Rect rect, ref float value, Vector2 range, LightEditor.Settings settings) { GUI.DrawTexture(rect, GetKelvinGradientTexture(settings)); EditorGUI.BeginChangeCheck(); // Draw the exponential slider that fits 6500K to the white point on the gradient texture. var internalValue = GUI.HorizontalSlider(rect, ValueToSlider(value), 0f, 1f, SliderStyles.k_TemperatureBorder, SliderStyles.k_TemperatureThumb); // Map the value back into kelvin. value = SliderToValue(internalValue); // Round to nearest since so much precision is not necessary for kelvin while sliding. if (EditorGUI.EndChangeCheck()) { value = Mathf.Round(value); } }
/// <summary>Constructor</summary> /// <param name="serializedObject"><see cref="SerializedObject"/> with the light</param> /// <param name="settings"><see cref="LightEditor.Settings"/>with the settings</param> public UniversalRenderPipelineSerializedLight(SerializedObject serializedObject, LightEditor.Settings settings) { this.settings = settings; settings.OnEnable(); this.serializedObject = serializedObject; lightsAdditionalData = CoreEditorUtils .GetAdditionalData <UniversalAdditionalLightData>(serializedObject.targetObjects); serializedAdditionalDataObject = new SerializedObject(lightsAdditionalData); intensity = serializedObject.FindProperty("m_Intensity"); useAdditionalDataProp = serializedAdditionalDataObject.FindProperty("m_UsePipelineSettings"); additionalLightsShadowResolutionTierProp = serializedAdditionalDataObject.FindProperty("m_AdditionalLightsShadowResolutionTier"); lightCookieSizeProp = serializedAdditionalDataObject.FindProperty("m_LightCookieSize"); lightCookieOffsetProp = serializedAdditionalDataObject.FindProperty("m_LightCookieOffset"); lightLayerMask = serializedAdditionalDataObject.FindProperty("m_LightLayerMask"); customShadowLayers = serializedAdditionalDataObject.FindProperty("m_CustomShadowLayers"); shadowLayerMask = serializedAdditionalDataObject.FindProperty("m_ShadowLayerMask"); settings.ApplyModifiedProperties(); }
public SerializedHDLight(HDAdditionalLightData[] lightDatas, AdditionalShadowData[] shadowDatas, LightEditor.Settings settings) { serializedLightDatas = new SerializedObject(lightDatas); serializedShadowDatas = new SerializedObject(shadowDatas); this.settings = settings; using (var o = new PropertyFetcher <HDAdditionalLightData>(serializedLightDatas)) serializedLightData = new SerializedLightData { intensity = o.Find(x => x.displayLightIntensity), enableSpotReflector = o.Find(x => x.enableSpotReflector), spotInnerPercent = o.Find(x => x.m_InnerSpotPercent), lightDimmer = o.Find(x => x.lightDimmer), volumetricDimmer = o.Find(x => x.volumetricDimmer), lightUnit = o.Find(x => x.lightUnit), displayAreaLightEmissiveMesh = o.Find(x => x.displayAreaLightEmissiveMesh), lightLayers = o.Find(x => x.lightLayers), fadeDistance = o.Find(x => x.fadeDistance), affectDiffuse = o.Find(x => x.affectDiffuse), affectSpecular = o.Find(x => x.affectSpecular), nonLightmappedOnly = o.Find(x => x.nonLightmappedOnly), lightTypeExtent = o.Find(x => x.lightTypeExtent), spotLightShape = o.Find(x => x.spotLightShape), shapeWidth = o.Find(x => x.shapeWidth), shapeHeight = o.Find(x => x.shapeHeight), aspectRatio = o.Find(x => x.aspectRatio), shapeRadius = o.Find(x => x.shapeRadius), maxSmoothness = o.Find(x => x.maxSmoothness), applyRangeAttenuation = o.Find(x => x.applyRangeAttenuation), shadowNearPlane = o.Find(x => x.shadowNearPlane), shadowSoftness = o.Find(x => x.shadowSoftness), blockerSampleCount = o.Find(x => x.blockerSampleCount), filterSampleCount = o.Find(x => x.filterSampleCount), sunDiskSize = o.Find(x => x.sunDiskSize), sunHaloSize = o.Find(x => x.sunHaloSize), // Editor stuff useOldInspector = o.Find(x => x.useOldInspector), showFeatures = o.Find(x => x.featuresFoldout), showAdditionalSettings = o.Find(x => x.showAdditionalSettings), useVolumetric = o.Find(x => x.useVolumetric) }; // TODO: Review this once AdditionalShadowData is refactored using (var o = new PropertyFetcher <AdditionalShadowData>(serializedShadowDatas)) serializedShadowData = new SerializedShadowData { shadowDimmer = o.Find(x => x.shadowDimmer), volumetricShadowDimmer = o.Find(x => x.volumetricShadowDimmer), fadeDistance = o.Find(x => x.shadowFadeDistance), resolution = o.Find(x => x.shadowResolution), contactShadows = o.Find(x => x.contactShadows), viewBiasMin = o.Find(x => x.viewBiasMin), viewBiasMax = o.Find(x => x.viewBiasMax), viewBiasScale = o.Find(x => x.viewBiasScale), normalBiasMin = o.Find(x => x.normalBiasMin), normalBiasMax = o.Find(x => x.normalBiasMax), normalBiasScale = o.Find(x => x.normalBiasScale), sampleBiasScale = o.Find(x => x.sampleBiasScale), edgeLeakFixup = o.Find(x => x.edgeLeakFixup), edgeToleranceNormal = o.Find(x => x.edgeToleranceNormal), edgeTolerance = o.Find(x => x.edgeTolerance) }; }
public void Setup(LightEditor.Settings settings) { m_Settings = settings; }
public SerializedHDLight(HDAdditionalLightData[] lightDatas, LightEditor.Settings settings) { serializedLightDatas = new SerializedObject(lightDatas); this.settings = settings; using (var o = new PropertyFetcher <HDAdditionalLightData>(serializedLightDatas)) serializedLightData = new SerializedLightData { intensity = o.Find("m_Intensity"), enableSpotReflector = o.Find("m_EnableSpotReflector"), luxAtDistance = o.Find("m_LuxAtDistance"), spotInnerPercent = o.Find("m_InnerSpotPercent"), lightDimmer = o.Find("m_LightDimmer"), volumetricDimmer = o.Find("m_VolumetricDimmer"), lightUnit = o.Find("m_LightUnit"), displayAreaLightEmissiveMesh = o.Find("m_DisplayAreaLightEmissiveMesh"), fadeDistance = o.Find("m_FadeDistance"), affectDiffuse = o.Find("m_AffectDiffuse"), affectSpecular = o.Find("m_AffectSpecular"), nonLightmappedOnly = o.Find("m_NonLightmappedOnly"), lightTypeExtent = o.Find("m_LightTypeExtent"), spotLightShape = o.Find("m_SpotLightShape"), // WTF? shapeWidth = o.Find("m_ShapeWidth"), shapeHeight = o.Find("m_ShapeHeight"), aspectRatio = o.Find("m_AspectRatio"), shapeRadius = o.Find("m_ShapeRadius"), maxSmoothness = o.Find("m_MaxSmoothness"), applyRangeAttenuation = o.Find("m_ApplyRangeAttenuation"), shadowNearPlane = o.Find("m_ShadowNearPlane"), shadowSoftness = o.Find("m_ShadowSoftness"), blockerSampleCount = o.Find("m_BlockerSampleCount"), filterSampleCount = o.Find("m_FilterSampleCount"), minFilterSize = o.Find("m_MinFilterSize"), areaLightCookie = o.Find("m_AreaLightCookie"), areaLightShadowCone = o.Find("m_AreaLightShadowCone"), useCustomSpotLightShadowCone = o.Find("m_UseCustomSpotLightShadowCone"), customSpotLightShadowCone = o.Find("m_CustomSpotLightShadowCone"), useScreenSpaceShadows = o.Find("m_UseScreenSpaceShadows"), interactsWithSky = o.Find("m_InteractsWithSky"), angularDiameter = o.Find("m_AngularDiameter"), distance = o.Find("m_Distance"), #if ENABLE_RAYTRACING useRayTracedShadows = o.Find("m_UseRayTracedShadows"), numRayTracingSamples = o.Find("m_NumRayTracingSamples"), filterTracedShadow = o.Find("m_FilterTracedShadow"), filterSizeTraced = o.Find("m_FilterSizeTraced"), sunLightConeAngle = o.Find("m_SunLightConeAngle"), #endif evsmExponent = o.Find("m_EvsmExponent"), evsmVarianceBias = o.Find("m_EvsmVarianceBias"), evsmLightLeakBias = o.Find("m_EvsmLightLeakBias"), evsmBlurPasses = o.Find("m_EvsmBlurPasses"), // Moment light lightAngle = o.Find("m_LightAngle"), kernelSize = o.Find("m_KernelSize"), maxDepthBias = o.Find("m_MaxDepthBias"), // Editor stuff useOldInspector = o.Find("useOldInspector"), showFeatures = o.Find("featuresFoldout"), showAdditionalSettings = o.Find("showAdditionalSettings"), useVolumetric = o.Find("useVolumetric"), renderingLayerMask = settings.renderingLayerMask, // Layers linkLightLayers = o.Find("m_LinkShadowLayers"), lightlayersMask = o.Find("m_LightlayersMask"), // Shadow datas: shadowDimmer = o.Find("m_ShadowDimmer"), volumetricShadowDimmer = o.Find("m_VolumetricShadowDimmer"), shadowFadeDistance = o.Find("m_ShadowFadeDistance"), useShadowQualitySettings = o.Find("m_UseShadowQualitySettings"), customResolution = o.Find("m_CustomShadowResolution"), shadowResolutionTier = o.Find("m_ShadowResolutionTier"), contactShadows = o.Find("m_ContactShadows"), shadowTint = o.Find("m_ShadowTint"), shadowUpdateMode = o.Find("m_ShadowUpdateMode"), constantBias = o.Find("m_ConstantBias"), normalBias = o.Find("m_NormalBias"), }; }
public SerializedHDLight(HDAdditionalLightData[] lightDatas, AdditionalShadowData[] shadowDatas, LightEditor.Settings settings) { serializedLightDatas = new SerializedObject(lightDatas); serializedShadowDatas = new SerializedObject(shadowDatas); this.settings = settings; using (var o = new PropertyFetcher <HDAdditionalLightData>(serializedLightDatas)) serializedLightData = new SerializedLightData { intensity = o.Find(x => x.displayLightIntensity), enableSpotReflector = o.Find(x => x.enableSpotReflector), luxAtDistance = o.Find(x => x.luxAtDistance), spotInnerPercent = o.Find(x => x.m_InnerSpotPercent), lightDimmer = o.Find(x => x.lightDimmer), volumetricDimmer = o.Find(x => x.volumetricDimmer), lightUnit = o.Find(x => x.lightUnit), displayAreaLightEmissiveMesh = o.Find(x => x.displayAreaLightEmissiveMesh), fadeDistance = o.Find(x => x.fadeDistance), affectDiffuse = o.Find(x => x.affectDiffuse), affectSpecular = o.Find(x => x.affectSpecular), nonLightmappedOnly = o.Find(x => x.nonLightmappedOnly), lightTypeExtent = o.Find(x => x.lightTypeExtent), spotLightShape = o.Find("m_SpotLightShape"), shapeWidth = o.Find(x => x.shapeWidth), shapeHeight = o.Find(x => x.shapeHeight), aspectRatio = o.Find(x => x.aspectRatio), shapeRadius = o.Find(x => x.shapeRadius), maxSmoothness = o.Find(x => x.maxSmoothness), applyRangeAttenuation = o.Find(x => x.applyRangeAttenuation), shadowNearPlane = o.Find(x => x.shadowNearPlane), shadowSoftness = o.Find(x => x.shadowSoftness), blockerSampleCount = o.Find(x => x.blockerSampleCount), filterSampleCount = o.Find(x => x.filterSampleCount), minFilterSize = o.Find(x => x.minFilterSize), areaLightCookie = o.Find(x => x.areaLightCookie), areaLightShadowCone = o.Find(x => x.areaLightShadowCone), useScreenSpaceShadows = o.Find(x => x.useScreenSpaceShadows), #if ENABLE_RAYTRACING useRayTracedShadows = o.Find(x => x.useRayTracedShadows), numRayTracingSamples = o.Find(x => x.numRayTracingSamples), filterTracedShadow = o.Find(x => x.filterTracedShadow), filterSizeTraced = o.Find(x => x.filterSizeTraced), sunLightConeAngle = o.Find(x => x.sunLightConeAngle), #endif evsmExponent = o.Find(x => x.evsmExponent), evsmVarianceBias = o.Find(x => x.evsmVarianceBias), evsmLightLeakBias = o.Find(x => x.evsmLightLeakBias), evsmBlurPasses = o.Find(x => x.evsmBlurPasses), // Moment light lightAngle = o.Find(x => x.lightAngle), kernelSize = o.Find(x => x.kernelSize), maxDepthBias = o.Find(x => x.maxDepthBias), // Editor stuff useOldInspector = o.Find(x => x.useOldInspector), showFeatures = o.Find(x => x.featuresFoldout), showAdditionalSettings = o.Find(x => x.showAdditionalSettings), useVolumetric = o.Find(x => x.useVolumetric), renderingLayerMask = settings.renderingLayerMask, // Layers linkLightLayers = o.Find(x => x.linkShadowLayers), lightlayersMask = o.Find(x => x.lightlayersMask) }; // TODO: Review this once AdditionalShadowData is refactored using (var o = new PropertyFetcher <AdditionalShadowData>(serializedShadowDatas)) serializedShadowData = new SerializedShadowData { shadowDimmer = o.Find(x => x.shadowDimmer), volumetricShadowDimmer = o.Find(x => x.volumetricShadowDimmer), fadeDistance = o.Find(x => x.shadowFadeDistance), resolution = o.Find(x => x.shadowResolution), contactShadows = o.Find(x => x.contactShadows), shadowTint = o.Find(x => x.shadowTint), viewBiasMin = o.Find(x => x.viewBiasMin), viewBiasMax = o.Find(x => x.viewBiasMax), viewBiasScale = o.Find(x => x.viewBiasScale), normalBiasMin = o.Find(x => x.normalBiasMin), normalBiasMax = o.Find(x => x.normalBiasMax), normalBiasScale = o.Find(x => x.normalBiasScale), sampleBiasScale = o.Find(x => x.sampleBiasScale), edgeLeakFixup = o.Find(x => x.edgeLeakFixup), edgeToleranceNormal = o.Find(x => x.edgeToleranceNormal), edgeTolerance = o.Find(x => x.edgeTolerance) }; }
// Note: We could use the internal SliderWithTexture, however: the internal slider func forces a text-field (and no ability to opt-out of it). void SliderWithTextureNoTextField(Rect rect, SerializedProperty value, Vector2 range, LightEditor.Settings settings) { GUI.DrawTexture(rect, GetKelvinGradientTexture(settings)); var sliderBorder = new GUIStyle("ColorPickerSliderBackground"); var sliderThumb = new GUIStyle("ColorPickerHorizThumb"); value.floatValue = GUI.HorizontalSlider(rect, value.floatValue, range.x, range.y, sliderBorder, sliderThumb); }