AutoPBR generates a PBR overlay for a Minecraft resource pack (input .zip / .jar) by creating:
- LabPBR specular (
*_s.png) - Normal maps (
*_n.png, with height packed in alpha for POM-style workflows)
Output is a separate .zip containing only generated textures + pack.mcmeta / pack.png (when present). Stack it above the base pack in-game.
src/AutoPBR.App: desktop UI (Avalonia)src/AutoPBR.Cli: command-line toolsrc/AutoPBR.Core: conversion engine
- .NET 8 (SDK to build, runtime to run)
- Optional GPU normals (DeepBump) and GPU specular (my own model): uses ONNX Runtime CUDA on Windows when CUDA/cuDNN DLLs are available. See
src/AutoPBR.Core/Data/native/README.md.
dotnet run --project src/AutoPBR.Cli -- "in_pack.zip" "out_pack_PBR.zip" --fast --normal 1.5 --height 0.12Common flags:
--fast--normal <float>--height <float>--ignore-plants--tag-rules <file.json>
dotnet run --project src/AutoPBR.AppFor daily App UI work, build only the App stack (not the full solution with all test projects):
dotnet build src/AutoPBR.App/AutoPBR.App.csproj
# or open AutoPBR.App.slnf in the IDE| Work | Build target |
|---|---|
| App UI / OpenGL preview | AutoPBR.App.slnf or App csproj |
| Core conversion / CLI | Core + Cli csproj |
| Parity / geometry | AutoPBR.Core.slnf or full solution |
See build performance for timings, binlogs, and F5/Cursor launch setup.
dotnet build AutoPBR.slnAutoPBR can use an ONNX specular predictor (diffuse -> _s RGBA) when enabled in the app/CLI.
Trainer + sample dataset live in tools/MlSpecularTrainer. Channel semantics and ONNX ↔ LabPBR alignment are documented in docs/ml-specular-labpbr-contract.md.
- Tag / keyword system — rules, keywords, MiniLM, UI.
- Weighted vs Unweighted (heuristic vs ML) — when MiniLM runs, flag meanings, and
MaterialTagSemanticResolution.