89 lines
2.6 KiB
C#
89 lines
2.6 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Rendering.PostProcessing;
|
|
|
|
[ExecuteInEditMode]
|
|
public class controlVolumeFogSRPPOSTFX : MonoBehaviour
|
|
{
|
|
public Transform Sun;
|
|
|
|
public Light localLightA;
|
|
|
|
public float localLightIntensity;
|
|
|
|
public float localLightRadius;
|
|
|
|
private PostProcessProfile postProfile;
|
|
|
|
private void Start()
|
|
{
|
|
postProfile = GetComponent<PostProcessVolume>().profile;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
VolumeFogSM_SRP setting = postProfile.GetSetting<VolumeFogSM_SRP>();
|
|
if (setting != null)
|
|
{
|
|
_ = localLightA != null;
|
|
Camera camera = Camera.current;
|
|
if (camera == null)
|
|
{
|
|
camera = Camera.main;
|
|
}
|
|
setting._cameraRoll.value = camera.transform.eulerAngles.z;
|
|
setting._cameraDiff.value = camera.transform.eulerAngles;
|
|
if (camera.transform.eulerAngles.y > 360f)
|
|
{
|
|
setting._cameraDiff.value.y = camera.transform.eulerAngles.y % 360f;
|
|
}
|
|
if (camera.transform.eulerAngles.y > 180f)
|
|
{
|
|
setting._cameraDiff.value.y = 0f - (360f - setting._cameraDiff.value.y);
|
|
}
|
|
if (setting._cameraDiff.value.y > 90f && setting._cameraDiff.value.y < 180f)
|
|
{
|
|
setting._cameraDiff.value.y = 180f - setting._cameraDiff.value.y;
|
|
setting._cameraDiff.value.w = -1f;
|
|
}
|
|
else if (setting._cameraDiff.value.y < -90f && setting._cameraDiff.value.y > -180f)
|
|
{
|
|
setting._cameraDiff.value.y = -180f - setting._cameraDiff.value.y;
|
|
setting._cameraDiff.value.w = -1f;
|
|
}
|
|
else
|
|
{
|
|
setting._cameraDiff.value.w = 1f;
|
|
}
|
|
if (camera.transform.eulerAngles.x > 360f)
|
|
{
|
|
setting._cameraDiff.value.x = camera.transform.eulerAngles.x % 360f;
|
|
}
|
|
if (camera.transform.eulerAngles.x > 180f)
|
|
{
|
|
setting._cameraDiff.value.x = 360f - setting._cameraDiff.value.x;
|
|
}
|
|
if (camera.transform.eulerAngles.x > 0f && camera.transform.eulerAngles.x < 180f)
|
|
{
|
|
setting._cameraTiltSign.value = 1f;
|
|
}
|
|
else
|
|
{
|
|
setting._cameraTiltSign.value = -1f;
|
|
}
|
|
if (Sun != null)
|
|
{
|
|
Vector3 forward = Sun.transform.forward;
|
|
forward = Quaternion.AngleAxis(0f - camera.transform.eulerAngles.y, Vector3.up) * -forward;
|
|
forward = Quaternion.AngleAxis(camera.transform.eulerAngles.x, Vector3.left) * forward;
|
|
forward = Quaternion.AngleAxis(0f - camera.transform.eulerAngles.z, Vector3.forward) * forward;
|
|
setting.Sun.value = new Vector4(forward.x, forward.y, forward.z, 1f);
|
|
}
|
|
if (localLightA != null)
|
|
{
|
|
setting.PointL.value = new Vector4(localLightA.transform.position.x, localLightA.transform.position.y, localLightA.transform.position.z, localLightIntensity);
|
|
setting.PointLParams.value = new Vector4(localLightA.color.r, localLightA.color.g, localLightA.color.b, localLightRadius);
|
|
}
|
|
}
|
|
}
|
|
}
|