All Mods Resource Packs Data Packs Shaders Modpacks Plugins
Vulkan PostFX

Vulkan PostFX

by IonHex975 • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

Vulkan PostFX

Vulkan PostFX, also known as VPFX, is an experimental VPFX shader pack loader and post-processing framework for Minecraft’s modern Vulkan-based rendering path.

It allows external VPFX shader packs to add screen-space visual effects such as color grading, vignette, tone mapping, highlight compression, cinematic look adjustments, depth-based effects, and early shadow-depth experiments.

This project is still experimental, but it already supports ZIP-based VPFX shader packs through Minecraft’s resource pipeline.


Start here

For the best first experience, install both:

  • Vulkan PostFX — the loader and runtime
  • VPFX Minimal Showcase — the official minimal example pack

Vulkan PostFX is not a full Iris / OptiFine replacement.

The goal is to build a new VPFX workflow for Minecraft’s Vulkan rendering path, starting from reliable external pack loading and gradually moving toward a more capable shader runtime.


What Vulkan PostFX does

Vulkan PostFX currently focuses on:

  • external ZIP-based VPFX shader pack loading
  • graph-based post-processing configuration
  • runtime resource pack materialization
  • runtime resource pack injection
  • external post-chain execution
  • scene color sampling
  • scene depth capture
  • experimental shadow depth input
  • diagnostics for broken packs
  • early native runtime experiments

This means Vulkan PostFX is already executing a real external VPFX pack pipeline, not just parsing ZIP files.

external ZIP shader pack
  -> VPFX manifest / graph validation
  -> runtime resource pack materialization
  -> Minecraft resource system injection
  -> external post-chain execution

Current features

External VPFX pack loading

Vulkan PostFX supports ZIP-based VPFX shader packs containing files such as:

pack.json
post_effect/main.json
shaders/<path>.vsh
shaders/<path>.fsh

Shader references use the following format:

<pack_id>:<path>

For example:

vpfx_minimal_showcase:composite/final

which resolves to:

shaders/composite/final.vsh
shaders/composite/final.fsh

Shader paths are not limited to a fixed post/ directory layout.


Runtime namespace rewriting

External packs are rewritten into isolated runtime namespaces to reduce conflicts with built-in resources and other packs.

This allows VPFX packs to behave more like external visual packages while still being routed through Minecraft’s resource system.


Runtime resource pack injection

External ZIP contents are materialized into runtime resource packs during startup / resource reload and injected into Minecraft’s client resource system.

This is one of the core parts of the VPFX loading pipeline.


External post-chain execution

Vulkan PostFX can load external post chains through Minecraft’s ShaderManager and execute them through the current minecraft_postchain backend.

The current stable execution path is still based on Minecraft’s post-chain system.


Scene, depth, and shadow inputs

Current VPFX runtime inputs include:

minecraft:scene_color
vulkanpostfx:scene_depth
vulkanpostfx:shadow_depth
minecraft:main

These inputs are used for screen-space effects, depth-based experiments, and shadow-depth debugging.


Failure diagnostics

When a VPFX pack fails to load or execute, Vulkan PostFX can generate diagnostic information for issues such as:

  • missing shader files
  • invalid graph targets
  • sampler mismatches
  • shader path errors
  • external target problems
  • pipeline creation failures

If a pack is broken, the goal is to make the failure understandable instead of silently failing.


Experimental native runtime

Vulkan PostFX is gradually moving beyond Minecraft’s default post-chain backend.

Current experimental native runtime progress includes:

  • native runtime support checks
  • resource mapping dry-runs
  • same-target hazard detection
  • transient color target planning
  • mainTarget -> transientColor copy validation
  • builtin native fullscreen passthrough draw
  • opt-in diagnostic mode for testing the native passthrough path

The current experimental native path can be summarized as:

minecraft:main
  -> transientColor
  -> builtin native fullscreen passthrough
  -> minecraft:main

This is still experimental and opt-in.

User VPFX shaders are not fully executed natively yet.


Current sample pack

VPFX Minimal Showcase

The official minimal example pack demonstrates:

  • VPFX pack.json
  • graph-based post-effect configuration
  • non-post/ shader paths
  • minecraft:scene_color sampling
  • minecraft:main output
  • basic screen-space look adjustment

It is the recommended starting point for testing Vulkan PostFX.


Usage

1. Place a VPFX shader pack

Put the VPFX shader pack ZIP into the shaderpacks folder of your Minecraft instance.

For development runs, this is usually:

run/shaderpacks/

2. Select the active pack

Edit the config file:

config/vulkanpostfx.json

For development runs, this is usually:

run/config/vulkanpostfx.json

Example:

{
  "active_pack_id": "vpfx_minimal_showcase"
}

3. Launch the game

When the client starts, Vulkan PostFX will:

  • scan available VPFX ZIP packs
  • parse pack.json
  • select the active pack
  • validate the VPFX graph
  • materialize runtime resources
  • inject runtime resources into the client resource system
  • attempt to load the corresponding external post chain

4. Toggle effects

By default:

F8

toggles the current VPFX effect.

F9

toggles the experimental shadow depth debug view.


Architecture overview

Current external pack path:

[shaderpacks/*.zip]
        |
        v
[VPFX Manifest / Graph Parse]
        |
        v
[Active Pack Selection]
        |
        v
[Runtime Materialization]
        |
        v
[Runtime Resource Pack Injection]
        |
        v
[minecraft_postchain backend]
        |
        v
[External VPFX Post Chain Execution]

Experimental native runtime path:

[VPFX Native Runtime]
        |
        v
[mainTarget -> transientColor]
        |
        v
[builtin native fullscreen passthrough]
        |
        v
[minecraft:main]

What this is

Vulkan PostFX is currently best described as:

  • a working VPFX ZIP shader pack loader
  • a post-effect based execution backend
  • an experimental Vulkan shader runtime foundation
  • an early native runtime research project

It is designed for Minecraft’s modern Vulkan rendering path and for VPFX-specific shader packs.


What this is not

Vulkan PostFX is not yet a mature drop-in replacement for Iris or OptiFine.

Most Iris / OptiFine shader packs cannot be used directly without porting.

Traditional shader pipeline compatibility is not the current focus of the first development stages.


Current limitations

Vulkan PostFX is still alpha software.

The following traditional shader pipeline components are not fully supported yet:

  • gbuffers_*
  • full shadow.* compatibility
  • full composite.* compatibility
  • screen-space reflections
  • volumetric fog
  • natural cloud rendering
  • material-aware lighting
  • dimension-specific shader routing such as world1/ and world-1/
  • direct Iris / OptiFine shader pack compatibility

Native runtime limitations

The native runtime currently supports only an experimental builtin fullscreen passthrough path.

It does not yet support:

  • user shader native execution
  • multi-pass native execution
  • custom native render targets
  • native scene depth input
  • native shadow depth input
  • compute shaders
  • native volumetric lighting
  • native cloud rendering
  • RT / path tracing

Design philosophy

The core idea of Vulkan PostFX is not to force every traditional shader-pack semantic into Vulkan at once.

Instead, the project follows a staged approach:

make external VPFX packs actually run
  -> improve visual fidelity
  -> stabilize the runtime
  -> expand graph execution
  -> gradually bring back advanced visual features

In other words:

first establish a truly executable external shader chain, then gradually bring back the visual logic that matters.


Notes

This is a fast-evolving experimental project.

If you are looking for a ready-made, fully compatible Iris / OptiFine replacement, Vulkan PostFX is not there yet.

But if you care about:

  • Minecraft’s Vulkan rendering path
  • VPFX shader pack experiments
  • external ZIP shader pack loading
  • modern runtime resource pack injection
  • scene / depth / shadow based post effects
  • experimental native render graph runtime development

then this project is built exactly for that.


Update policy

Vulkan PostFX is expected to follow Minecraft snapshot updates quickly.

The project may update weekly, or more often when Minecraft snapshots or VPFX runtime milestones require it.

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.2
Fabric
4mo ago 1
26.2
Fabric
4mo ago 1
26.2
Fabric
4mo ago 1
26.3-snapshot-1
Fabric
4mo ago 1
26.3-snapshot-1
Fabric
4mo ago 1
26.2
Fabric
4mo ago 1
26.2
Fabric
4mo ago 1
26.2
Fabric
4mo ago 1
26.2
Fabric
4mo ago 1
26.2
Fabric
4mo ago 1
26.2-rc-2
Fabric
5mo ago 1
26.2-rc-2
Fabric
5mo ago 1
26.2-rc-2
Fabric
5mo ago 1
26.2-rc-2
Fabric
5mo ago 1
26.2-rc-2
Fabric
5mo ago 1
26.2-pre-2
Fabric
5mo ago 1
26.2-pre-1
Fabric
5mo ago 1
26.2-snapshot-8
Fabric
5mo ago 1
26.2-snapshot-7
Fabric
5mo ago 1
26.2-snapshot-7
Fabric
6mo ago 1
26.2-snapshot-2
Fabric
6mo ago 1
26.2-snapshot-2
Fabric
6mo ago 1
26.2-snapshot-2
Fabric
6mo ago 1
26.2-snapshot-2
Fabric
6mo ago 1
26.2-snapshot-2
Fabric
6mo ago 1
26.2-snapshot-2
Fabric
6mo ago 1
26.2-snapshot-2
Fabric
6mo ago 1
26.2-snapshot-2
Fabric
6mo ago 1
26.2-snapshot-2
Fabric
6mo ago 1
26.2-snapshot-2
Fabric
7mo ago 1
26.2-snapshot-2
Fabric
7mo ago 1
26.2-snapshot-2
Fabric
7mo ago 1
# Vulkan PostFX 1.15.11

This release focuses on the **native VPFX render target lifecycle**, improving performance, resource safety, temporal effect correctness, and backend fallback reliability.

## Highlights

  • Native render targets are now reused across frames instead of being recreated every frame.
  • Render target resources are now owned by the active VPFX session.
  • History and persistent targets are isolated between pack activations.
  • History buffers now advance only when their target was actually written during the frame.
  • Native runtime failures continue to fall back safely to Minecraft PostChain.

## Added

  • Added a session-scoped native render target resource manager.
  • Added reusable caching for:

  • Scene color snapshots
  • Transient render targets
  • Persistent render targets
  • History targets
  • Cross-frame ping-pong targets
  • Added immutable native target descriptors containing:

  • Target identifier
  • Width and height
  • Texture format
  • Depth usage
  • Target type
  • Added native resource lifecycle statistics:

  • Allocations
  • Reuses
  • Recreations
  • Disposals
  • Allocation failures
  • Active owned resources
  • Active borrowed resources
  • Resource generation
  • Added native target statistics to the VPFX debug HUD.
  • Added lifecycle validation tests for resource reuse, resizing, failures, history state, session isolation, and fallback behavior.

## Changed

  • Native render targets now remain allocated for the lifetime of the active VPFX session when their descriptors remain unchanged.
  • The meaning of a transient target has been clarified:

  • Its contents do not persist between sessions.
  • Its GPU allocation may still be reused between frames.
  • Persistent, history, and ping-pong resources are now fully session-scoped instead of being stored globally by runtime namespace.
  • Render target recreation now follows a safer sequence:

``text
Create the replacement resource
→ Replace the cached reference
→ Destroy the previous resource
`

  • Native fallback now immediately releases native resources owned by the failed session.
  • Re-selecting the same shader pack still creates a new session and retries the native runtime.
  • Frame render target wrappers are now explicitly non-owning.

  • GPU resource destruction is handled exclusively by the session resource manager.
  • Native clear behavior is now more deterministic:

  • Transient targets are cleared on their first write each frame.
  • Subsequent writes during the same frame preserve existing contents.
  • Persistent and history buffers are initialized when created or resized.
  • Depth targets use a default clear depth of 1.0`.
  • Clear-color values are now defensively copied to prevent accidental shared-state modification.

## Fixed

  • Fixed native render targets being repeatedly created and destroyed every frame.
  • Fixed old sessions potentially interfering with resources created by a new activation of the same pack.
  • Fixed resource leaks when only part of a history or ping-pong target pair could be created.
  • Fixed failed target recreation destroying the previous valid resource too early.
  • Fixed failed allocations leaving incomplete cache entries.
  • Fixed disposed native sessions silently returning to per-frame target allocation.
  • Fixed native resources remaining allocated after the current session fell back to PostChain.
  • Fixed history buffers sampling undefined memory on their first frame.
  • Fixed failed frames incorrectly advancing history state.
  • Fixed history and ping-pong targets being recreated without correctly invalidating previous history.
  • Fixed native target format changes incorrectly reusing an incompatible cached target.
  • Fixed persistent and history targets being reported as externally borrowed resources.
  • Fixed per-frame logging caused by reused persistent targets.
  • Fixed mutable default clear-color arrays being exposed to callers.
  • Fixed history targets advancing even when no pass wrote to them during the frame.

## History Buffer Correctness

History and cross-frame ping-pong targets now advance only when both conditions are met:

1. The native frame completes successfully.
2. The specific target was actually written during that frame.

Targets that were not written retain their previous:

  • Read buffer
  • Write buffer
  • History validity state

This prevents temporal effects from accidentally sampling cleared, stale, or unwritten buffers.

## Resource Ownership

VPFX now distinguishes between resources it owns and resources borrowed from Minecraft or other systems.

### VPFX-owned resources

  • Scene color snapshots
  • Transient render targets
  • Persistent render targets
  • History buffer pairs
  • Cross-frame ping-pong buffer pairs
  • Diagnostic native targets

### Borrowed resources

  • Minecraft main framebuffer
  • Scene depth
  • Shadow depth
  • External runtime textures

Borrowed resources are never destroyed by VPFX.

## Validation

The native target lifecycle validation suite now contains **36 passing checks**, covering:

  • Resource reuse
  • Resize recreation
  • Format changes
  • Allocation failure recovery
  • Partial double-buffer creation rollback
  • Session disposal
  • Same-namespace session isolation
  • Delayed old-session fallback
  • History initialization and commit behavior
  • Native fallback cleanup
  • Pack switching
  • Clear-color isolation
  • History commit gating

## Notes

  • Ping-pong targets currently use **cross-frame double buffering**.
  • Same-frame multi-pass ping-pong alternation is not yet supported.
  • This release does not add new built-in visual effects.
  • VPFX continues to prefer the native runtime and falls back to Minecraft PostChain only for the current failed activation.
  • Selecting the pack again will retry the native backend.

# Vulkan PostFX 1.15.9

## Highlights

This update focuses on **loader stability**, **native-first backend selection**, and **VPFX pack validation**.
VPFX is still a post-processing shader loader, not a built-in shader pack.

## Added

  • Added an internal **Runtime Graph** system for VPFX packs.

  • VPFX packs can now be parsed into a backend-neutral runtime structure before execution.
  • This improves validation, debugging, and future backend support.

  • Added support for VPFX **uniform bindings**.

  • Supported binding types:

  • $param:<id> for user parameters
  • $builtin:<id> for built-in runtime values
  • $target:<id> for render targets

  • Added detailed VPFX pack load results.

  • Pack loading now records clearer failure stages such as:

  • manifest parsing
  • graph parsing
  • graph validation
  • runtime graph building
  • shader preprocessing
  • resource resolving

  • Added additional validation for VPFX pack definitions.

  • Invalid parameter references
  • Unknown built-in uniforms
  • Missing render targets
  • Invalid pass dependencies
  • Unsafe or unsupported graph definitions

## Changed

  • VPFX now follows a clearer **native-first backend policy**.

  • Every time a VPFX pack is selected or refreshed, the loader will try the native runtime first.
  • If the native runtime fails for that activation, VPFX falls back to the Minecraft PostChain backend.
  • The failure is not treated as a permanent blacklist.
  • Selecting the same pack again will retry the native runtime.

  • Improved backend selection behavior.

  • Backend selection is now treated as a per-activation decision.
  • Previous native runtime failures are cleared when refreshing the active pack.

  • Improved PostChain materialization.

  • VPFX-only metadata fields are removed before generating Minecraft PostChain resources.
  • This prevents loader-only fields such as uniform binding metadata from leaking into vanilla PostChain JSON.

## Fixed

  • Fixed cases where a previous native runtime failure could affect later activations of the same pack.
  • Fixed unclear fallback behavior between the native runtime and Minecraft PostChain backend.
  • Fixed several pack validation paths where invalid VPFX pack definitions could fail too late.
  • Fixed internal handling for VPFX-specific uniform binding metadata during resource rewriting.

## For Pack Authors

This release improves error visibility for VPFX pack development.
Broken packs should now fail with clearer diagnostics instead of silently falling back or crashing at a later runtime stage.

Recommended checks for pack authors:

  • Make sure all $param:<id> bindings reference declared parameters.
  • Make sure all $target:<id> bindings reference valid render targets.
  • Avoid relying on undefined built-in uniforms.
  • Test native runtime behavior and PostChain fallback separately.

## Notes

This release does not add new built-in visual effects.
The main goal of 1.15.9 is to make the VPFX loader core more stable, more debuggable, and safer for future native backend development.

Add homepage and issues page.
Writing colored lighting.

## Vulkan PostFX 1.15.7+mc26.3-snapshot1-2026-06-25
Add more language support.
Add diagnostion part.
Fix some bugs.



# Vulkan PostFX 1.15.6 Changelog

## Added

  • Added the **native-first safe fallback** runtime strategy.

  • VPFX now attempts to use the native direct backend first.
  • If the native backend is unsupported, fails preparation, or fails during frame execution, VPFX automatically falls back to the Minecraft PostChain backend.
  • Native backend failures no longer disable the active VPFX pack by default.

  • Added native fallback stage tracking.

  • VPFX can now report where the fallback happened:

  • SUPPORT_CHECK
  • PREPARE
  • FRAME_EXECUTION
  • HUD and diagnostics can now display the native fallback reason.

  • Added initial Pack Validation UI support.

  • Invalid VPFX packs are now shown in the pack list instead of being silently ignored.
  • Invalid packs are marked as Invalid.
  • Clicking an invalid pack copies a validation report for easier debugging and issue reporting.

  • Added scan-stage issue tracking for VPFX packs.

  • Missing pack.json
  • Manifest parse failures
  • Graph parse failures
  • Missing shaders
  • Fatal validation errors
  • ZIP read failures

## Changed

  • Changed VPFX backend selection to prefer native direct execution while keeping Minecraft PostChain as the safe fallback backend.
  • Changed native backend failure handling so that native failures fall back to PostChain instead of failing the whole pack.
  • Changed ZIP pack scanning so broken VPFX packs are preserved as invalid UI entries.
  • Changed the shader pack selection screen to use VpfxPackListEntry, allowing packs to be displayed as:

  • VALID
  • WARNING
  • INVALID
  • Improved fallback diagnostics shown in HUD, UI services, and failure reports.

## Fixed

  • Fixed native direct backend failures incorrectly disabling the active VPFX pack.
  • Fixed native frame execution failures potentially causing black screens or broken rendering state.
  • Fixed missing native fallback stage information in diagnostics.
  • Fixed invalid VPFX ZIP packs being silently skipped during scanning.
  • Fixed missing shader, missing target, malformed graph, and broken manifest errors not being visible from the UI.
  • Fixed scan-stage exceptions potentially disrupting the whole pack list.

## Removed

  • Removed the old behavior where invalid VPFX packs were silently ignored during scanning.
  • Removed the old behavior where native backend failure could immediately mark the active VPFX pack as failed.
  • Removed several log-only error paths by surfacing pack validation issues through the UI instead.

## Developer Notes

This release focuses on VPFX v0.2 stabilization. The main goal is not to add new visual effects, but to improve backend reliability, automatic fallback behavior, and pack author debugging.

Recommended test cases:

  • A VPFX pack that works on the native backend.
  • A VPFX pack that cannot use native but works on PostChain.
  • A pack with a missing shader file.
  • A pack with an invalid graph target reference.
  • A ZIP pack with a missing or malformed pack.json.

# Vulkan PostFX 1.15.5

## Changes
  • Added entity shadow casters for VPFX shadow depth.
  • Disabled vanilla circular entity shadows while VPFX world shadows are active.
  • Fixed shadow-space coordinate handling so shadow rendering no longer depends on player view direction.
  • Improved shadow receiver stability and reduced terrain-side shadow artifacts.
  • Fixed several bugs.
# Vulkan PostFX 1.15.4

This update fixes several bugs and improves overall stability.

### Fixed
  • Fixed some shader pack selection screen issues.
  • Fixed the VPFX status HUD toggle not following the UI setting.
  • Fixed external shader packs not properly overriding built-in shadow behavior.
  • Fixed several minor UI layout issues.

### Changed
  • Improved shader pack loading and UI behavior.
# Vulkan PostFX 1.15.1

This update introduces the first-generation VPFX in-game UI.

The old pack selection experience has been replaced with a cleaner Reese-style VPFX settings screen. This makes pack switching, backend inspection, reload testing, and debugging much easier while reducing the amount of screen space taken by large vanilla-style buttons.

## Added

  • Added the first-generation VPFX settings UI.
  • Added a new Reese-style VPFX pack/settings screen.
  • Added tabbed VPFX pages:

  • Packs
  • General
  • Backend
  • Debug
  • Developer
  • About
  • Added a compact VPFX pack browser.
  • Added pack status display, including source, backend hint, pass count, and target count.
  • Added backend status display for the active runtime backend.
  • Added native direct / PostChain runtime state visibility in the UI.
  • Added fallback reason and failed effect information to the UI state snapshot.
  • Added VpfxUiState for UI-facing runtime snapshots.
  • Added VpfxUiService as a UI facade for reading VPFX state and submitting UI requests.
  • Added first-pass tooltip support for UI rows and buttons.
  • Added compact action buttons for Apply, Reload, and Done.
  • Added paged pack listing for cleaner navigation when multiple VPFX packs are available.
  • Added a 26.2 snapshot-compatible screen bridge for opening and closing VPFX screens more safely across unstable mappings.

## Improved

  • Improved the VPFX pack selection workflow.
  • Improved visibility of the currently active VPFX pack.
  • Improved visibility of the active backend.
  • Improved development ergonomics when testing multiple VPFX packs.
  • Improved UI readability by replacing the old large-button layout with a cleaner custom layout.
  • Improved diagnostics visibility for broken or fallbacking VPFX packs.
  • Improved separation between UI code and runtime code.

## Changed

  • F7 now opens the new VPFX settings / pack browser experience.
  • Pack selection is now handled through the new VPFX UI.
  • Runtime and pack information is now collected through a UI snapshot layer before being rendered.
  • VPFX settings are now organized into category pages instead of a flat button list.

## Notes

This is the first generation of the VPFX UI.

The goal of this version is to establish a cleaner in-game control surface for VPFX development and testing. The UI is not final yet, and more polish will be added in later versions.

Future UI work may include:

  • more complete tooltips
  • better pack detail panels
  • clearer native compatibility diagnostics
  • more developer/debug controls
  • visual polish
  • improved responsive layout behavior
  • better localization coverage

Vulkan PostFX is still experimental. The native runtime, VPFX pack format, and UI may continue to change as the project evolves.

# Vulkan PostFX 1.15.0 — Native & Shadow Stabilization

## Highlights

VPFX 1.15.0 focuses on stabilizing the new native rendering path and fixing several long-standing shadow artifacts. This release improves shader pack switching, native backend selection, shadow depth handling, and terrain shadow receiver logic.

## Added

  • Added native-first shader pack selection.

  • VPFX now prefers native-compatible external VPFX packs when available.
  • Unsupported packs can still fall back to the Minecraft PostChain backend.
  • Added support for native shadow depth inputs.

  • Native pipelines can now recognize vulkanpostfx:shadow_depth and minecraft:shadow_depth.
  • Added support for use_depth_buffer admission in native graph validation.

  • Valid scene/depth target usage is no longer rejected too early.
  • Added configurable diagnostic throttling options for native and shadow logs.
  • Added default in-world hard resource reload for development builds.

  • Shader pack switching inside a world is now much easier during testing.

## Changed

  • Reworked terrain shadow receiver logic.

  • Replaced unstable screen-derivative receiver normal estimation.
  • Replaced unreliable direct Normal attribute usage.
  • Added a stable axis/grid-based receiver mask for block surfaces.
  • Reduced shadow artifacts on vertical block faces.

  • Vertical surfaces that should not receive strong parallel-light shadows are now filtered more safely.
  • Reduced excessive native runtime and shadow diagnostic logging.

  • Legacy NR-1C / NR-1F diagnostic output is now silent by default.
  • Shadow pass and shadow sync logs are throttled by default.
  • Improved failed-pack warning behavior.

  • Failed external pack warnings are no longer spammed every frame.
  • Improved shader pack reload behavior in-world.

  • Development workflow is smoother when repeatedly changing VPFX ZIP packs.

## Fixed

  • Fixed shadow/light behavior appearing to rotate with the player camera.
  • Fixed excessive striping on vertical faces perpendicular to the sun/moon movement plane.
  • Fixed use_depth_buffer=true causing valid VPFX packs to be rejected from native admission.
  • Fixed repeated warning spam when an external VPFX pack was marked as failed.
  • Fixed old builtin/default configuration behavior that could leave users stuck on the Builtin Debug Pack.
  • Fixed native backend selection not being obvious when external VPFX packs were available.

## Developer Notes

  • The current stable terrain shadow receiver strategy is axis/grid based.
  • VPFX no longer relies on screen-space dFdx/dFdy normals for terrain shadow receiver masking.
  • VPFX also does not yet implement the full Iris/Sodium-style extended terrain vertex normal pipeline.
  • Native multi-pass execution and Showcase pack support continue to be developed.
  • Entity and player shadows remain a later-stage task.

## Recommended Test Points

  • Test vertical walls under sun and moon lighting.
  • Test rotating the camera while observing terrain shadows.
  • Test F7 shader pack switching inside a loaded world.
  • Test native-compatible VPFX packs with scene depth and shadow depth inputs.

# Vulkan PostFX 1.14.1 — Stability & Shadow Tuning

This is a stability-focused update for Minecraft 26.2-rc2.

## Added

  • Added safer VPFX shader pack auto-selection behavior.
  • Added configurable sun/moon shadow tuning through JVM properties.
  • Added throttled shadow diagnostics to reduce log spam.

## Changed

  • Improved sun/moon primary light selection near sunset and moonrise.
  • Moonlight shadows are now much weaker by default.
  • Shadow intensity now fades more smoothly during light transitions.
  • /vpfx reload auto is safer in-world and avoids unnecessary hard resource reloads.

## Fixed

  • Fixed cases where VPFX could get stuck on the built-in invert debug effect.
  • Fixed fallback behavior when external VPFX pack loading fails.
  • Fixed excessive per-frame shadow pipeline logging.
  • Fixed sunset/moonrise shadow flickering caused by sun/moon light source fighting.

## Notes

  • Native VPFX runtime work is still experimental.
  • Entity shadows and player shadows are not yet part of this release.
  • If a shader pack fails to load, VPFX should fall back to vanilla rendering instead of disrupting the world.

## Shadow tuning properties

Advanced users can tune shadow behavior with:

``bash
  • Dvulkanpostfx.shadow.moonMaxIntensity=0.10
  • Dvulkanpostfx.shadow.baseDarkness=0.42
  • Dvulkanpostfx.shadow.logIntervalFrames=300
``
These are optional and mainly intended for testing.
## Vulkan PostFX — Minecraft 26.2 Pre-Release 2 Compatibility Update

This release updates Vulkan PostFX for **Minecraft 26.2 Pre-Release 2** and continues stabilization work for the experimental VPFX Native Runtime.

### Highlights

  • Added Minecraft 26.2 Pre-Release 2 compatibility.
  • Added **NR-1F-C.2** user shader RenderPipeline cache dry-run.
  • Added pipeline cache diagnostics for user shader native pipeline creation.
  • Fixed invalid runtime shader ResourceLocation construction.
  • Split vertex and fragment shader runtime locations.
  • Improved fallback logging for user shader pipeline creation.
  • Resource reload now clears cached user shader pipelines safely.

### Native Runtime Status

The VPFX Native Runtime path remains experimental and opt-in.

This release can create and cache a user shader RenderPipeline in dry-run mode, but it still does **not** execute the user shader draw path.

Current behavior:

  • User shader RenderPipeline creation: enabled for dry-run validation
  • User shader native draw: disabled
  • Actual draw pipeline: built-in passthrough
  • External PostChain skip behavior: unchanged
  • Native backend default state: disabled

### Tested

  • ./gradlew clean build
  • Client startup
  • In-game native runtime execution path
  • Built-in passthrough draw
  • User shader RenderPipeline creation dry-run
  • Resource reload cache invalidation

### Notes

This update does not add multi-pass native rendering, custom native targets, scene depth native access, shadow depth native access, or VPFX schema changes.
## Vulkan PostFX — 26.2 Pre-Release 1 Compatibility Update

This release adds compatibility for **Minecraft 26.2 Pre-Release 1**.

### Changes

  • Updated project configuration for Minecraft 26.2 Pre-Release 1.
  • Updated Gradle properties and dependency targets.
  • Rebuilt against the latest pre-release environment.
  • Verified that the mod loads correctly in-game.
  • Confirmed that core post-processing functionality works as expected.

### Testing

The update has been tested successfully with Minecraft 26.2 Pre-Release 1. Client startup, mod loading, and core rendering functionality were all verified.

### Notes

Vulkan support is still experimental in the Minecraft 26.2 cycle, so additional updates may be required for later pre-releases, release candidates, or the final release.
## Vulkan PostFX 1.12.0-alpha for Minecraft 26.2 Snapshot 8

### Highlights

  • Ported to Minecraft 26.2 Snapshot 8.
  • Kept VPFX Native Runtime experimental path available on Vulkan.
  • Verified builtin native fullscreen passthrough diagnostic path.
  • Verified external PostChain skip in native diagnostic mode.
  • Added user shader resolve / preprocess dry-run.
  • Added user shader pipeline planning / hash dry-run.

### Native Runtime Status

The VPFX Native Runtime is still experimental and opt-in.

Currently verified:

  • Builtin native fullscreen passthrough draw
  • mainTarget -> transientColor copy
  • external PostChain skipped after successful native diagnostic draw
  • user shader source resolve / preprocess dry-run
  • user shader pipeline planning dry-run

Not supported yet:

  • user shader native draw
  • multi-pass native graph execution
  • custom native targets
  • scene_depth / shadow_depth native inputs
  • compute shaders

### Snapshot 8 Note

Minecraft 26.2 Snapshot 8 defaults to OpenGL and marks Vulkan as experimental.

Vulkan PostFX native runtime testing requires the Vulkan graphics backend.
If you want to test VPFX native runtime features, manually select Vulkan in the Graphics API setting.
## Vulkan PostFX 1.11.0

This release introduces the first experimental VPFX Native Runtime milestone.

### Highlights

  • Added VPFX Native Runtime v0 skeleton.
  • Added VPFX v2 runtime roadmap documentation.
  • Added native runtime dry-run support checks.
  • Added native fullscreen pipeline planning.
  • Added transient render target planning and lifecycle validation.
  • Added mainTarget -> transientColor copy validation.
  • Added the first builtin native fullscreen passthrough draw path.
  • Added opt-in diagnostic mode that can skip the external PostChain path after a successful builtin native passthrough draw.

### Native Runtime Status

The native runtime is still experimental and opt-in only.

Current supported native diagnostic path:

``text
minecraft:main
  • > copy to transientColor
  • > builtin fullscreen passthrough native draw
  • > minecraft:main
`

This is currently limited to:

  • single-pass native-v0-compatible graphs
  • builtin passthrough shader only
  • no user shader native execution
  • no multi-pass
  • no custom targets
  • no scene_depth / shadow_depth native inputs
  • no compute shaders

### Verified

  • ./gradlew build
  • Minecraft 26.2 Snapshot 7 startup
  • VPFX Minimal Showcase loading
  • native runtime execute flag
  • native diagnostic draw succeeded
  • external PostChain skipped in diagnostic mode
  • fallback backend remains available
  • no black screen / no crash observed during local testing

### Notes

  • The default backend is still minecraft_postchain`.
  • Native runtime is **not** enabled by default.
  • User VPFX shaders are **not** executed by the native runtime yet.
  • This release is an experimental milestone for testing native runtime infrastructure.


## Vulkan PostFX 1.10.0

This release ports Vulkan PostFX / VPFX to **Minecraft 26.2 Snapshot 7**.

### Changed

  • Updated target Minecraft version to 26.2-snapshot-7.
  • Updated Fabric Loader / Fabric API target for Snapshot 7.
  • Ported render-stage mixins to the new Snapshot 7 render method signatures.
  • Revalidated VPFX v1 alpha on Snapshot 7.
  • Kept minecraft_postchain as the current VPFX execution backend.

### Verified

  • VPFX Minimal Showcase F8 loading
  • minecraft:scene_color external target binding
  • sampler_name = "In" / InSampler compatibility
  • External pack failure diagnostics
  • Broken VPFX pack fallback behavior
  • VPFX validation smoke tests
  • VPFX runtime materialization smoke tests

### Notes

VPFX v1 remains alpha.
The current execution backend is still Minecraft PostChain.
Native VPFX runtime is not implemented yet.
Compute shaders are still unsupported.
Shadow depth support remains experimental.
# Vulkan PostFX 1.9.2

## Added

  • Added VPFX failure diagnostic report.
  • External VPFX pack failures now write:
run/vulkanpostfx_runtime/diagnostics/latest-vpfx-error.txt
  • Diagnostic reports include:
  • timestamp
  • pack name / external post effect id
  • backend id and capabilities
  • failure stage
  • exception class and message
  • fallback state
  • stack trace
  • Added VPFX troubleshooting guide:
docs/vpfx-troubleshooting.md

## Improved

  • External VPFX failures are now easier to diagnose from user reports.
  • Diagnostic write failures are logged as warnings and do not crash the game.
  • README now links to the VPFX troubleshooting guide.

## Notes

VPFX v1 remains alpha.
The current execution backend is still minecraft_postchain.
# Vulkan PostFX 1.9.1

## Fixed

  • Improved failure handling for external VPFX post chains.
  • External VPFX pack execution failures are now caught during both:
  • PostChain.addToFrame(...)
  • frame graph execution
  • Fixed a state issue where an internally failed external VPFX chain could still be marked as successfully applied.
  • Failed external VPFX packs are now marked unavailable for the current runtime session.
  • When an external VPFX pack fails, Vulkan PostFX now falls back to vanilla rendering instead of allowing invalid pipelines to crash the client.
  • Preserved minecraft:scene_color external target support for the minecraft_postchain backend.
  • Preserved sampler_name = "In" / InSampler compatibility for VPFX Minimal Showcase.

## Notes

This is a stability patch for VPFX v1 alpha.
VPFX v1 remains experimental, and the current backend is still Minecraft PostChain.
# Vulkan PostFX 1.9.0

## Highlights

Vulkan PostFX 1.9.0 introduces VPFX v1 alpha, a new standardized shader pack / post-processing pack format for declaring pack metadata, capabilities, render graph structure, shader paths, and runtime resources.

This release focuses on VPFX infrastructure rather than new visual effects. It adds the pack format, validation pipeline, runtime materialization tests, backend abstraction, test packs, and authoring documentation.

## Added

  • Added VPFX native pack format v1 alpha.
  • Added pack.json manifest parsing and validation.
  • Added VPFX graph parsing and validation.
  • Added pass id / debug_label support for clearer diagnostics.
  • Added non-post/ shader path support.
  • Shader references now use <namespace>:<path>.
  • Zip entries are resolved as shaders/<path>.vsh and shaders/<path>.fsh.
  • Added shader include preprocessing.
  • Supports #include "...".
  • Rejects .. path traversal.
  • Detects recursive include cycles.
  • Added VPFX validation smoke test.
  • Added VPFX runtime materialization smoke test.
  • Added positive_minimal minimal VPFX test pack.
  • Added multiple negative_* test packs for validator coverage.
  • Added explicit VPFX runtime backend abstraction:
  • VpfxRuntimeBackend
  • VpfxRuntimeBackendCapabilities
  • VpfxPostChainBackend
  • ActivePostEffectBridge now materializes VPFX packs through the explicit runtime backend abstraction.
  • Added VPFX v1 pack format documentation.
  • Added VPFX testing documentation.
  • Added VPFX minimal pack authoring guide.
  • Added known issues documentation.

## Improved

  • VPFX graph validation now checks:
  • undeclared output targets
  • missing input targets
  • undeclared texture inputs
  • self read/write passes
  • missing final output to minecraft:main
  • future target dependencies
  • Runtime materialization now runs through the explicit minecraft_postchain backend.
  • Backend information is now visible in runtime/test logs.
  • VPFX documentation now describes the current alpha boundaries, test workflow, and known limitations.
  • The minimal example pack uses composite/final to verify that VPFX no longer depends on the legacy post/ path assumption.

## Known Limitations

  • VPFX v1 is still an alpha spec.
  • The current execution backend is still Minecraft PostChain.
  • The native VPFX runtime is not complete yet.
  • Compute shaders are not supported.
  • shadow_depth is experimental.
  • Iris / Sodium compatibility is not guaranteed.
  • This build primarily targets Minecraft 26.2 snapshot / Fabric.
  • VPFX schema may still change during the alpha period.

## For Shader Pack Authors

Start with:

  • docs/vpfx-pack-format-v1.md
  • docs/vpfx-authoring-minimal-pack.md
  • docs/vpfx-testing.md

A minimal VPFX pack contains:

``text
pack.json
post_effect/main.json
shaders/composite/final.vsh
shaders/composite/final.fsh
``

VPFX shader references use:

`text
<namespace>:<path>
`

and resolve to:

`text
shaders/<path>.vsh
shaders/<path>.fsh
``

## v1.8.1

### Added
  • negative_missing_pack_json test case: verifies tryLoad() returns null for zips without pack.json

### Fixed
  • VpfxPackValidationSmokeTest: three-tier judgment logic
  • missing_pack_json: null = PASS (code=NOT_VPFX)
  • positive_*: non-null = PASS, null/exception = FAIL
  • other negative_*: VpfxPackLoadException = PASS, null/success = FAIL
I've rewrite shadow renderer, we now have more stable shadows.
## VulkanPostFX 1.6.0+mc26.2-snapshot2-2026-04-29

This update fixes and stabilizes the shadow rendering pipeline for Minecraft 26.2 Snapshot 2 on the Vulkan backend.

### Added
  • Working shadow depth generation.
  • vulkanpostfx:shadow_depth injection into the post-processing chain.
  • ShadowDepthSampler access for external shader packs.
  • Dedicated terrain shadow pass support.
  • Debug/probe support for validating shadow depth output.

### Fixed
  • Fixed shadow depth not being written correctly.
  • Fixed post effects not receiving usable shadow depth data.
  • Fixed reversed-Z depth handling for the Vulkan shadow pass.
  • Fixed depth clear / depth compare mismatch in the shadow pipeline.
  • Fixed custom shadow terrain pipeline issues that prevented valid caster submission.

### Changed
  • Reworked shadow pass state setup for the Vulkan backend.
  • Improved shadow depth validation workflow.
  • Improved internal shadow pass logging and debugging behavior.

### Notes
This is primarily a shadow pipeline repair release. Projection tuning, bias, filtering, and final visual polish will continue in later versions.
Still fixing shadow render calculate problem.
# VulkanPostFX v1.5.1

## Overview

Still solving sun angle calculate problem.
# VulkanPostFX v1.5.0

## Overview

This release marks the transition from a **runtime validation prototype** to a **practical authoring-ready VPFX pipeline**.

The VPFX Native Pack format is now capable of:

  • Loading textures from ZIP packs
  • Binding them into PostFX passes
  • Sampling them reliably inside shaders

This version introduces the first **reference texture workflow**, enabling authors to build real post-processing effects (LUT, grain, vignette) without relying on legacy shader pipelines.


## Key Features

### 1. VPFX Native Texture Binding (First Fully Working Version)

  • pack.json now supports a textures section
  • Declared textures are:

  • Extracted from ZIP packs
  • Materialized into runtime resource packs
  • Registered via vpfx/textures.json
  • Bound into PostChain as TextureInput

Supported features:

  • Linear / nearest filtering
  • Custom texture namespace isolation
  • Stable runtime binding via logical texture names


### 2. Runtime Texture Materialization Pipeline

A complete pipeline has been implemented:

``
pack.json (textures)
→ runtime textures.json
→ runtime asset generation
→ TextureInput injection
→ shader sampler binding
`

This ensures:

  • No direct ZIP streaming during rendering
  • Full compatibility with Minecraft resource system
  • Deterministic reload behavior


### 3. Reference Texture Pack (Authoring Baseline)

A new **VPFX Reference Textures Pack v1** is introduced as a minimal working example.

It demonstrates:

  • LUT-based color grading
  • Film grain overlay
  • Vignette masking

This pack is intended as:

  • A starting point for shader authors
  • A validation baseline for texture input behavior
  • A canonical example for documentation


### 4. Stable External ZIP PostChain Execution

  • External PostFX chains can now be loaded from ZIP packs
  • Fully integrated with runtime resource reload
  • Safe switching via debug key (F8)


### 5. Improved Debug & Logging

  • Texture materialization logs now include:

  • Runtime path
  • Resolution
  • Filtering mode
  • PostChain selection and activation clearly logged
  • Runtime texture manifest generation is traceable


## Fixes

  • Fixed invalid fullscreen vertex shader (removed dependency on external vertex attributes)
  • Fixed missing texCoord varying between vertex and fragment shaders
  • Fixed PostFX pipeline crashes caused by shader interface mismatch
  • Fixed incorrect shader compatibility assumptions with Mojang PostPass system
  • Fixed incorrect runtime capability expectations for shadow depth
  • Improved safety of runtime texture binding path


## Known Limitations

  • shadow_depth is currently a mirrored main depth buffer (not a true shadow map)
  • No multi-pass graph optimization yet
  • No compute shader support
  • Texture sampling is limited to PostFX passes (no material pipeline integration)


## How to Use (Reference Texture Pack)

### 1. Install the Pack

Place the ZIP file into:

`
run/shaderpacks/
`


### 2. Set Active Pack

Edit the config file:

`
run/config/vulkanpostfx.json
`

Set:

`json
{
"active_pack_id": "vpfx_reference_textures_v1"
}
`


### 3. Launch & Toggle

  • Start the game
  • Press **F8** to enable/disable the VPFX PostChain


### 4. Expected Visual Result

  • Slightly warmer color tone (LUT)
  • Subtle film grain
  • Mild vignette at screen edges

If you see:

  • Strong color shift → LUT too aggressive
  • Heavy dark corners → vignette too strong

→ Adjust shader parameters or replace textures.


## Authoring Notes

### Texture Declaration (pack.json)

`json
"textures": {
"ColorLut": {
"path": "textures/lut/day_grade.png",
"filter": "linear"
}
}
`


### Shader Usage

`glsl
uniform sampler2D ColorLutSampler;
`

Sampler naming rule:

`
sampler_name + "Sampler"
`


### Post Effect Input

`json
{
"sampler_name": "ColorLut",
"texture": "ColorLut"
}
`


## Breaking Changes

  • Non-VPFX ZIP packs are no longer accepted
  • pack.json with format_version` is now required
  • Old compatibility paths (Iris / OptiFine style) are fully removed


## Summary

v1.5.0 is the first version where:

  • VPFX is no longer just a loader
  • It becomes a **usable authoring platform**

This release establishes:

  • A stable texture pipeline
  • A reproducible runtime model
  • A clear path toward advanced PostFX features


Next focus:

  • Multi-pass graph expansion
  • Proper shadow map support
  • Built-in uniform system
  • Authoring documentation (Wiki)




## Vulkan PostFX 1.4.0 — VPFX Native Pack Format v1 Update

This update moves the project onto the new **VPFX native pack pipeline**.

### Added
  • Added support for **VPFX Native Pack Format v1** as the primary shader pack format.
  • Added native pack.json manifest parsing for VPFX packs.
  • Added native post_effect/main.json graph parsing for VPFX packs.
  • Added validation for VPFX graph structure, runtime capabilities, and shader resource references.
  • Added native ZIP pack discovery through the VPFX loading path.
  • Added runtime materialization for VPFX ZIP shader assets.
  • Added runtime loading for VPFX post-effect graphs from external ZIP packs.

### Changed
  • Switched external ZIP shader pack discovery to the new VPFX-native loading path.
  • Updated the external pack activation flow so VPFX packs can now be selected directly from config and loaded as the active pack.
  • Moved the pack pipeline away from the previous wrapper-style manifest assumptions toward a stricter native format.

### Fixed
  • Fixed the issue where external packs could load through the old path but were not yet attached to the new native pack standard.
  • Fixed ZIP pack selection so valid VPFX packs are now discovered, selected, materialized, and loaded through the main runtime path.
  • Fixed external PostChain activation for VPFX packs loaded from ZIP resources.
  • Fixed runtime external target expansion so vulkanpostfx:shadow_depth is available to external post chains.
  • Fixed runtime PostChain bundle injection for the custom shadow depth target.

### Runtime Status
The runtime now successfully:
  • parses the VPFX graph,
  • loads a VPFX native ZIP pack,
  • selects the configured external pack,
  • materializes ZIP shader assets into the runtime namespace,
  • loads the external post_effect/main.json,
  • resolves the external PostChain,
  • and injects the runtime shadow depth target during execution.

### Notes
  • This release establishes the **native VPFX pack standard** as the main external pack path.
  • VPFX is a native format for this project and is not intended to be an OptiFine or Iris compatibility layer.
  • The current release is focused on native pack loading, validation, and execution bring-up.
  • Visual quality and shadow behavior will continue to improve in later updates.

### Known Limitations
  • This is still an experimental native-pack milestone rather than a final visual-complete shader release.
  • Logging is currently verbose in some runtime paths and may be reduced in future updates.
  • The project is now standardized around VPFX-native packs, so older non-VPFX pack layouts are not the target path going forward.
# Changelog

## Verdant Light 1.3.0 Vulkan Wrapper — Experimental Update

### Added

  • Added support for loading external shader packs from ZIP files through the Vulkan PostFX pipeline.
  • Added runtime shader pack materialization and resource pack injection for external ZIP-based shader content.
  • Added support for switching the active debug/effect chain at runtime with the existing toggle workflow.
  • Added an initial custom external render target path for shadow_depth.
  • Added a lightweight shadow target allocation and frame synchronization path.
  • Added a first-pass shadow depth mirror step from the main render target into a dedicated shadow target.
  • Added runtime PostChain bundle injection for custom external targets required by experimental shadow debugging.

### Changed

  • Reworked the wrapper pipeline to use the new 26.2 Vulkan/PostChain model instead of legacy framebuffer-style assumptions.
  • Updated the effect loading flow so external post chains can be discovered, compiled, and applied more reliably.
  • Improved debug visibility by providing a visible overlay-style test pack instead of depth-only black/white output.
  • Refined shader pack runtime namespace handling for ZIP-based packs.

### Fixed

  • Fixed several failures caused by assuming old-style render target write APIs that no longer exist in the 26.2 renderer.
  • Fixed external post chain allowlist issues that previously rejected custom targets like vulkanpostfx:shadow_depth.
  • Fixed runtime crashes caused by missing custom PostChain targets during effect execution.
  • Fixed shader pack activation flow so the external package can now be enabled successfully in the current experimental branch.
  • Fixed shadow target creation, shadow pass execution, and main-depth mirroring so the custom target path is now active during runtime.

### Technical Notes

  • External ZIP shader pack loading is now functional in the current experimental wrapper.
  • The wrapper can now:

  • discover and load the external ZIP pack,
  • compile and apply the external post chain,
  • allocate a shadow render target,
  • mirror main scene depth into that target,
  • and inject the target into PostChain execution at runtime.
  • This release is focused on pipeline bring-up and compatibility validation, not final visual parity.

### Known Limitations

  • This is **not** a full shadow implementation yet.
  • The current shadow path is still experimental and is primarily intended for debugging and pipeline validation.
  • Visual output is currently based on overlay/debug behavior rather than finalized shadow resolve/composite logic.
  • Shader behavior, color grading, and lighting quality are still subject to further iteration.
  • Logging is still verbose in some experimental paths and will be cleaned up in a later update.

### Next Steps

  • Build a more usable day-to-day shader pack profile with stable visuals.
  • Reduce experimental logging noise.
  • Replace debug-oriented shadow visualization with a proper shadow resolve/composite path.
  • Expand the wiki with setup instructions, compatibility notes, pack structure, and development documentation.



Vulkan PostFX Icon
Download Vulkan PostFX
Select game version
Select platform