Shader Stochastic no GTA San Andreas (correção de tiling nas texturas)

Eu (Junior_Djjr) fiz algo que eu mesmo dizia ser impossível: eu corrigi o padrão de repetição de texturas do GTA San Andreas!

gta-sa-mod-skygfx-extended-stochastic-procedural-texture-tiling-fix

Você deve estar se perguntando qual “gambiarra” foi usada, mas na verdade a solução é excelente e substitui nada do seu jogo, através de uma técnica de shader chamada de “procedural stochastic texturing“.

O algoritmo é baseado num paper de Thomas Deliot e Eric Heitz publicado em 2019, ambos desenvolvedores da Unity Engine.

Só é utilizado para texturas categorizadas como “stochastic”, ou seja, um padrão natural de grama, concreto etc.

stochastic-textures-regular-near

Isto não é novidade se você seque os nossos jogos: Nós usamos isto nos jogos Beetles Underground, Warpunk e nosso GTA brasileiro IMPUNES.

procedural-stochastic-terrain-shader-unity-warpunk-game

Inclusive, isto foi um ponto essencial para o jogo Beetles Underground, pois você é um besouro que fica no chão e pode voar, portanto era necessário uma textura que fique boa vista de perto, e de longe.

2nibble-jogo-indie-game-jaaj-beetles-underground-besouros-3

E isto é um detalhe importante, mesmo de perto o resultado é excelente:

gta-sa-mod-skygfx-extended-stochastic-procedural-texture-tiling-fix-2-2

Fazer isto num mod separado causaria conflito com o SkyGfx, portanto eu fiz como parte do SkyGfx, que é uma excelente base para adicionar shaders no GTA SA. Obviamente, com opção no arquivo .ini: “stochasticTexturing=1“.

Será um fork do projeto lançado como “SkyGfx Extended“.

Todas as variações de shaders do SkyGfx foram preservadas, ou seja, você ainda tem o building pipe do PS2 ou Xbox, e detail maps do mobile — que também usam stochastic! Eu só não adaptei para veículos pois não é tão útil e não é amigável adaptar ao instalar um mod de carro.

Como as texturas são adaptadas: Eu adicionei o parâmetro “stochastic” ao arquivo “texdb.txt” do SkyGfx (o mesmo arquivo usado na versão mobile etc).

Por exemplo, se você quer isto para a textura “Grass_128HV”, basta procurar pela linha dela e adicionar “stochastic=1” em algum local da linha. Simples.

Obviamente, no download virá centenas de texturas configuradas para isto, você não precisa fazer nada, é só instalar.

Indo para o lado mais técnico, você encontra tudo no paper, mas abaixo há uma imagem que resume:

procedural-stochastic-texturing-paper

Ou seja, o shader pega aleatoriamente um pedaço da textura e mistura em 3 partes (triângulo). É relativamente complexo, mas não é algo de outro mundo.

No paper ele mostra testes de desempenho, tendo resultado de 4 a 5 vezes mais tempo para fazer o sampling de uma textura, no entanto, foi usado o shader que inclui a correção de histograma, que preserva a coloração da textura mas é muito mais complexo, eu decidi não incluir isto. Portanto eu chuto que é em torno de 3 vezes (visto que faz blend de 3 pontos).

Lembrando que isto é somente o tempo de fazer o “sampling” de uma textura, então é relativo à quantidade de pixels que aquela textura aparece na sua tela, e principalmente, o tempo de sampling de uma textura é algo extremamente minúsculo dentro do tempo de processamento de um jogo inteiro. É como uma gota de água numa piscina.

Exemplo: Se você trocar uma textura 256×256 por 512×512 ela demorará 4 vezes mais tempo para ser processada (afinal, o dobro de cada lado resulta no quádruplo), mas você nunca notará queda de FPS mesmo fazendo isto com dezenas de texturas. Experimente usar “NoTextures=1” no MixSets, o FPS do seu jogo vai continuar quase o mesmo, pois texturas são leves para serem processadas, principalmente no GTA SA que usa shaders extremamente simples. Normalmente o peso das texturas é de carregá-las (pois facilmente pesa vários MB), mas processá-las geralmente é muito rápido.

O jogo Beetles Underground faz blend de 4 texturas de terreno, 1024×1024 cada uma, onde cada uma delas passa por stochastic (na qual aleatoriza e faz blend de 3 pontos), e o terreno ocupa quase a tela toda, e mesmo assim o jogo rodou excelente numa GT 730.

Portanto o desempenho continua ótimo, é esperado nenhuma mudança no FPS do seu jogo se você usa qualquer placa de vídeo offboard (dedicada), mas eu não sei dizer o mesmo de placas de vídeo onboard (ou offboard muito fraca e antiga), afinal, mesmo que seja leve, o impacto ainda existe.

Atualização: TJGM fez um bom vídeo sobre isso:

 


Eu pretendo finalizar a adaptação das texturas hoje e postar amanhã como “SkyGfx Extended”, que é meu fork do projeto SkyGfx (que é open source). Obviamente o autor, aap (The Hero), pode decidir incluir isto de maneira oficial, mas não é a proposta do SkyGfx. Por exemplo, isto requer editar um arquivo que no SkyGfx veio diretamente do mobile, e eu pretendo adicionar mais shaders ao jogo através do SkyGfx, por exemplo, tentar fazer algo com a água, e quem sabe no futuro seja adicionado suporte à normal maps etc. Ou seja, ao meu ver, seria interessante haver um fork do projeto para adicionar gráficos modernos ao jogo, e não só converter gráficos de outros consoles.

É possível fazer o mesmo no GTA Trilogy? Acredito que sim, mas eu não sei editar, ou se é possível editar, os shaders de um jogo compilado na Unreal.

Eu não sei o quanto vou levar isto à diante, pois eu já tenho muitos trabalhos para fazer, mas pelo menos esse shader stochastic é uma adição excelente que estou muito feliz com o resultado, e claro, é o que eu mais gosto: melhorar o jogo corrigindo os problemas sem perder a essência original.

 

[SA] Glasses Color Overlay (filtro de cor ao usar óculos)

Mod que muda a cor da tela ao usar algum óculos colorido ou escuro.

gta-sa-mod-glasses-color-overlay-filter-oculos-cor-screen

Há configurações de intensidade e opção de ativar somente em câmera primeira pessoa no arquivo .ini (como funciona no GTA V).

gta-sa-mod-glasses-color-overlay-filter-oculos-first-person

A opção de ativar somente durante câmera em primeira pessoa funciona com qualquer mod de câmera FPS, como First Person Mod ou outro. Senão, deixe “OnlyFirstPerson = 0” no arquivo .ini do mod para ativar mesmo na câmera em terceira pessoa. Não detecta novos óculos adicionados sem substituir.

É um mod CLEO simples (que usa CLEO+) e nada intrusivo ao jogo.

Autor: Junior_Djjr
download-baixar-4532137
Source code

Veja também:
Mod Cleo Put Glasses / Shades (colocar óculos)
CJ Props Mod (novos chapéus e óculos)

[Fonte primária]

LOD Vegetation v1.2 (árvores distantes)

Atualizado 11/12/21
  • Aumentado a distância de visão, assim as árvores ainda serão visíveis mesmo se você aumentar a distância padrão do Project2DFX enquanto no chão. As árvores maiores são mais distantes do que as menores (por otimização). Se a distância de visão do seu jogo é baixa, o jogo ignorará as árvores automaticamente.
  • Mod parcialmente reorganizado, agora não substitui o “vegepart.ide”, e geralmente não precisa configurar prioridade no modloader, assim não causando conflitos com outros mods. Delete a versão antiga antes de instalar esta.

Um mod que aumenta a distância de visão das árvores do GTA SA, sendo possível vê-las mais longe através de LOD (objetos de baixa definição).
gta-sa-mod-lod-vegetation-trees-draw-distance-remaster-6478211
Isto não faz a mesma coisa que o Project2DFX, é muito melhor, pois devido ao uso de LOD, o impacto no desempenho é mínimo e muito mais leve!
gta-sa-mod-lod-vegetation-trees-draw-distance-remaster-6383406
Isto porque as árvores distantes serão renderizadas em baixa definição — normalmente duas faces entrelaçadas com uma textura de 128px ou 64px — ou seja, o mod é muito otimizado e impacta muito pouco o FPS do seu jogo.
gta-sa-mod-lod-vegetation-trees-draw-distance-remaster-8495721
Para isso, eu (Junior_Djjr) trabalhei quase 50 horas, criando ferramentas de automação e usando Simplygon, o mesmo software usado para a criação de LODs para jogos como The Witcher 3, e padrão da Unreal Engine.
gta-sa-mod-lod-vegetation-trees-palm-distance-6327011
 
O mod faz isso com todas as árvores grandes estáticas. Não faz com árvores pequenas ou quebráveis.
gta-sa-mod-lod-vegetation-trees-draw-distance-remaster-2826675
Eu amei o resultado, diminuiu muitíssimo os “pop-ups” do jogo, e as paisagens ficaram muito mais bonitas.
gta-sa-mod-lod-vegetation-trees-draw-distance-remaster-5847398
Este mod substitui praticamente todos os arquivos .ipl do jogo, portanto é incompatível com mods como Z PC Map. Mas eu já adicionei algumas poucas correções importantes. Este mod será integrado com o nosso futuro projeto “Proper Fixes” que incluirá centenas de correções.
gta-sa-mod-lod-vegetation-trees-draw-distance-remaster
gta-sa-mod-lod-vegetation-trees-draw-distance-view-san-map-6657370
É somente um mod de mapa, não usa scripts/plugins, mas requer aumento de limites com Open Limit Adjuster ou FLA.
Eu ainda pretendo fazer o mesmo pro GTA Vice City (edit: eu fiz mas o LOD não desaparece, não sei o que fazer).
  
Para SAMP: Instale normalmente no ModLoader, mas pegue o conteúdo do arquivo “LODvegetation.ide” e coloque no “SAMP/CUSTOM.ide” ou final do “SAMP/SAMP.ide” (antes do “end”) com um editor de texto.
  
Atenção: A opção “LoadAllBinaryIPLs = 1” do Project2DFX ou o mesmo do Load Whole Map estranhamente causa crash 0x006FF35B no centro de LS. Portanto desative colocando “0” (na MixMods vem desativado por padrão, pois nem sequer funciona).
  
Atenção: Este mod já está incluído no Proper Fixes (modpack).
  
‎Autor: Junior_Djjr
download-baixar-4532137
 
Veja também:
Project2DFX (aumentar distância de visão) — você pode diminuir o lag dele abaixando o VegetationDrawDistance para uns 400.
[Fonte primária]

Illuminated Vinewood Sign (placa de Vinewood iluminada)

Atualizado 24/05/22
  • Instalação melhor adaptada para mobile (já funcionava antes sem conversão mas deixei mais didático).
Atualizado 24/10/21
  • Agora com a chegada no GTA SA The Definitive Edition, as pessoas gostaram das luzes nas placas de Vinewood, portanto estou revivendo este mod de 2016 para quem não conhece!
  • Aproveitei para melhorar um pouco o script, como deixar as luzes no chão pouco mais fracas.

Mod CLEO que adiciona feixes de luz por holofotes na placa de Vinewood em LS.
gta-sa-vinewood-lights-1408539
gta-sa-vinewood-lights-8552554
O efeito de iluminação suave no chão é do ECG. O efeito original do jogo não é tão natural.
gta-sa-vinewood-lights-2233839
Nota: Pode haver z-fighting ou parte da luz no chão da letra D sumir ao chegar perto, é normal, bug do colisor do jogo, e o problema é pouco notável pois só aparece quando está próximo da placa.
  
Para PC e fácil instalação para mobile (Android/iOS).
 
‎Autores: Jéssica Natália (Firefly), Junior_Djjr, alex59f
download-baixar-5386177
  
Veja também:
[Fonte primária]

Pre-lighting Fixes Pack (correções de iluminação)

 
Atenção: Este mod já está incluído no Proper Fixes!
Nele, você tem estas e literalmente MILHARES de outras correções!

Já passou da hora de termos uma boa coleção de correções para os bugs de iluminação/brilho dos objetos do mapa do GTA SA.
gta-sa-mod-prelighting-fixes-pack-lighting-prelight-2493506
371 arquivos .dff
Basicamente, 371 correções.
gta-sa-mod-prelighting-fixes-pack-lighting-prelight-7502206
gta-sa-mod-prelighting-fixes-pack-lighting-prelight-2568499
Centenas de correções para corrigir a iluminação, brilho e sombreado dos objetos do jogo, seja escuros demais, claros demais (brilhando no escuro), e principalmente, foi corrigido todas as árvores com aquelas faces escuras parecendo papel.
gta-sa-mod-pre-lighting-vertex-fix-tree-palm-7082169
texturas originais em HD aqui
Além de corrigir vários objetos escuros ou brilhando, há também a adição de alguns efeitos especiais integrados nos objetos.
gta-sa-mod-pre-lighting-vertex-fix-jetty-1552834
São vários mods em um, totalmente compatíveis entre eles, mas separados em subpastas.
Vertex Colour Fix + 2dfx effects” é também usado no TTDISA, mas com instalação muito manual e que causava incompatibilidades. Eu adaptei ao ModLoader e removi os arquivos adicionais (vinha até vídeos junto).
gta-sa-mod-prelighting-fixes-pack-lighting-prelight-donuts-sf
Nós revisamos completamente o pack, removendo as correções que eram ruins. Das correções que não são vegetação, diminuiu de 72 para somente 24. Veja aqui as imagens das “correções” antigas que foram removidas.
  
Além disso, adicionamos quase 100 novas correções! E refizemos outras.
Inclui dezenas de modelos melhores convertidos da versão PS2, por exemplo, foi re-adicionado os efeitos especiais e animações dentro do clube do Jizzy, e TVs e aquário animados no casino (visível em várias cutscenes).
gta-sa-mod-fixes-pack-jizzy-club-ps2-pc-5747482
Pode ser necessário SkyGfx para animações funcionarem.
  
Recomendado abaixar a prioridade da pasta deste mod no modloader para que você possa instalar novos mods que substitua os mesmos arquivos.
Apague a versão antiga antes de instalar a nova!
 
Atenção: Este mod já está incluído no Proper Fixes!
Nele, você tem estas e literalmente MILHARES de outras correções!
Se você instalar este mod com Proper Fixes, alguns LODs de árvores podem ficar brancos, o Proper Fixes já inclui este mod adaptado.

Vertex Colour Fix + 2dfx effects: atfburner
Vertex Colour Fixes + Improvements: RJSanModder
Fixed Vegetation Pre-Lighting: d3jan
Revisão, correções do PS2: Jéssica Natália
pleas_dome.txd: Map Textures Fix
Mais correções: Zeneric
download-baixar-4532137
  
Veja também:
gta-sa-mod-fixed-original-vanilla-vegetation-trunk-hd-1287232
  
  
LOD Vegetation (árvores distantes)
[Origens: 1, 2; Fonte primária]