Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions com.unity.render-pipelines.high-definition/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Exposed the API to access HDRP shader pass names.
- Added the status check of default camera frame settings in the DXR wizard.
- Added frame setting for Virtual Texturing.
- Added a fade distance for light influencing volumetric lighting.

### Fixed
- Fixed a null reference exception when creating a diffusion profile asset.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ sealed class Styles
// Volumetric Additional light data
public readonly GUIContent volumetricEnable = new GUIContent("Enable", "When enabled, this Light uses Volumetrics.");
public readonly GUIContent volumetricDimmer = new GUIContent("Multiplier", "Controls the intensity of the scattered Volumetric lighting.");
public readonly GUIContent volumetricFadeDistance = new GUIContent("Fade Distance", "The distance at which light smoothly fades out from contributing to volumetric lighting.");
// Volumetric Additional shadow data
public readonly GUIContent volumetricShadowDimmer = new GUIContent("Shadow Dimmer", "Dims the volumetric shadows this Light casts.");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -991,6 +991,11 @@ static void DrawVolumetric(SerializedHDLight serialized, Editor owner)
{
EditorGUILayout.PropertyField(serialized.volumetricDimmer, s_Styles.volumetricDimmer);
EditorGUILayout.Slider(serialized.volumetricShadowDimmer, 0.0f, 1.0f, s_Styles.volumetricShadowDimmer);
HDLightType lightType = serialized.type;
if (lightType != HDLightType.Directional)
{
EditorGUILayout.PropertyField(serialized.volumetricFadeDistance, s_Styles.volumetricFadeDistance);
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ internal class SerializedHDLight
public SerializedProperty maxSmoothness;
public SerializedProperty applyRangeAttenuation;
public SerializedProperty volumetricDimmer;
public SerializedProperty volumetricFadeDistance;
public SerializedProperty lightUnit;
public SerializedProperty displayAreaLightEmissiveMesh;
public SerializedProperty areaLightEmissiveMeshCastShadow;
Expand Down Expand Up @@ -336,6 +337,7 @@ public SerializedHDLight(HDAdditionalLightData[] lightDatas, LightEditor.Setting
spotIESCutoffPercent = o.Find("m_SpotIESCutoffPercent");
lightDimmer = o.Find("m_LightDimmer");
volumetricDimmer = o.Find("m_VolumetricDimmer");
volumetricFadeDistance = o.Find("m_VolumetricFadeDistance");
lightUnit = o.Find("m_LightUnit");
displayAreaLightEmissiveMesh = o.Find("m_DisplayAreaLightEmissiveMesh");
fadeDistance = o.Find("m_FadeDistance");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,24 @@ public float fadeDistance
}
}

// Not used for directional lights.
[SerializeField]
float m_VolumetricFadeDistance = 10000.0f;
/// <summary>
/// Get/Set the light fade distance for volumetrics.
/// </summary>
public float volumetricFadeDistance
{
get => m_VolumetricFadeDistance;
set
{
if (m_VolumetricFadeDistance == value)
return;

m_VolumetricFadeDistance = Mathf.Clamp(value, 0, float.MaxValue);
}
}

[SerializeField, FormerlySerializedAs("affectDiffuse")]
bool m_AffectDiffuse = true;
/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,7 @@ internal struct ProcessedLightData
public LightVolumeType lightVolumeType;
public float distanceToCamera;
public float lightDistanceFade;
public float volumetricDistanceFade;
public bool isBakedShadowMask;
}

Expand Down Expand Up @@ -1548,7 +1549,7 @@ internal void GetLightData(CommandBuffer cmd, HDCamera hdCamera, HDShadowSetting
lightData.lightDimmer = processedData.lightDistanceFade * (additionalLightData.lightDimmer);
lightData.diffuseDimmer = processedData.lightDistanceFade * (additionalLightData.affectDiffuse ? additionalLightData.lightDimmer : 0);
lightData.specularDimmer = processedData.lightDistanceFade * (additionalLightData.affectSpecular ? additionalLightData.lightDimmer * hdCamera.frameSettings.specularGlobalDimmer : 0);
lightData.volumetricLightDimmer = processedData.lightDistanceFade * (additionalLightData.volumetricDimmer);
lightData.volumetricLightDimmer = Mathf.Min(processedData.volumetricDistanceFade, processedData.lightDistanceFade) * (additionalLightData.volumetricDimmer);

lightData.cookieMode = CookieMode.None;
lightData.shadowIndex = -1;
Expand Down Expand Up @@ -2278,6 +2279,7 @@ void PreprocessLightData(ref ProcessedLightData processedData, VisibleLight ligh
ref processedData.lightCategory, ref processedData.gpuLightType, ref processedData.lightVolumeType);

processedData.lightDistanceFade = processedData.gpuLightType == GPULightType.Directional ? 1.0f : HDUtils.ComputeLinearDistanceFade(processedData.distanceToCamera, additionalLightData.fadeDistance);
processedData.volumetricDistanceFade = processedData.gpuLightType == GPULightType.Directional ? 1.0f : HDUtils.ComputeLinearDistanceFade(processedData.distanceToCamera, additionalLightData.volumetricFadeDistance);
processedData.isBakedShadowMask = IsBakedShadowMaskLight(lightComponent);
}

Expand Down