Полноэкранный эффект размытия матового стекла
принцип
Принцип полноэкранного эффекта размытия матового стекла заключается в использовании RenderTexture для захвата текущего изображения экрана, затем в использовании алгоритма размытия для размытия изображения RenderTexture и, наконец, в отображении обработанного изображения на экране. Этот метод позволяет добиться полноэкранного эффекта матового стекла, но требует более высокой производительности.
Принцип размытия матового стекла для некоторых объектов заключается в использовании двух камер: одна камера визуализирует только тот объект, который необходимо размыть, а другая камера визуализирует другие объекты и фон. Затем используйте RenderTexture, чтобы захватить изображение, визуализированное второй камерой, размыть изображение RenderTexture и, наконец, вставить обработанное изображение в качестве материала на объект, визуализированный первой камерой. Этот метод позволяет добиться эффекта матового стекла на некоторых объектах, но требует более высокой производительности.
Полный код
// Создаём RenderTexture в качестве промежуточной цели рендеринга
Private RenderTexture rt;
// Получаем объект, который нужно размыть
Private GameObject targetObj;
// Получаем камеру, которую нужно размыть
Private Camera BlurCamera;
void Start()
{ // Создать a RenderTexture, разрешение может быть любым. Отрегулируйте rt = new RenderTexture(Screen.width, Screen.height, 0); // Получаем объект, который нужно размыть targetObj = GameObject.Find("TargetObject"); // Получаем камера, которую нужно размыть BlurCamera = GameObject.Find("BlurCamera ").GetComponent<Camera>(); // Используем RenderTexture в качестве цели рендеринга BlurCamera BlurCamera.targetTexture = rt; // Вставляем визуализированное изображение в качестве материала на TargetObject targetObj.GetComponent<Renderer>().material.SetTexture ("_BlurTex", rt); }
void OnRenderImage(RenderTexture src, RenderTexture dest)
{ // Размытие изображения RenderTexture Graphics.Blit(src, rt, BluMaterial); // Отображение обработанного изображения на экране Graphics.Blit(rt, dest); }
Некоторые объекты размыты матовым стеклом, но основная часть не размыта.
принцип
Принцип размытия матового стекла для некоторых объектов заключается в использовании двух камер: одна камера визуализирует только тот объект, который необходимо размыть, а другая камера визуализирует другие объекты и фон. Затем используйте RenderTexture, чтобы захватить изображение, визуализированное второй камерой, размыть изображение RenderTexture и, наконец, вставить обработанное изображение в качестве материала на объект, визуализированный первой камерой. Этот метод позволяет добиться эффекта матового стекла на некоторых объектах, но требует более высокой производительности.
Полный код
// Создаём RenderTexture в качестве промежуточной цели рендеринга
Private RenderTexture rt;
// Получаем объект, который нужно размыть
Private GameObject targetObj;
// Получаем камеру, которую нужно размыть
Private Camera BlurCamera;
void Start()
{ // Создать a RenderTexture, разрешение может быть любым. Отрегулируйте rt = new RenderTexture(Screen.width, Screen.height, 0); // Получаем объект, который нужно размыть targetObj = GameObject.Find("TargetObject"); // Получаем камера, которую нужно размыть BlurCamera = GameObject.Find("BlurCamera ").GetComponent<Camera>(); // Используем RenderTexture в качестве цели рендеринга BlurCamera BlurCamera.targetTexture = rt; // Вставляем визуализированное изображение в качестве материала на TargetObject targetObj.GetComponent<Renderer>().material.SetTexture ("_BlurTex", rt); }
void OnRenderImage(RenderTexture src, RenderTexture dest)
{ // Размытие изображения RenderTexture Graphics.Blit(src, rt, BluMaterial); // Отображение обработанного изображения на экране Graphics.Blit(rt, dest); }