Página 1 de 1

[SA] Como criar materiais PBR para o RenderHook

Enviado: 08 Set 2018, 22:04
por Junior_Djjr
O que é isto?

PBR (Physically Based Rendering) é um conceito de gráficos modernos onde a iluminação é baseada nas leis da física. É utilizado basicamente por todos os jogos realistas atuais, assim como game engines, como Unreal e Unity (o que inclui IMPUNES que estou fazendo na Unity).

Para informar à iluminação o tipo de material, é utilizado um simples texture map que diferencia as partes metálicas e não metálicas, e o quão "áspera" é a superfície — um espelho não é áspero, enquanto um concreto é; ambos refletem luz, mas de diferentes maneiras. De fato um dos princípios do PBR é que, como no mundo real, todos os materiais são refletivos.

Isto é o metallic map. Há também o specular map que indica qual é a iluminação especular da superfície (uau, que inesperado), separando-a do diffuse map (iluminação difusa). Normalmente é considerado mais complexo por se tratar de duas texturas RGB com diferentes iluminações.



A atual situação de PBR no RenderHook não está das melhores (basicamente só causa reflexo de metal em ângulo, onde o reflexo é praticamente só uma mudança da iluminação, enquanto o smoothness quase não tem efeito), mas é algo interessante mesmo assim.


Como criar metallic map para o RenderHook?

Eu não vou ensinar exatamente como criar um material PBR pois não vem ao caso, é melhor por outro tutorial, e existe vários ótimos tutoriais por aí (relativo à desenvolvimento de jogos).

Primeiramente no github do RenderHook ele falou sobre "intensity" do "specular map", o que acredito que ele quis dizer "metallicness" do "metallic map".

Enfim:
O canal vermelho (R) da imagem é o metallicness (ou seja, diz o quão metálico aquela parte é)
Imagem
O canal verde (G) diz o quão não-áspera aquela superfície é, assim impactando o brilho. Ou seja, terá mais brilho e será menos fosco.
Imagem
(na imagem acima está dizendo "A", mas no nosso caso é "G", é porque tirei da Unity Engine).

O canal azul (B) não é utilizado.

Você pode ter acesso aos canais da imagem na aba "Canais" do Photoshop.

Pesquisando você encontra os valores de cada tipo de metal, como alumínio, aço, inclusive tinta (que é um semi-metal).
No entanto, por fins de testes, experimente aplicar metallic e smoothness máximo em um material de vidro.
Algo como isto abaixo, onde na esquerda temos o color map (a textura "normal") e na direita o metallic map:
Imagem
Atenção: Isto é um mal exemplo para desenvolvimento de jogos e renders, pois é necessário remover os reflexos e sombras do color map, mas é aceitável para o nosso caso, pois RenderHook ainda não renderiza reais reflexos. Eu também só desenhei quadrados por cima das janelas, não está natural, é só um exemplo.

Os vidros se tornaram amarelos devido ao R+G (vermelho + verde = amarelo), enquanto o fundo está com leve verde com traços pretos para simular o brilho da parede, deixando os traços pretos sem brilho.
Imagem


Como instalar um material PBR no RenderHook

Explicação original resumida:
Currently there is experimental feature: Physically Based Rendering Materials, to put it simply render hook loads textures and material info from materials folder in executable directory. To add material you have to create materials.txd inside materials folder, and .mat file named after some in-game texture with specular texture name inside it. Specular texture should be added to materials.txd, red channel of specular texture is intensity, while green channel is glossiness.

Passo-a-passo:
Pegue o metallic map que você fez e adicione-o num arquivo materials.txd numa pasta materials na pasta do seu GTA San Andreas (use Magic.TXD para criar o .txd; use compressão DXT1).
Normalmente o nome do map será <nome da textura>_s ou <nome da textura>_m, é você quem escolhe.

Vamos supor que estou editando a textura sl_librarywin3 do skyscr1_lan2.txd, eu vou salvar o meu metallic map com nome sl_librarywin3_m (perceba o _m) e adicioná-lo no materials.txt.

Em seguida, crie um arquivo de texto com extensão .mat com o nome da textura original (ou seja, no meu caso, sl_librarywin3), e o conteúdo do arquivo o nome do metallic map (no meu caso, sl_librarywin3_m).
Imagem
Lembre-se que para ter um arquivo com extensão personalizada você vai precisar salvar de formas especiais ou simplesmente fazer o Windows mostrar as extensões dos arquivos, e renomear de .txt para .mat.

Para specular map (basicamente o quão brilhosa a superfície é) o sufixo é _s em vez de _m. A imagem é em tons de cinza, sendo branco = brilhoso, e preto = fosco.

É necessário estar com UsePhysicallyBasedRendering="true" ativado no settings.xml do RenderHook.

Baixe um exemplo de pack de materiais PBR para GTA SA aqui.

 

Re: [SA] Como criar materiais PBR para o RenderHook

Enviado: 09 Set 2018, 09:44
por OjTrue
Eu fiz um teste:
Imagem


Re: [SA] Como criar materiais PBR para o RenderHook

Enviado: 09 Mai 2019, 12:38
por drav
Is it possible to make luminous materials. Theoretically, this should be possible as PBR, but does it work in practice?

Re: [SA] Como criar materiais PBR para o RenderHook

Enviado: 09 Mai 2019, 16:55
por Junior_Djjr
drav escreveu:
09 Mai 2019, 12:38
Is it possible to make luminous materials. Theoretically, this should be possible as PBR, but does it work in practice?
This is called emission, I think there is no emission in RenderHook for now.

Re: [SA] Como criar materiais PBR para o RenderHook

Enviado: 10 Mai 2019, 04:08
por drav
Junior_Djjr escreveu:
09 Mai 2019, 16:55
drav escreveu:
09 Mai 2019, 12:38
Is it possible to make luminous materials. Theoretically, this should be possible as PBR, but does it work in practice?
This is called emission, I think there is no emission in RenderHook for now.
Thanks for the answer. I know what it's called just my English is very bad)