Também perguntei sobre isso nos fóruns do UDK , mas não tive muita sorte em obter respostas. Basicamente, tenho alguma experiência com o modding UT3, mas estou apenas começando com o UDK e tenho algumas perguntas sobre o grau de controle sobre a renderização que você possui.
- Entendo que, apesar da presença de vários arquivos de shader HLSL na distribuição do UDK (com a extensão .usf), não há como implementar seus próprios shaders fora do editor de material; isto está correto? (Conheço o nó Custom no editor de materiais, mas é muito limitado e difícil de usar, exceto a lógica mais simples.)
- Entendo que o UE3 emprega renderização diferida. Eu sei que você pode acessar a cor e a profundidade do pixel atual em um processo posterior. No entanto, existe alguma maneira de acessar esses ou outros atributos do buffer G de uma maneira mais geral? (Normais, posição, valores em pixels vizinhos ...)
- Os destinos de renderização são suportados de uma maneira geral? Por uma questão de argumento, seria possível configurar uma câmera para renderizar profundidade a partir de um ponto de vista alternativo e, em seguida, fazer comparações de profundidade no estilo de mapa de sombras ao renderizar a vista principal?
- É possível substituir todos os materiais no cliente (em massa), como aqueles que estão sendo usados para o terreno ou a geometria BSP no nível atual? (Para implementar modos de visão alternativos e coisas dessa natureza.)
As ferramentas que acompanham o UDK são, obviamente, muito polidas, e é difícil vencer o Scaleform e o SpeedTree gratuitos, mas estou começando a pensar que a plataforma é um ajuste terrível para quem quer ir além do arrastar e soltar edição de material em termos de gráficos. Sinto que tenho muito mais controle sobre a renderização em um mod de mecanismo de origem, por exemplo.
Respostas:
Eu realmente não vejo muita coisa que não possa ser feita com o MaterialEditor. Você pode fazer quase tudo o que precisa. Alguém poderia argumentar que o editor de material não está gerando o código shader ideal, mas o shader-compiler faz um ótimo trabalho ao otimizar o código gerado automaticamente aqui. Então, apenas tente. Muitos jogos AAA foram desenvolvidos com este conjunto de ferramentas e muitos deles funcionaram completamente com materiais construídos com este editor. Mas, para responder à sua pergunta: Não, isso não é possível com o UDK comum.
UE3 não usa renderização adiada. O sistema de sombreamento usa um tipo de técnica adiada em cima do renderizador para frente. Mas a renderpipeline não é adiada, portanto, nenhum G-Buffer ou algo assim está disponível. Mais informações sobre isso: http://www.unrealtechnology.com/Downloads/Slides/xfest-gfx.ppt Infelizmente, não consegui encontrar outra documentação disponível ao público dos internos do UE3 com uma pesquisa rápida, então espero que esta apresentação fornece uma boa visão geral. O acesso de pixels vizinhos é possível imediatamente. Dê uma olhada no pós-efeito DOF ou Bloom. Não tenho certeza se isso está implenado em código ou por meio do Material-Editor, mas se estiver no MaterialEditor, você poderá encontrar um exemplo de trabalho para isso.
Você deve dar uma olhada no SceneCaptureActors. Elas podem ser usadas para material de renderização em textura, mas não tenho certeza de quantas possibilidades de ajuste você tem para os atores do UDK prontos para o uso. Você pode usar essa textura renderizada em um material. Infelizmente, seu caso específico (renderizando a profundidade) não é suportado no UDK imediatamente.
Não, isso não é possível, mas você pode fazer uma solução alternativa usando os Parâmetros do material que são tratados no material (para que um material contenha o sombreador nos dois modos). Você pode alterar os parâmetros do Material via Kismet, o que permitiria fazer exatamente o que você precisa.
Na minha opinião, não há muito que você não possa fazer com o UE3 em termos de renderização. A edição do material de arrastar e soltar e o design centrado no editor de níveis podem não ser o que um programador espera, mas é exatamente o que os caras do conteúdo estão precisando. Isso provou ser uma solução muito boa no final do dia. É claro que isso exige que os criadores de conteúdo conheçam o sistema e suas limitações.
Você deve tentar e criar o que precisa usando as ferramentas fornecidas pelo UDK. Estou muito positivo de que você será capaz de conseguir o que deseja.
fonte
Percebi que provavelmente deveria atualizar isso, caso alguém que lesse isso deixasse de clicar no tópico nos fóruns do UDK. Foi-me dito por um moderador que tudo o que eu quero fazer é impossível sem modificações no mecanismo.
Citação: http://forums.epicgames.com/showthread.php?p=27609556#post27609556
fonte
Pelo que você está perguntando, eu não sugeriria o UDK. Você não tem acesso nativo.
Mesmo que o UDK fornecesse acesso de script ao que você está pedindo, seria incrivelmente lento, pois o UnrealScript não é o mais rápido dos idiomas.
Irreal não usa renderização adiada. Onde você ouviu isso? Alguns licenciados implementaram renderização diferida; mas, originalmente, ele não é fornecido com ele.
Fora isso, eu não sou um cara gráfico :)
fonte