Commit Graph
51 Commits
Author SHA1 Message Date
MineTec bc07631fec simplify raytracer, fluid, sky and render code: air fog moved into the camera medium, sky colour computed only when read, single ao neighbour lookups, culling test before tint and ao, allocation-free fluid heights and flow angle, one fluid model lookup per cell, shared normal rotation and face fractions in the element intersector, unified side-face table, dead overloads/interface/enums and convenience constructors removed, comments trimmed 2026-11-04 22:53:25 +01:00
MineTec 4348b5fca0 vanilla fluid rendering: water and lava as fluid polygons with level/neighbour corner heights, flow textures, double-sided and overlay faces, texture alpha, opaque lava, waterlogged blocks and seagrass/kelp/bubble columns hold water, underwater and lava fog from biome water_fog attributes with gaussian biome blend, fogged sky disc, 6/7 fov in fluids, sky light under water also for underwater cameras, fluid test scenes 2026-11-04 22:07:02 +01:00
MineTec 9093c1ccfb christmas chest textures (24-26 december, chests and trapped chests, local_time item models, pixelpics.testDate test property), chest items from the item definition texture, shield banner patterns, item displays turned 180° like vanilla, dropped item lift from the ground model bounds, baby held-item offset, map decorations on framed vanilla maps (banners, frames, markers; none on photo maps), inverted block elements in items and displays (spawner, vault inner faces), deterministic test scenes, items/xmas/marker test scenes 2026-11-04 21:15:38 +01:00
MineTec 9e48e35680 block-entity contents from the decompiled renderers: enchanting table book (closed, open towards a nearby photographer), campfire and shelf items, vault display item, copper golem statues (poses, weathering), spawner and trial spawner mobs, beacon beam with glass colours, end portal and gateway star field, block-entity parts in block displays (lectern book, bell), outer item-model transformations for special models, contents test scenes 2026-11-04 20:15:40 +01:00
MineTec 318a309580 rescale rotated block elements like vanilla (cross plants, amethyst, campfire, fire, raised rails), euler x/y/z element rotations (hanging sign chains), inverted inner-face elements (spawner, vault), vanilla-like water: single surface blend with depth sky light instead of path-length density, water faces against glass/ice/leaves, block geometry and water test scenes 2026-11-04 19:25:17 +01:00
MineTec 2c2e9e2e32 render emissive eye/glow layers, per-model vanilla render types (cutout vs translucent, unshaded), sheep undercoat and vanilla wool colour, angry wolves, tipped arrow and invulnerable wither textures, small armor stand armor textures, elytra rest pose, vanilla mob arm poses (piglins, illagers), layer test scenes 2026-11-04 18:59:14 +01:00
MineTec 45d033bd89 entity state poses from the vanilla dump: sleeping/sitting/crouching/swimming/gliding, fox/cat/panda/parrot/bat/camel/sniffer poses with pose transforms, per-sub-model poses (baby pivots), armor-stand part poses and body pitch via rotation bindings, fish in water, beds, shoulder parrots, pose test scenes 2026-11-04 17:51:01 +01:00
MineTec 6660ebe557 pinhole camera ray map like vanilla (vertical fov 70, horizontal from aspect, pixel centres, no roll) instead of yaw/pitch corner rotation that squashed photos vertically by cos 35, shared buildRayMap in test tools, camera projection test scenes 2026-11-04 17:07:19 +01:00
MineTec 88bae41a03 primitive chunk table in world snapshot instead of colliding long-keyed hashmap, bounded cache for tinted/composited mob and banner textures, vanilla dump with nested model json, village benchmark and perf test scenes 2026-11-04 16:59:42 +01:00
MineTec b5baffebbd entity bvh with exact old tie order and allocation-free entity/element intersectors, entity benchmark harness and perf test scenes 2026-11-04 16:42:08 +01:00
MineTec 2d56a1910c render item frame contents with the item geometry like vanilla ItemFrameRenderer (fixed context, 8 rotations, all facings), frame block models, map contents incl. pixelpics photos, invisible frames, head skins/banner patterns from item meta 2026-11-04 16:03:34 +01:00
MineTec a743dc32c7 derive default layers, armor wearers, arms/chest pose flags and mob variant textures from the vanilla dump, drop the hardcoded lists 2026-11-04 15:48:03 +01:00
MineTec 022b080fce render all block entities from the dumped vanilla models with decompiled renderer poses, drop the cem block-entity path 2026-11-04 15:13:55 +01:00
MineTec c66ebaa942 render cat/wolf collars, charged creeper and wither armor energy swirl (additive), fox/dolphin mouth items 2026-11-04 14:45:57 +01:00
MineTec fbea9dfe08 match vanilla arrow/trident orientation incl. arrow impact shake, add projectile test scenes 2026-11-04 14:26:21 +01:00
MineTec addebffba1 add tools/build-vanilla-pack.sh to build the runtime resource pack from Mojang's client jar 2026-11-04 14:22:27 +01:00
MineTec a0b7ec3a90 apply vanilla uvlock under blockstate x/y rotations and face zero-thickness elements towards the ray
x rotations without uvlock already sampled the model-space element like
vanilla (lying logs/pillars, vertical observers/dispensers verified against
FaceBakery for every blockstate variant). The remaining divergence was
uvlock: faces kept model-extent UVs and were sampled in world orientation,
so top stairs, ceiling buttons, fences/walls and ceiling vines showed
shifted or rotated textures. Rotated uvlocked elements now also go through
the model-space path, with each face's final UVs mapped by vanilla's
BlockMath face transformation (inverted, as in FaceBakery).

Zero-thickness elements (vine, lichen) always reported their low face;
pick the face turned towards the ray instead.

Edge-case test plugin: xrot/xrot2 scenes (lying pillars, vertical
observers/dispensers/droppers, top stairs, ceiling buttons).
2026-11-04 14:11:40 +01:00
MineTec 5852d4b367 render chests from the dumped vanilla models (single, double, trapped, ender, copper) 2026-11-04 13:57:35 +01:00
MineTec 9a6c8b538d alpha-blend translucent block and entity texels (stained glass, slime skin, text backgrounds) 2026-11-04 13:49:45 +01:00
MineTec 37fa1d8f56 bind block textures to the model under blockstate rotations (vanilla UVs)
- face UV orientation now follows vanilla BlockElement.uvsByFace: north/
  east/down faces were sampled mirrored. Default UVs adjusted to match.
  Block and entity faces share one mapping (ElementIntersector.faceUv),
  so the separate blockUv mode of the entity intersector is gone.
- x/y blockstate rotations without uvlock: elements keep their model-space
  copy and are intersected with the inverse-rotated ray, so textures turn
  with the model exactly like vanilla (pistons facing down showed their
  side textures in different directions per face). Replaces the earlier
  up/down-only UV rotation. Display entities use the same model-space path.

Edge-case test plugin: piston/observer/dispenser scenes.
2026-11-04 13:36:15 +01:00
MineTec 73e521131b parse 26.x texture objects in block models (redstone, glass, panes)
Since 26.x a model texture can be an object {"sprite": ..., "force_translucent": ...}
instead of a string. The block-model DTO only accepted strings, so those
models failed to load and rendered as the grey fallback cube: redstone
wire and every glass block and pane (110 models). Accept both forms in
ModelResolver (shared with ItemGeometry).

Edge-case test plugin: redstone/glass scene.
2026-11-04 13:28:10 +01:00
MineTec 9e59435e13 edge-case test plugin: fence and door in the rotated-block scene 2026-11-04 13:24:48 +01:00
MineTec a99acad80c fix blockstate y-rotation direction and rotate top/bottom UVs without uvlock
Blockstate "y" rotations turned the geometry counter-clockwise while the
faces were re-assigned clockwise (vanilla). Every east/west variant of an
asymmetric block ended up mirrored on the wrong side of its cell: shelf
mushrooms and ladders floated away from their support, stairs faced
backwards. Rotate clockwise like vanilla, adjust element-rotation axes,
and turn up/down face textures with the model unless uvlock is set.

Edge-case test plugin: shelf mushroom (side + top view) and rotated-block
scenes.
2026-11-04 13:20:40 +01:00
MineTec 32afe08f03 render entities from vanilla client models, add items, displays and leashes
- dump entity models straight from the unobfuscated client jar
  (tools/VanillaModelDump.java, tools/update-vanilla-models.sh): models posed
  by vanilla setupAnim, baby/variant/layer models, renderer transforms,
  default textures, pose variants (sitting, holding items, illager arms)
  and all layer definitions; the old CEM template is only a fallback now
- fix adult zombies captured as babies, zero-thickness planes (wings,
  fins) and back faces in the entity intersector
- held items, head items (pumpkins, skulls), shields, elytra, saddles and
  body equipment for every mount, armor following the pose
- block/item/text display entities, dropped items, falling blocks, primed
  TNT, minecart contents, block entities inside displays, leash ropes
- item models resolved from the 26.x item definitions with display
  transforms; generated items extruded like vanilla
- bundle the vanilla font definitions as fallback so sign/text rendering
  works with packs that lack font/*.json
- one failing entity no longer aborts the whole photo
- edge-case test plugin (tools/edgecase-plugin) and offline harnesses
2026-11-04 13:11:39 +01:00
MineTec 5904814e69 reduce harsh dithering: constrained error diffusion in Lab space
Colors the map palette cannot represent (light sky blue, sunset tones) were
approximated by mixing far-apart palette colors, producing a high-contrast
checkerboard in the sky and stray speckles elsewhere. Diffuse the error in
CIELAB and only allow palette colors nearly as close to the original as the
best match, so the dither blends between neighbouring colors only.
2026-11-04 11:29:32 +01:00
MineTec 2d84a35cc4 update to Paper 26.3: load biome colors from vanilla data, fix dappled forest grass
Biome grass/foliage/dry-foliage/water colors and grass color modifiers are now
read from the server's built-in worldgen biome data at runtime, with a 26.3
snapshot as fallback. Fixes missing biomes (dappled_forest, pale_garden,
sulfur_caves) and several outdated values. Replace deprecated ExactChoice
constructors.
2026-11-04 11:19:08 +01:00
MineTec 8dd295e5d6 update to Paper 26.2, Java 25 and Gradle 9.6.1 2026-10-08 23:33:14 +02:00
MineTec 6d60b4f74b improve crafting and camera behavior: enforce single-item results, add exact crafting choices, refine item metadata, and update textures 2026-07-23 22:04:45 +02:00
MineTec 7063d27fb4 add Spotless plugin: enforce code formatting 2026-06-21 18:32:46 +02:00
MineTec dce7804fed refactor: simplify rendering logic, remove redundant cases, and replace bounds checks with Math.clamp 2026-06-21 18:09:11 +02:00
MineTec 1d3040610e refactor: replace fully qualified class names with imports and simplify code readability across rendering modules 2026-06-21 17:56:32 +02:00
MineTec f83ccdc7ff add RenderManager: improve CPU control with global render queue and parallel trace pooling 2026-06-21 17:49:57 +02:00
MineTec 220cda1deb add survival mode support: camera, film system, and dynamic crafting recipes for photos 2026-06-21 17:30:24 +02:00
MineTec fed94f97d1 add sign text rendering: support font loading, text rasterization, and color adjustments for signs 2026-06-21 16:15:57 +02:00
MineTec 5330948dbd enhance entity rendering: add support for villager levels, horse armor, llama decor, and saddle/chest states 2026-06-21 15:32:53 +02:00
MineTec 094aa463c5 refactor and simplify rendering logic; remove redundant code and consolidate utility methods 2026-06-21 14:42:10 +02:00
MineTec c5d5eae1c1 refactor block entity handling and add support for invisible materials 2026-06-21 14:22:10 +02:00
MineTec f1844a9dd9 wire up rendering + build config 2026-06-07 18:57:53 +02:00
MineTec 211c7e8479 resource-pack render engine 2026-06-07 18:57:40 +02:00
MineTec 18c5fc4ffc remove bundled vanilla assets 2026-06-07 18:57:13 +02:00
MineTec 3f0814639d cleanup 2025-08-03 11:13:47 +02:00
MineTec bf7e52138d updated project, configured gradle 2025-07-12 12:15:26 +02:00
MineTec 683cf8d80c fixed merge of texture support 2025-07-12 10:09:20 +02:00
MineTec 0a0075ce05 Merge branch 'develop-textures' into develop
# Conflicts:
#	.idea/modules.xml
#	src/main/java/eu/mhsl/minecraft/pixelpics/Main.java
#	src/main/java/eu/mhsl/minecraft/pixelpics/render/raytrace/AdvancedRaytracer.java
#	src/main/java/eu/mhsl/minecraft/pixelpics/render/raytrace/DefaultRaytracer.java
#	src/main/java/eu/mhsl/minecraft/pixelpics/render/registry/AdvancedModelRegistry.java
#	src/main/resources/plugin.yml
2025-07-12 10:05:38 +02:00
Pupsi 2d4f820f04 added advanced texture support 2025-03-22 17:28:43 +01:00
MineTec 838eafcf56 renamed project from PixelPic to PixelPics matching name scheme of PixelBlocks 2025-03-21 19:27:58 +01:00
Pupsi ab97315910 added advanced model registry 2025-03-21 19:22:15 +01:00
Pupsi c5c21d89b6 added texture files and fixed short grass model 2025-03-19 18:03:43 +01:00
MineTec ddbe59a5ac cleanup and introducing plugin structure 2025-03-19 17:40:18 +01:00
Pupsi 0103a654c3 basic image generation based on WinX64/bukkit-screenshot 2025-03-18 21:34:22 +01:00