[SA] Como criar materiais PBR para o RenderHook
Enviado: 08 Set 2018, 22:04
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 é)

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.

(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:

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.

Como instalar um material PBR no RenderHook
Explicação original resumida:
Passo-a-passo:
Pegue o metallic map que você fez e adicione-o num arquivo
Normalmente o nome do map será
Vamos supor que estou editando a textura
Em seguida, crie um arquivo de texto com extensão .mat com o nome da textura original (ou seja, no meu caso,

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
Para specular map (basicamente o quão brilhosa a superfície é) o sufixo é
É necessário estar com
Baixe um exemplo de pack de materiais PBR para GTA SA aqui.
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 é)

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.

(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:

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.

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).
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.
