EDIT: Então, consegui que o efeito visual do portal funcionasse sem problemas de desempenho, e tenho a física configurada de objetos com corpos rígidos movendo-se através de portais sem interrupções e objetos com controladores de caracteres movendo-os sem interrupções. A única coisa que estou tentando descobrir agora é misturar duas visualizações da câmera para obter o efeito de transição adequado na primeira pessoa. Alguma idéia de como eu misturaria esses dois? Estou pensando em algo usando um shader somente de profundidade ou a janela de visualização normalizada rect. Meu principal problema é calcular isso em tempo real e com ângulos.
Então, eu tenho trabalhado na criação de um efeito de portal no Unity3D. Obviamente, tomei o Portal da Valve como uma grande influência para programar isso. Atualmente, estou simplesmente usando a textura de renderização de uma câmera para obter o efeito gráfico e, em seguida, algum código para fazer o resto. O problema é 2048x2048 e tem a mesma qualidade do Portal, mas causa uma grande perda de FPS. Para resolver isso, eu teria que diminuir a qualidade da textura ou o número de vezes que atualizo a textura.
A válvula obteve um efeito de portal de alta qualidade sem causar alta perda de taxa de quadros. Como posso fazer o mesmo? Alguém tem alguma boa idéia para renderizar em uma textura de alta resolução sem causar perda de quadro?
Estou pensando em criar meu próprio código para renderizar texturas, em vez de usar o sistema interno do Unity, é factível, mas definitivamente seria um aborrecimento. Portanto, quaisquer pensamentos, idéias ou sugestões são muito apreciados.
Respostas:
Após horas de pesquisa e programação, descobri como obter o efeito visual adequado para isso. Se você deseja apenas comprar um sistema de portal que funcione para recursos visuais e quase tudo o que você precisa, confira o Pacote do Portalizer Unity.
Eu programa em C # e esse pacote está em JS, mas a lógica por trás disso é incrivelmente útil e bem pensada. Em geral, segui seu pensamento lógico, com alguns ajustes para o meu jogo e um controle em primeira pessoa.
Essencialmente, o que você faz é usar uma versão modificada deste script / shader de água. Tenha dois espelhos na cena e uma câmera renderize o que vê em cada reflexo no outro espelho. Você precisará criar uma matriz de transformação modificada para dar conta das relações entre os dois portais. Para ajudar a diminuir o impacto no desempenho, leia Este artigo sobre o recorte próximo ao plano. Isso o ajudará a renderizar apenas o que precisa ser visto através do portal.
Eu posso criar um tutorial mais detalhado com fotos e fontes assim que descobrir como misturar as câmeras corretamente para um teleporte de FPS. No momento, estou exausto e ocupado para escrever um tutorial completo, e isso deve ser suficiente, pois fornece a maior parte do código necessário.
fonte