Converte uma imagem colorida em um mapa de altura em escala de cinza.
Entrada: Imagem difusa (RGBA) Saída: Height map (grayscale, R32Float internamente)
Algoritmo:
- Converter para luminância (grayscale)
- Aplicar Gaussian blur em múltiplos níveis
- Combinar com pesos ajustáveis
- Aplicar contraste e spread
Uso típico:
- Displacement mapping
- Parallax occlusion mapping
- Base para normal map generation
Gera vetores de superfície a partir do height map.
Entrada: Height map (gerado internamente) Saída: Normal map (RGB, formato DirectX/OpenGL)
Algoritmo:
- Calcular gradientes via operador Sobel
- Construir vetores normais (x, y, z)
- Normalizar e codificar para [0, 255]
Formato de saída:
- Red channel: X component (-1 to +1) → 0 to 255
- Green channel: Y component (-1 to +1) → 0 to 255
- Blue channel: Z component (0 to +1) → 128 to 255
Uso típico:
- Iluminação em tempo real
- Bump mapping
- Detalhes de superfície sem geometria adicional
Detecta áreas metálicas por análise de cor.
Entrada: Imagem difusa original (RGBA) Saída: Metallic map (grayscale, 0 = dieletric, 1 = metal)
Algoritmo:
- Converter RGB para espaço HSL
- Analisar saturação e luminância
- Aplicar heurística de detecção metálica
Heurística:
- Metais puros têm saturação baixa e luminância alta
- Ouro/cobre têm matiz específico
- Thresholds adaptativos baseados na imagem
Uso típico:
- Physically based rendering (PBR)
- Diferenciação metal/não-metal
- Reflexos específicos por material
Define rugosidade/suavidade da superfície para PBR.
Entrada: Imagem difusa + mapa metallic (gerados internamente) Saída: Smoothness map (grayscale, 0 = rugoso, 1 = liso)
Algoritmo: Base smoothness (0.25) + contribuição do metallic (0.65 × metallic). Metais tendem a ser mais lisos.
Uso típico: Roughness/smoothness em shaders PBR (Unity, Unreal, etc.).
Destaca bordas e vincos a partir do mapa de normal.
Entrada: Normal map (gerado internamente) Saída: Edge map (grayscale)
Algoritmo: Gradiente da normal (amostras ±1 pixel em X e Y), combinado com contraste. Inspirado no Materialize original (Blit_Edge_From_Normal).
Uso típico: Outline, cavity, ou máscaras para pós-processamento.
Oclusão ambiente no estilo cavity, a partir do height map.
Entrada: Height map (gerado internamente) Saída: AO map (grayscale, 0 = ocluído, 1 = aberto)
Algoritmo: Amostras em 8 direções (raios 1 e 2 pixels); oclusão quando altura da amostra > centro; resultado invertido e escalado.
Uso típico: Sombreamento em frestas e cantos em pipelines PBR.
| Formato | Extensões | Observações |
|---|---|---|
| PNG | .png | Recomendado, lossless |
| JPEG | .jpg, .jpeg | Lossy, bom para fotos |
| TGA | .tga | Legacy, games |
| BMP | .bmp | Limitado, suportado |
| EXR | .exr | HDR, linear |
| Formato | Extensões | Melhor uso |
|---|---|---|
| PNG | .png | Geral (lossless) |
| JPEG | .jpg | Compacto (lossy) |
| TGA | .tga | Games engines |
| EXR | .exr | Normal maps (float precision) |
Configurações de qualidade:
- PNG: Compression level 6 (padrão)
- JPEG: Qualidade 95% (padrão), configurável 0-100
- EXR: P-tiles, zip compression
materialize <INPUT> [OPTIONS]| Opção | Curta | Descrição | Padrão |
|---|---|---|---|
--output |
-o |
Diretório de saída | . |
--format |
-f |
Formato de saída (png, jpg, tga, exr) | png |
--quality |
-q |
Qualidade JPEG (0-100) | 95 |
--verbose |
-v |
Modo verbose | false |
--quiet |
Não listar arquivos gerados no sucesso | false | |
--help |
-h |
Mostrar ajuda | - |
--version |
-V |
Mostrar versão | - |
# Básico - gera na mesma pasta
materialize texture.png
# Resultado: texture_height.png, texture_normal.png, texture_metallic.png,
# texture_smoothness.png, texture_edge.png, texture_ao.png
# Diretório de saída específico
materialize texture.png -o ./materials/
# Formato diferente
materialize texture.png -f exr
# JPEG com qualidade baixa (mais compacto)
materialize texture.jpg -f jpg -q 80
# Verbose - mostra progresso; --quiet suprime a lista de arquivos
materialize texture.png -v
materialize texture.png --quiet
# Instalar a skill do Cursor no projeto atual
materialize skill install- Diretório como input:
materialize ./textures/ - Paralelização: Processa múltiplas imagens simultaneamente
- Progress bar: Indicação visual de progresso
- Arquivo de configuração:
materialize.tomlpara parâmetros customizados - Override por mapa:
--height-blur=5.0 --normal-intensity=2.5
- Janela de preview: SDL2-based, visualização 3D rápida
- Rotação/Pan/Zoom: Navegação básica
# Pipeline de assets
for texture in assets/textures/raw/*.png; do
materialize "$texture" -o assets/textures/processed/
done# Preparar textura para importação
materialize photo.jpg -f exr -o ~/blender_project/textures/
# Importar height para displacement, normal para bump, metallic para shader# Otimizar para web (JPEG compacto)
materialize texture.png -f jpg -q 85 -o ./public/textures/# Materiais de alta qualidade
materialize marble_scan.png -f exr -o ./materials/marble/
# EXR preserva precisão de cor para materiais PBR- Parâmetros fixos: Defaults hardcoded (smoothness base/metal, AO depth scale, etc.), sem ajuste fino
- Resolução máxima: Limitada por GPU memory (tipicamente 8K+)
- Um formato por execução: Todos os seis mapas no mesmo formato
- Sem alpha handling: Canal alpha ignorado no processamento
- AO simplificado: Cavity-style a partir do height; o Materialize original usa ray marching com normal+height
Limitações serão endereçadas conforme roadmap (configuração, tiled processing, etc.)