Status: Estável
- Height map generation via multi-level blur
- Normal map from height via Sobel operator
- Metallic map via HSL analysis
- Smoothness map (base + metallic contribution)
- Edge map from normal gradient
- AO map (cavity-style from height)
- CLI interface (clap: input, -o, -f, -q, -v, --quiet)
- wgpu compute shaders (incl. pipeline 2 inputs para smoothness)
- PNG/JPG/TGA/EXR support
- Parâmetros hardcoded (sem ajuste fino)
- Sem configuração via arquivo
- Um formato de saída por execução
- Resolução limitada por GPU memory
- Sem alpha handling
Timeline: 1-2 semanas após MVP
-
Override de defaults:
materialize texture.png --height-blur=5.0 --normal-intensity=2.0
-
Configuração por mapa:
materialize texture.png \ --height-contrast=1.8 \ --height-levels=5 \ --normal-flip-y \ --metallic-saturation-threshold=0.2
materialize texture.png --help
Options:
--height-blur <FLOAT> Sigma máximo do blur [default: 64.0]
--height-contrast <FLOAT> Fator de contraste [default: 1.5]
--height-levels <INT> Número de níveis de blur [default: 7]
--normal-intensity <FLOAT> Escala dos gradientes [default: 1.0]
--normal-flip-y Flip Y para OpenGL
--metallic-saturation <FLOAT> Threshold de saturação [default: 0.15]
--metallic-luminance <FLOAT> Threshold de luminância [default: 0.4]
--smoothness Incluir smoothness mapTimeline: 2-3 semanas após v1.1
# Processar pasta inteira
materialize ./textures/ -o ./output/
# Padrão glob
materialize "./textures/**/*.png" -o ./output/
# Estrutura preservada
# Input: ./textures/bricks/red_brick.png
# Output: ./output/bricks/red_brick_height.png, etc.- Processa N imagens simultaneamente (configurável)
- Reusa GPU context entre imagens
- Progress bar com indicador de fila
materialize ./textures/ --jobs=4 --progress
# Output:
# [1/50] processing stone.png... done (120ms)
# [2/50] processing brick.png... done (98ms)
# [=====> ] 2/50 (ETA: 4.8s)# Se interrompido, resume do ponto onde parou
materialize ./textures/ --resume
# Skip existentes (útil para atualizações)
materialize ./textures/ --skip-existingTimeline: Após v1.2 (opcional)
AO cavity-style já está no MVP. Esta versão adicionaria AO por ray marching (normal+height) como no Materialize original, com parâmetros (ray count, spread, depth). Curvature map também considerado.
Timeline: 2-3 semanas após v2.0
Arquivo padrão: materialize.toml no diretório do input
# materialize.toml
[global]
output_format = "exr"
output_dir = "./processed"
[height]
blur_levels = 7
max_sigma = 64.0
contrast = 1.5
[normal]
intensity = 1.0
flip_y = false
[metallic]
saturation_threshold = 0.15
luminance_threshold = 0.4
[ao]
enabled = true
ray_count = 64
max_distance = 0.5Uso:
# Auto-detecta materialize.toml
materialize texture.png
# Especifica arquivo
materialize texture.png --config=./my-config.toml
# Override inline
materialize texture.png --config=./base.toml --height-contrast=2.0Profiles pré-definidos para casos comuns:
# Profile para tijolos
materialize brick.png --profile=brick
# Profile para metal
materialize metal.png --profile=metal
# Profile para pele/orgânico
materialize skin.png --profile=organic
# Lista profiles
materialize --list-profilesBuilt-in profiles:
default: Configurações equilibradasbrick: Blur mais forte para padrões de tijolometal: Thresholds ajustados para metaisorganic: Suavização extra para superfícies naturaistile: Configurado para texturas tileáveis
Timeline: 1-2 meses após v2.1
Descrição: Janela SDL2/GLFW para preview rápido do material PBR completo
Comando:
materialize texture.png --preview
# Preview apenas após processamento
materialize texture.png && materialize texture.png --preview-onlyControles:
Left click + drag: RotacionarRight click + drag: PanScroll: ZoomH/N/M/S: Toggle mapas (Height/Normal/Metallic/Smoothness)Space: Toggle wireframeEsc: Fechar
Pipeline de preview simples:
Diffuse + Normal + Metallic + Smoothness + AO → PBR shading
Iluminação:
- 3 point lights (key, fill, rim)
- Cubemap environment (opcional)
- Rotation automática
Timeline: 1 mês após v3.0
Converte textura não-tileável em tileável:
materialize texture.png --make-seamless --output=seamless.pngAlgoritmo:
- Wrap edges com blending
- Frequency analysis para patterns
- Poisson blending nas junções
materialize texture.png --preview --tiling=2x2 # Mostra 2x2 tiles
materialize texture.png --preview --tiling=4x4 # Mostra 4x4 tilesTodos os mapas gerados são automaticamente seamless se input for:
- Height: Wrapping com derivadas consistentes
- Normal: Wrapping com continuidade
- Metallic: Simples wrap (não afeta vizinhança)
Timeline: 2-3 meses após v3.1
- Modelo treinado em dataset de materiais PBR
- Melhor detecção que heurísticas HSL
- Suporte para metais pintados/oxidados
materialize texture.png --metallic-ml --model=./my-model.onnxUpscale + geração de mapas simultâneo:
materialize lowres.png --upscale=2x # 1K → 2K
materialize lowres.png --upscale=4x # 1K → 4KExtrai height com ML (melhor que luminância):
materialize texture.png --height-mlSe múltiplas imagens com diferentes focos disponíveis:
materialize --dfd ./focus_stack/ --output=height.pngTimeline: 3-6 meses após v4.0
Plugins em Rust (dynamic libs) ou Lua/Python scripts:
# Carregar plugin
materialize texture.png --plugin=./my-plugin.so
# Plugins podem:
# - Adicionar novos mapas
# - Modificar pipeline existente
# - Adicionar novos algoritmos# Instalar plugin do registry
materialize plugin install normal-enhancer
# Listar plugins
materialize plugin list
# Desenvolver plugin
materialize plugin new my-plugin # Gera template- CLI Server Mode:
materialize servepara processamento via API HTTP - Watch Mode:
materialize --watch ./textures/- re-processa em mudanças - GUI Mode: Interface gráfica opcional (egui/iced)
- Cloud Processing: Offload para GPUs cloud
- Batch Config: Processar múltiplas configs em uma execução
- Image Sequence: Processar vídeos/texturas animadas
- Normal Map Combine: Combinar múltiplas normais (detail mapping)
- Curvature-Driven: Ajustar parâmetros baseado em curvatura local
- MVP funcional e estável
- Batch processing (essencial para pipelines)
- Config files (usabilidade)
- AO (diferencial do Materialize original)
- Preview window (UX)
- Smoothness (completa o set PBR básico)
- Seamless maker
- ML features
- Plugin system
- GUI mode
Features da comunidade são bem-vindas! Abra uma issue para discutir:
- Novos mapas/algoritmos
- Integrações com engines
- Performance improvements
- Bug fixes
Label good-first-issue: Issues ideais para novos contribuidores