Added HairBlending shader pass;
Added HairBlendingSetting in UTSRenderPassSetting; Added MaterialType to UTS; Added MaterialFeature scope to UTS material editor; Merged HairBlendingPass and HairShadowPass into UTSPass; Fixed the bug that character box light can not update rotation correctly according to bound light source;
This commit is contained in:
@@ -26,10 +26,7 @@ namespace Misaki.HdrpToon
|
||||
|
||||
public Transform trackedTransform;
|
||||
public bool followGameObjectPosition = false;
|
||||
public bool followGameObjectRotation = false;
|
||||
|
||||
public Vector3 positionOffset;
|
||||
public Quaternion rotationOffset;
|
||||
public float distanceOffset = 20.0f;
|
||||
|
||||
[CreateProperty]
|
||||
public Light BindingSourceLight
|
||||
@@ -64,8 +61,8 @@ namespace Misaki.HdrpToon
|
||||
return;
|
||||
}
|
||||
|
||||
UpdateShadowLayer(_bindingSourceLightData, _layerMask, value);
|
||||
UpdateShadowLayer(_targetBoxLightData, _layerMask, value);
|
||||
UpdateShadowLayer(_bindingSourceLightData, value);
|
||||
UpdateShadowLayer(_targetBoxLightData, value);
|
||||
|
||||
_layerMask = value;
|
||||
}
|
||||
@@ -92,13 +89,9 @@ namespace Misaki.HdrpToon
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
// Start is called before the first frame update
|
||||
private void Start()
|
||||
{
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
private void LateUpdate()
|
||||
private void Update()
|
||||
{
|
||||
Initialize();
|
||||
|
||||
@@ -125,16 +118,12 @@ namespace Misaki.HdrpToon
|
||||
_targetBoxLight.enabled = _bindingSourceLight.enabled;
|
||||
_targetBoxLight.intensity = _bindingSourceLight.intensity;
|
||||
|
||||
if (trackedTransform != null)
|
||||
if (trackedTransform != null && followGameObjectPosition)
|
||||
{
|
||||
if (followGameObjectPosition)
|
||||
{
|
||||
_targetBoxLight.transform.position = trackedTransform.transform.position + positionOffset;
|
||||
}
|
||||
if (followGameObjectRotation)
|
||||
{
|
||||
_targetBoxLight.transform.rotation = trackedTransform.transform.rotation * rotationOffset;
|
||||
}
|
||||
var desiredPosition = trackedTransform.position - _bindingSourceLight.transform.forward * distanceOffset;
|
||||
|
||||
_targetBoxLight.transform.position = desiredPosition;
|
||||
_targetBoxLight.transform.rotation = _bindingSourceLight.transform.rotation;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,7 +176,7 @@ namespace Misaki.HdrpToon
|
||||
#if UNITY_EDITOR
|
||||
Undo.RegisterCreatedObjectUndo(lightGameObject, "Created Boxlight adjustment");
|
||||
#endif
|
||||
var hdLightData = lightGameObject.AddHDLight(LightType.Box);
|
||||
var hdLightData = lightGameObject.AddHDLight(UnityEngine.LightType.Box);
|
||||
// light size
|
||||
hdLightData.SetBoxSpotSize(new Vector2(10.0f, 10.0f)); // Size should be culculated with more acculacy?
|
||||
var boxLightAdjustment = lightGameObject.GetComponent<BoxLightAdjustment>();
|
||||
@@ -228,12 +217,11 @@ namespace Misaki.HdrpToon
|
||||
return lightGameObject;
|
||||
}
|
||||
|
||||
private void UpdateShadowLayer(HDAdditionalLightData lightData, uint oldValue, uint newValue)
|
||||
private void UpdateShadowLayer(HDAdditionalLightData lightData, uint newValue)
|
||||
{
|
||||
lightData.linkShadowLayers = false;
|
||||
var oldShadowLayer = lightData.GetShadowLayers();
|
||||
oldShadowLayer &= ~oldValue;
|
||||
var newShadowLayer = oldShadowLayer | newValue;
|
||||
var lightLayer = lightData.GetLightLayers();
|
||||
var newShadowLayer = lightLayer | newValue | UnityEngine.RenderingLayerMask.defaultRenderingLayerMask;
|
||||
lightData.SetShadowLightLayer((UnityEngine.Rendering.HighDefinition.RenderingLayerMask)newShadowLayer);
|
||||
}
|
||||
|
||||
@@ -256,8 +244,7 @@ namespace Misaki.HdrpToon
|
||||
|
||||
if (_targetBoxLight != null)
|
||||
{
|
||||
positionOffset = _targetBoxLight.transform.position - trackedTransform.transform.position;
|
||||
rotationOffset = Quaternion.Inverse(trackedTransform.transform.rotation) * _targetBoxLight.transform.rotation;
|
||||
distanceOffset = Mathf.Abs(Vector3.Distance(_targetBoxLight.transform.position, trackedTransform.transform.position));
|
||||
}
|
||||
|
||||
_initialized = true;
|
||||
|
||||
Reference in New Issue
Block a user