Я пытаюсь добавить глитч-эффект для Canvas в проекте на HDRP. Эффект должен применяться ко всему Canvas, включая текст и изображения. Я пробовал использовать Render Texture и Custom Pass, но эффект не отображается, и возникают ошибки, связанные с камерами и тд.
Что я уже пробовал:
Создал шейдер для глитч-эффекта и применил его через материал.
Использовал Render Texture и камеру для рендеринга Canvas.
Пытался настроить Custom Pass через Volume, но эффект не отображается.
Убедился, что в сцене только один AudioListener.
Ошибки:
При использовании Render Texture появляется ошибка: “Display 1 No cameras rendering”.
Код шейдера:
Shader "Custom/GlitchEffect"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_GlitchIntensity ("Glitch Intensity", Range(0, 0.1)) = 0.05
_GlitchSpeed ("Glitch Speed", Range(0, 10)) = 5.0
_ColorDistortion ("Color Distortion", Range(0, 0.05)) = 0.02
_NoiseStrength ("Noise Strength", Range(0, 0.3)) = 0.1
}
SubShader
{
Tags { "RenderType"="Transparent" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
float _GlitchIntensity;
float _GlitchSpeed;
float _ColorDistortion;
float _NoiseStrength;
struct appdata_t
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
v2f vert (appdata_t v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
float rand(float2 co)
{
return frac(sin(dot(co.xy, float2(12.9898, 78.233))) * 43758.5453);
}
fixed4 frag (v2f i) : SV_Target
{
float timeFactor = _Time.y * _GlitchSpeed;
float glitchOffset = (rand(float2(timeFactor, i.uv.y)) - 0.5) * _GlitchIntensity;
float noise = (rand(i.uv + timeFactor) - 0.5) * _NoiseStrength;
float2 uv = i.uv;
uv.x += glitchOffset;
float2 uvR = uv + float2(_ColorDistortion, 0);
float2 uvB = uv - float2(_ColorDistortion, 0);
float3 col;
col.r = tex2D(_MainTex, uvR).r;
col.g = tex2D(_MainTex, uv).g;
col.b = tex2D(_MainTex, uvB).b;
col += noise;
return fixed4(col, 1.0);
}
ENDCG
}
}
}
Настройки проекта:
Unity версия: 2022.3.40f1
Render Pipeline: HDRP
Платформа: PC
Вопрос:
Как правильно настроить глитч-эффект для Canvas в HDRP?
Почему возникает ошибка “Display 1 No cameras rendering”?
Есть ли более простой способ добавить глитч-эффект для UI в HDRP?
Я так скажем не очень шарю в темах с Canvas, так как работаю с ним второй раз в жизни. Подскажите пожалуйста, как его правильно настроить? (Canvas, Саму камеру или же камеры (если их несколько), RawImage/Image и Text (TMP) ).