Implementando efeito de desfoque de vidro fosco em unidade

Efeito de desfoque de vidro fosco em tela cheia

princípio

O princípio do efeito de desfoque de vidro fosco em tela inteira é usar RenderTexture para capturar a imagem atual da tela, depois usar um algoritmo de desfoque para desfocar a imagem RenderTexture e, finalmente, exibir a imagem processada na tela. Este método pode obter um efeito de vidro fosco em tela inteira, mas requer maior desempenho.

O princípio do desfoque de vidro fosco para alguns objetos é usar duas câmeras, uma câmera renderiza apenas o objeto que precisa ser desfocado e a outra câmera renderiza outros objetos e o fundo. Em seguida, use RenderTexture para capturar a imagem renderizada pela segunda câmera, desfocar a imagem RenderTexture e, finalmente, colar a imagem processada como material no objeto renderizado pela primeira câmera. Este método pode obter o efeito de vidro fosco de alguns objetos, mas requer maior desempenho.

Código completo

// Cria uma RenderTexture como alvo de renderização intermediário
private RenderTexture rt;

// Obtém o objeto que precisa ser desfocado
private GameObject targetObj;

// Obtém a câmera que precisa ser desfocada
private Camera blurCamera;

void Start()
{ // Cria a RenderTexture, a resolução pode ser conforme necessário Adjust rt = new RenderTexture(Screen.width, Screen.height, 0); // Obtém o objeto que precisa ser desfocado targetObj = GameObject.Find("TargetObject"); // Obtém a câmera que precisa ser desfocada blurCamera = GameObject.Find("BlurCamera ").GetComponent<Camera>(); // Use RenderTexture como alvo de renderização de BlurCamera blurCamera.targetTexture = rt; // Cole a imagem renderizada como um material no TargetObject targetObj.GetComponent<Renderer>().material.SetTexture ("_BlurTex", rt); }
















void OnRenderImage(RenderTexture src, RenderTexture dest)
{ // Desfoca a imagem RenderTexture Graphics.Blit(src, rt, blurMaterial); // Exibe a imagem processada na tela Graphics.Blit(rt, dest); }







Alguns objetos ficam desfocados pelo vidro fosco, mas o corpo principal não fica desfocado.

princípio

O princípio do desfoque de vidro fosco para alguns objetos é usar duas câmeras, uma câmera renderiza apenas o objeto que precisa ser desfocado e a outra câmera renderiza outros objetos e o fundo. Em seguida, use RenderTexture para capturar a imagem renderizada pela segunda câmera, desfocar a imagem RenderTexture e, finalmente, colar a imagem processada como material no objeto renderizado pela primeira câmera. Este método pode obter o efeito de vidro fosco de alguns objetos, mas requer maior desempenho.

Código completo

// Cria uma RenderTexture como alvo de renderização intermediário
private RenderTexture rt;

// Obtém o objeto que precisa ser desfocado
private GameObject targetObj;

// Obtém a câmera que precisa ser desfocada
private Camera blurCamera;

void Start()
{ // Cria a RenderTexture, a resolução pode ser conforme necessário Adjust rt = new RenderTexture(Screen.width, Screen.height, 0); // Obtém o objeto que precisa ser desfocado targetObj = GameObject.Find("TargetObject"); // Obtém a câmera que precisa ser desfocada blurCamera = GameObject.Find("BlurCamera ").GetComponent<Camera>(); // Use RenderTexture como alvo de renderização de BlurCamera blurCamera.targetTexture = rt; // Cole a imagem renderizada como um material no TargetObject targetObj.GetComponent<Renderer>().material.SetTexture ("_BlurTex", rt); }
















void OnRenderImage(RenderTexture src, RenderTexture dest)
{ // Desfoca a imagem RenderTexture Graphics.Blit(src, rt, blurMaterial); // Exibe a imagem processada na tela Graphics.Blit(rt, dest); }








Implementado usando recursos URP

6db35c17efd6b9e7d8968df425aad0a8.jpeg

66dc3f0aa2becd52cc3f29dbe222b03a.jpeg

1d623be5098f100bd4e05b7d60f28495.jpeg

e42e8222a8c49c7467e08fd9ca341b4d.jpeg

642157c4d11f914d38bc7ef6b87861f1.jpeg

Acho que você gosta

Origin blog.csdn.net/shguxudong11/article/details/129422391
Recomendado
Clasificación