using System.Collections;
using System.Collections.Generic;
public class IntensityFromRenderTexture : MonoBehaviour
public IntensityFromRenderTexture mirror;
public VideoPlayer videoPlayer;
float videoDividerPerDimension = 8f;
float brightnessMultiplier = 4f;
targetLight = GetComponent<Light>();
if (videoPlayer != null) {
rawImage = videoPlayer.GetComponent<RawImage>();
if (targetLight != null) {
startingIntensity = targetLight.intensity;
Texture2D toTexture2D(RenderTexture rTex)
int targetWidth = (int)(rTex.width / videoDividerPerDimension);
int targetHeight = (int)(rTex.height / videoDividerPerDimension);
Texture2D tex = new Texture2D(targetWidth, targetHeight, TextureFormat.RGB24, false);
RenderTexture.active = rTex;
int centerX = targetWidth / 2;
int centerY = targetHeight / 2;
tex.ReadPixels(new Rect(centerX - targetWidth / 2, centerY - targetHeight / 2, targetWidth, targetHeight), 0, 0);
void CalculateBrightness()
if (videoPlayer.gameObject.activeSelf)
Color[] pixels = toTexture2D(videoPlayer.targetTexture as RenderTexture).GetPixels();
for (int i = 0; i < pixels.Length; i++)
brightness += GetBrightnessFromColor(pixels[i]);
brightness /= pixels.Length;
brightness *= brightnessMultiplier;
brightness *= rawImage.color.a;
brightness = Mathf.Min(1f, brightness);
brightness = mirror.brightness;
if (mirror != null && mirror.gameObject.activeInHierarchy)
} else if (videoPlayer != null)
if (targetLight != null) {
targetLight.intensity = startingIntensity * brightness;
private float GetBrightnessFromColor(Color c)
return c.maxColorComponent;