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); }