Repository navigation
Shader Effects II
The ShaderFX engine allows trigger screen shaders and post-processing filters through datapack events based on combat context.
๐ก What's New in v2.2: I have completely deprecated the old, complex & redundant "Shader Packets Parameters" system. In the modern version, it's more understandable and redundant entries have been eliminated. The system now operates with sealed records, allowing for more efficient shader addition, since previously compatibility with a centralized record was forced. Additionally, the Shader loader now operates as a Coroutine and not as a tickable event, this eliminates various bugs, such as retaining visual effects while active and exiting the world (if it was of the holdable type).
Place your configuration files here:
assets/<namespace>/shader_packet/*.json
| Field | Description | Valid Options |
|---|---|---|
| category | Target weapon category (Required). | e.g., epicfight:sword |
| trigger_item | Targeted item id. Defaults to all if missing. | "all" or "modid:item_id" |
| activation_type | The root gameplay trigger context. | "Skill", "Style", "Animation" |
| effect | The effect in question with its respective data. | All shaders |
- Skill โก๏ธ When a skill is active, primarily of the time type for Weapon Innate (Like Longsword).
- Style โก๏ธ As long as the configured style is the same as the one that holds the item.
- Animation โก๏ธ At the moment an animation is executed.
Supported in: Skill (Hold), Style (Hold) Parameters:
- time_in (Fade-in)
- time_out (Fade-out)
- intensity
- contrast
- dark_color (R, G, B Integer)
- light_color (R, G, B Integer)
In this example, upon entering demonic ascension, the game experiences a shift in its dark colors to black and its light colors to white, causing a grayscale effect controlled only by the intensity of the effect.
{
"shader_packet": [
{
"category": "antitheus",
"trigger_item": "wom:antitheus",
"activation_type": "style",
"effect": {
"style": "ochs",
"bi_color_overlay": {
"time_in": 80,
"time_out": 30,
"intensity": 0.65,
"contrast": 1,
"dark_color": [0, 0, 0],
"light_color": [255, 255, 255]
}
}
}
]
}
2026-06-23.13-09-28.mp4
Supported in: Skill (Hold), Style (Hold) Parameters:
- time_in
- time_out
- intensity (non-scalar)
- samples (Quality vs Performance trade-off).
Entering parry mode focuses only on what's in front, the edges become softly blurred.
{
"shader_packet": [
{
"category": "longsword",
"trigger_item": "all",
"activation_type": "skill",
"effect": {
"skill": "epicfight:liechtenauer",
"focus_blur": {
"time_in": 20,
"time_out": 10,
"intensity": 0.05,
"radius": 0.2,
"fall_off": 0.4,
"max_blur": 0.08
}
}
}
]
}2026-06-23.13-32-11.mp4
Supported in: Skill (Hold), Style (Hold)
Parameters:
- time_in
- time_out
- line_width
- dark_factor
- distortion
{
"shader_packet": [
{
"category": "longsword",
"trigger_item": "all",
"activation_type": "skill",
"effect": {
"skill": "epicfight:liechtenauer",
"crt_filter": {
"time_in": 20,
"time_out": 10,
"line_width": 1,
"dark_factor": 1,
"distortion": 0.001
}
}
}
]
}[]
Supported in: Skill (Hold), Style (Hold)
Parameters:
- time_in
- time_out
- intensity
- threshold
- color (R, G, B Integer)
In this example, upon entering a tormented state of mind, the world's brilliance experiences an increase in crimson color.
{
"shader_packet": [
{
"category": "torment",
"trigger_item": "wom:tormented_mind",
"activation_type": "style",
"effect": {
"style": "ochs",
"glow": {
"time_in": 20,
"time_out": 10,
"intensity": 0.7,
"threshold": 0,
"color": [255, 40, 80]
}
}
}
]
}2026-06-23.14-02-42.mp4
Supported in: Animation (Oneshot)
Parameters:
- radius
- intensity
- contrast
- atLook
- useAberration
- dark_color
- light_color
As in the Shaders I section, we fired an Impact Frame for Napoleon, only this time it will be colored with a soft blue color
{
"shader_packet": [
{
"category": "napoleon",
"trigger_item": "wom:napoleon",
"activation_type": "animation",
"effect": {
"animation": "wom:biped/skill/napoleon_verdun",
"elapse": 1.0,
"colored_impact_frame": {
"radius": 20,
"intensity": 1,
"contrast": 1,
"atLook": false,
"useAberration": true,
"dark_color": [10, 30, 60],
"light_color": [255, 255, 255]
}
}
}
]
}2026-06-23.14-10-43.mp4
Supported in: Skill (Hold), Style (Hold)
Parameters:
- time_in
- time_out
- intensity
Here, when entering the special mode of the Solar, we apply a soft phase noise to evaporate the rendering at the edges of the screen.
{
"shader_packet": [
{
"category": "greatsword",
"trigger_item": "wom:solar",
"activation_type": "style",
"effect": {
"style": "ochs",
"phase_noise": {
"time_in": 70,
"time_out": 40,
"intensity": 0.02
}
}
}
]
}
2026-06-23.14-22-32.mp4
Supported in: Skill (Hold), Style (Hold)
Parameters:
- time_in
- time_out
- intensity
Upon entering the tormented state of mind, we sharpen the rendering
{
"shader_packet": [
{
"category": "torment",
"trigger_item": "wom:tormented_mind",
"activation_type": "style",
"effect": {
"style": "ochs",
"sharpen": {
"time_in": 20,
"time_out": 10,
"amount": 5,
"radius": 1,
"threshold": 0
}
}
}
]
}
2026-06-23.14-55-29.mp4
Besides dedicated animation effects such as Noise Overlay and Impact Frame, animations can also trigger temporary versions of standard screen shaders.
These effects execute once when the animation reaches the configured elapsed time and remain active for the specified hold duration.
Supported effects:
- bi_color_overlay
- focus_blur
- crt_filter
- glow
- phase_noise
- sharpen
Required parameters:
| Parameter | Description |
|---|---|
| time_in | Fade-in duration |
| time_hold | Time the effect remains active |
| time_out | Fade-out duration |
By holding Moonless and using its innate ability, we will cause a glow effect
{
"shader_packet": [
{
"category": "tachi",
"trigger_item": "wom:moonless",
"activation_type": "animation",
"effect": {
"animation": "wom:biped/skill/moonless_lunar_echo",
"elapse": 0.5,
"glow": {
"time_in": 40,
"time_out": 10,
"intensity": 0.8,
"threshold": 0,
"color": [
255,
255,
255
]
}
}
},
{
"category": "tachi",
"trigger_item": "wom:moonless",
"activation_type": "animation",
"effect": {
"animation": "wom:biped/skill/moonless_lunar_fullmoon",
"elapse": 0.5,
"glow": {
"time_in": 40,
"time_out": 10,
"intensity": 0.8,
"threshold": 0,
"color": [255, 255, 255]
}
}
},
{
"category": "tachi",
"trigger_item": "wom:moonless",
"activation_type": "animation",
"effect": {
"animation": "wom:biped/skill/moonless_lunar_eclipse",
"elapse": 0.5,
"glow": {
"time_in": 40,
"time_out": 10,
"intensity": 0.8,
"threshold": 0,
"color": [255, 255, 255]
}
}
}
]
}2026-06-23.15-08-26.mp4
Furthermore, the effects are not "unique"; the same category and/or items can trigger several shaders at the same time. In this example, executing the "battojutsu" animation will execute 2 shaders, while with its dash version ("battojutsu_dash"), we will execute another 2.
{
"shader_packet": [
{
"category": "uchigatana",
"trigger_item": "epicfight:uchigatana",
"activation_type": "animation",
"effect": {
"animation": "epicfight:biped/skill/battojutsu",
"elapse": 0.95,
"noise_overlay": {
"time_hold": 20,
"intensity": 10.0,
"scale": 2.0,
"color": [255, 255, 255]
}
}
},
{
"category": "uchigatana",
"trigger_item": "epicfight:uchigatana",
"activation_type": "animation",
"effect": {
"animation": "epicfight:biped/skill/battojutsu",
"elapse": 0.95,
"chromatic_aberration": {
"time_in": 0,
"time_hold": 20,
"time_out": 10,
"intensity": 0.5
}
}
},
{
"category": "uchigatana",
"trigger_item": "epicfight:uchigatana",
"activation_type": "animation",
"effect": {
"animation": "epicfight:biped/skill/battojutsu_dash",
"elapse": 0.55,
"noise_overlay": {
"time_hold": 20,
"intensity": 10.0,
"scale": 2.0,
"color": [255, 255, 200]
}
}
},
{
"category": "uchigatana",
"trigger_item": "epicfight:uchigatana",
"activation_type": "animation",
"effect": {
"animation": "epicfight:biped/skill/battojutsu_dash",
"elapse": 0.15,
"radial_blur_in": {
"time_in": 8,
"time_hold": 20,
"time_out": 8,
"intensity": 0.1,
"samples": 15
}
}
}
]
}2026-06-20.18-23-38.mp4
When the specified animation reaches the configured elapsed time:
- The overlay fades in during timein.
- Remains active for hold.
- Fades out during timeout.
- Automatically cleans itself once finished.
Any incorrect values, or potential errors, will be displayed in the Log; a crash will no longer occur as in past versions, your shader simply won't do anything!
EF: Extended Datapacks
๐ฆ Data
๐งฐ Core
๐๏ธ Visuals
- Zoom Types
- Weapon Models per Style
- Advanced Swing Trails
- Weapons Passive Particles
- Shader Effects I
- Shader Effects II
- Shader Effects III
โ๏ธ Combat
๐๏ธ Skill Builder
๐ ๏ธ Innate Builder
- Simple Innate Skills
- Holdable Innate Skills
- Conditional Innate Skills
- Conditional Data Innate Skills
- Conditional Holdable Innate Skills
- Sequential Innate Skills
- Per Combo Innate Skills
- Combo Innate Skills
๐ก๏ธ Animation Operations
- Animation Operations
- Animation Properties
โ๏ธ Third-Party