Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
        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;
                }
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        // 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);
            }
        }
Ejemplo n.º 5
0
        /// <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();
        }
Ejemplo n.º 6
0
        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)
                };
        }
Ejemplo n.º 7
0
 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)
                };
        }
Ejemplo n.º 10
0
        // 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);
        }