123 lines
3.9 KiB
C#
123 lines
3.9 KiB
C#
using Unity.XR.PXR;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class PXR_ARCameraEffectManager : MonoBehaviour
|
|
{
|
|
public bool enableCameraEffect = false;
|
|
[HideInInspector]
|
|
public float colortempValue;
|
|
[HideInInspector]
|
|
public float brightnessValue;
|
|
[HideInInspector]
|
|
public float saturationValue;
|
|
[HideInInspector]
|
|
public float contrastValue;
|
|
[HideInInspector]
|
|
public Texture2D lutTex1;
|
|
[HideInInspector]
|
|
public Texture2D lutTex2;
|
|
[HideInInspector]
|
|
public Texture2D lutTex3;
|
|
[HideInInspector]
|
|
public Texture2D lutTex4;
|
|
[HideInInspector]
|
|
public Texture2D lutTex5;
|
|
|
|
private const string TAG = "PXR_ARCameraEffectManager";
|
|
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
Camera camera = Camera.main;
|
|
camera.clearFlags = CameraClearFlags.SolidColor;
|
|
camera.backgroundColor = new Color(0, 0, 0, 0);
|
|
if (enableCameraEffect)
|
|
{
|
|
PXR_MixedReality.EnableVideoSeeThroughEffect(true);
|
|
PXR_MixedReality.SetVideoSeeThroughEffect(PxrLayerEffect.Colortemp, colortempValue, 1);
|
|
PXR_MixedReality.SetVideoSeeThroughEffect(PxrLayerEffect.Brightness, brightnessValue, 1);
|
|
PXR_MixedReality.SetVideoSeeThroughEffect(PxrLayerEffect.Saturation, saturationValue, 1);
|
|
PXR_MixedReality.SetVideoSeeThroughEffect(PxrLayerEffect.Contrast, contrastValue, 1);
|
|
}
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
|
|
}
|
|
|
|
public void SetColortemp(float x)
|
|
{
|
|
PXR_MixedReality.EnableVideoSeeThroughEffect(true);
|
|
PXR_MixedReality.SetVideoSeeThroughEffect(PxrLayerEffect.Colortemp, x, 1);
|
|
}
|
|
|
|
public void SetBrightness(float x)
|
|
{
|
|
PXR_MixedReality.EnableVideoSeeThroughEffect(true);
|
|
PXR_MixedReality.SetVideoSeeThroughEffect(PxrLayerEffect.Brightness, x, 1);
|
|
}
|
|
|
|
public void SetSaturation(float x)
|
|
{
|
|
PXR_MixedReality.EnableVideoSeeThroughEffect(true);
|
|
PXR_MixedReality.SetVideoSeeThroughEffect(PxrLayerEffect.Saturation, x, 1);
|
|
}
|
|
|
|
public void SetContrast(float x)
|
|
{
|
|
PXR_MixedReality.EnableVideoSeeThroughEffect(true);
|
|
PXR_MixedReality.SetVideoSeeThroughEffect(PxrLayerEffect.Contrast, x, 1);
|
|
}
|
|
|
|
public void EnableLut(bool enable)
|
|
{
|
|
PLog.d(TAG, $"SetLutRow lutTex={lutTex1}, enable={enable} ");
|
|
PXR_MixedReality.EnableVideoSeeThroughEffect(enable);
|
|
if (lutTex1 && enable)
|
|
{
|
|
PLog.d(TAG, $"SetLutRow lutTex={lutTex1}");
|
|
PXR_MixedReality.SetVideoSeeThroughLut(lutTex1, 8, 8);
|
|
}
|
|
}
|
|
|
|
public void SetLut(int index)
|
|
{
|
|
PLog.d(TAG, $"SetLutRow index={index}");
|
|
switch (index)
|
|
{
|
|
case 0:
|
|
PXR_MixedReality.EnableVideoSeeThroughEffect(false);
|
|
break;
|
|
case 1:
|
|
PXR_MixedReality.EnableVideoSeeThroughEffect(true);
|
|
PXR_MixedReality.SetVideoSeeThroughLut(lutTex1, 8, 8);
|
|
break;
|
|
case 2:
|
|
PXR_MixedReality.EnableVideoSeeThroughEffect(true);
|
|
PXR_MixedReality.SetVideoSeeThroughLut(lutTex2, 8, 8);
|
|
break;
|
|
case 3:
|
|
PXR_MixedReality.EnableVideoSeeThroughEffect(true);
|
|
PXR_MixedReality.SetVideoSeeThroughLut(lutTex3, 8, 8);
|
|
break;
|
|
case 4:
|
|
PXR_MixedReality.EnableVideoSeeThroughEffect(true);
|
|
PXR_MixedReality.SetVideoSeeThroughLut(lutTex4, 8, 8);
|
|
break;
|
|
case 5:
|
|
PXR_MixedReality.EnableVideoSeeThroughEffect(true);
|
|
PXR_MixedReality.SetVideoSeeThroughLut(lutTex5, 8, 8);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
PXR_MixedReality.EnableVideoSeeThroughEffect(false);
|
|
}
|
|
} |