{"name":"Post Process Effects","title":"Post Process Effects","type":"topic","url":"https://community.bistudio.com/wiki/Post_Process_Effects","revid":378536,"updated":"2026-05-04T12:07:41Z","aliases":["Post process effects"],"markdown":"### Scripting Commands\n\n- ppEffectCreate\n- ppEffectAdjust\n- ppEffectEnable\n- ppEffectEnabled\n- ppEffectForceInNVG\n- ppEffectCommit\n- ppEffectCommitted\n- ppEffectDestroy\n\n### Usage\n\n#### Effect Creation\n\n```sqf\n_handle = ppEffectCreate [\"effect_type\", priority];\n_handlesArray = ppEffectCreate [[\"effect_type0\", priority0], [\"effect_type1\", priority1], /* ... */];\n```\n\n#### Effect Cancellation\n\n```sqf\nppEffectDestroy handle;\nppEffectDestroy handlesArray;\n```\n\n#### Effect Disabling\n\nCompared to the effect cancellation, in this case the effect is just disabled but still exists\n\n```sqf\n_handle ppEffectEnable false;\n```\n\n#### Effect Fade out\n\nRather than disabling the effect completely at once, it is possible to use ppEffectAdjust to fade it out over time\n\n```sqf\n//after having created and used effect:\n//set the parameters for the effect back to the default values\n\"colorCorrections\" ppEffectAdjust [1,1,0,[0,0,0,0],[1,1,1,1],[0.299, 0.587, 0.114, 0],[-1,-1,0,0,0,0,0]];\n//then commit and fade out over given time (10 seconds)\n\"colorCorrections\" ppEffectCommit 10;\n//Disable completely after fadeout\n\"colorCorrections\" ppEffectEnable false;\n```\n\n#### Parameter Setup\n\n```sqf\nhandle ppEffectAdjust [par0, par1, /* ... */, parN];\n```\n\n#### Parameter application\n\n```sqf\nhandle ppEffectCommit _duration;\nhandlesArray ppEffectCommit _duration;\n```\n\n#### Effect Permission\n\n```sqf\nhandle ppEffectEnable _OnOrOff;\nhandlesArray ppEffectEnable _OnOrOff;\n```\n\n#### Check if Enabled (Arma 3 v1.56)\n\n```sqf\nppEffectEnabled handle;\n```\n\n#### Example\n\n```sqf\n_handle = ppEffectCreate [\"colorCorrections\", 1501];\n_handle ppEffectEnable true;\n_handle ppEffectAdjust [1.0, 1.0, 0.0, [1.0, 0.1, 1.0, 0.75], [0.0, 1.0, 1.0, 1.0], [0.199, 0.587, 0.114, 0.0]];\n_handle ppEffectCommit 0;\nsleep 10;\nppEffectDestroy _handle;\n```\n\n### Table of Priorities\n\nPriority defines sequence in which post effects are applied. The higher priority, the later the effect will be applied, on top of the others.\n\n| Base Priority | Effect |\n|---|---|\n| 2500 | ColorInversion |\n| 2000 | FilmGrain |\n| 1500 | ColorCorrections |\n| 400 | DynamicBlur |\n| 300 | WetDistortion |\n| 200 | ChromaticAberration |\n| 100 | RadialBlur |\n| 0 | SSAO |\n| 0 | Resolution |\n\n### Parameters of Individual Effects\n\n#### RadialBlur\n\nTitle: \"RadialBlur\"; Base Priority: 100\n\n> [!NOTE]\n> RadialBlur will not do anything if RADIAL BLUR is disabled in Video Options\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| powerX | relative blur degree on axis X | float | 0... | 0.01 |\n| powerY | relative blur degree on axis Y | float | 0... | 0.01 |\n| offsetX | relative size X of un-blurred centre | float | 0... | 0.06 |\n| offsetY | relative size Y of un-blurred centre | float | 0... | 0.06 |\n\nSyntax:\n\n```sqf\n_radialBlurHandle ppEffectAdjust [powerX, powerY, offsetX, offsetY];\n```\n\nDefaults:\n\n```sqf\n_radialBlurHandle ppEffectAdjust [0.01, 0.01, 0.06, 0.06];\n```\n\nExample:\n\n```sqf\n[\"RadialBlur\", 100, [100, 0.5, 0.1, 0.5]] spawn\n{\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```\n\n#### ChromAberration\n\nTitle \"ChromAberration\"; Base Priority: 200\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| aberrationPowerX | relative effect strength (sample spacing from each other) axis X | float | 0... | 0.005 |\n| aberrationPowerY | relative effect strength (sample spacing from each other) axis Y | float | 0... | 0.005 |\n| aspectCorrection | enable/disable correction according to screen aspect ratio | bool | true, false | false |\n\nSyntax:\n\n```sqf\n_chromaticAberrationHandle ppEffectAdjust [aberrationPowerX, aberrationPowerY, aspectCorrection];\n```\n\nDefaults:\n\n```sqf\n_chromaticAberrationHandle ppEffectAdjust [0.005, 0.005, false];\n```\n\nExample:\n\n```sqf\n[\"ChromAberration\", 200, [0.05, 0.05, true]] spawn {\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```\n\n#### WetDistortion\n\nTitle: \"WetDistortion\"; Base Priority: 300\n\n> [!NOTE]\n> Effect cancels automatically under water.\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| value | blurriness of distorted image (0 to 1, values above 1 cause unusual) | float | 0..1 | 1 |\n| top, bottom | effect power (top/bottom of screen separately) | float | 0..1 | 1, 1 |\n| horizontal1, horizontal2, vertical1, vertical2 | waves speeds (frequency/PI) | float | 0... | 4.10, 3.70, 2.50, 1.85 |\n| horizontal1, horizontal2, vertical1, vertical2 | waves amplitudes (delta texture coordinates) | float | 0... | 0.0054, 0.0041, 0.0090, 0.0070 |\n| randX, randY | coefficients for phase computing; weight of random vertex data on horizontal/vertical wave phases | float | 0... | 0.5, 0.3 |\n| posX, posY | coefficients for phase computing; weight of vertex X/Y-position on horizontal/vertical wave phases | float | 0... | 10.0, 6.0 |\n\nSyntax:\n\n```sqf\n_wetDistorsionHandle ppEffectAdjust [\n    value,\n    top, bottom,\n    horizontal1, horizontal2, vertical1, vertical2,\n    horizontal1, horizontal2, vertical1, vertical2,\n    randX, randY, posX, posY\n];\n```\n\nDefaults:\n\n```sqf\n_wetDistorsionHandle ppEffectAdjust [\n    1,\n    1, 1,\n    4.10, 3.70, 2.50, 1.85,\n    0.0054, 0.0041, 0.0090, 0.0070,\n    0.5, 0.3, 10.0, 6.0\n];\n```\n\nExample:\n\n```sqf\n[\"WetDistortion\", 300, [1, 0, 1, 4.10, 3.70, 2.50, 1.85, 0.0054, 0.0041, 0.05, 0.0070, 1, 1, 1, 1]] spawn\n{\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```\n\n#### ColorCorrections\n\nTitle: \"ColorCorrections\"; Base Priority: 1500\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| brightness | image brightness (0 - black, 1 - unchanged, 2 - white ) | float | 0..2 | 1 |\n| contrast | image contrast (1 - normal contrast) | float | 0... | 1 |\n| offset | image contrast offset (0 - unchanged ) | float | 0... | 0 |\n| [r, g, b, a] | color for blending (r, g, b - color, a - blend factor (0 - original color, 1 - blend color )) | float | 0..1 | [0, 0, 0, 0] |\n| [r, g, b, a] | color for colorization ( r, g, b - color, a - saturation (0 - original color, 1 - B&W multiplied by colorize color)) | float | 0..1 | [1, 1, 1, 1] |\n| [r, g, b, 0] | color rgb weights for desaturation | float | 0..1 | [0.299, 0.587, 0.114, 0] |\n| [<br>    radialMajorAxisRadius,<br>    radialMinorAxisRadius,<br>    radialRotationDeg,<br>    radialCenterX,<br>    radialCenterY,<br>    radialInnerRadiusCoef,<br>    radialInterpCoef<br>] | radial color ***(optional, Arma 3 only)***<br>major axis radius of ellipse<br>minor axis radius of ellipse<br>rotation of ellipse axis (in degrees)<br>centerX of ellipse on the screen (in relative coords, [-0.5] -> [0.5], where 0 is in the screen center)<br>centerY of ellipse on the screen (in relative coords, [-0.5] -> [0.5], where 0 is in the screen center)<br>coefficient for inner radius (where effect is not applied)<br>coefficient for color interpolation between inner and outer radius<br> | float<br>float<br>float<br>float<br>float<br>float<br>float<br> | 0..1<br>0..1<br>0..359<br>-1..1<br>-1..1<br>0..1<br>0...<br> | [<br>    -1,<br>    -1,<br>    0,<br>    0,<br>    0,<br>    0,<br>    0<br>] |\n\nSyntax:\n\n| Arma 3 v1.00 | Arma 2 v1.00Arma 2: Operation Arrowhead v1.50 |\n|---|---|\n| ```sqf<br>_colorCorrectionHandle ppEffectAdjust<br>[<br>    brightness,<br>    contrast,<br>    offset,<br>    [blendR, blendG, blendB, blendA],<br>    [colorizeR, colorizeG, colorizeB, colorizeA],<br>    [weightR, weightG, weightB, 0],<br>    [a, b, angle, cx, cy, innerRCoef, interpCoef]<br>];<br>``` | ```sqf<br>_colorCorrectionHandle ppEffectAdjust<br>[<br>    brightness,<br>    contrast,<br>    offset,<br>    [blendR, blendG, blendB, blendA],<br>    [colorizeR, colorizeG, colorizeB, colorizeA],<br>    [weightR, weightG, weightB, 0]<br>];<br>``` |\n\nDefaults:\n\n| Arma 3 v1.00 | Arma 2 v1.00Arma 2: Operation Arrowhead v1.50 |\n|---|---|\n| ```sqf<br>_colorCorrectionHandle ppEffectAdjust<br>[<br>    1,<br>    1,<br>    0,<br>    [0, 0, 0, 0],<br>    [1, 1, 1, 1],<br>    [0.299, 0.587, 0.114, 0],<br>    [-1, -1, 0, 0, 0, 0, 0]<br>];<br>``` | ```sqf<br>_colorCorrectionHandle ppEffectAdjust<br>[<br>    1,<br>    1,<br>    0,<br>    [0, 0, 0, 0],<br>    [1, 1, 1, 1],<br>    [0.299, 0.587, 0.114, 0]<br>];<br>``` |\n\nExample:\n\n```sqf\n[\"ColorCorrections\", 1500, [1, 0.4, 0, [0, 0, 0, 0], [1, 1, 1, 0], [1, 1, 1, 0]]] spawn\n{\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```\n\n#### DynamicBlur\n\nTitle: \"DynamicBlur\"; Base Priority: 400\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| value | blurriness | float | 0... | 0 |\n\nSyntax:\n\n```sqf\n_dynamicBlurHandle ppEffectAdjust [value];\n```\n\nDefaults:\n\n```sqf\n_dynamicBlurHandle ppEffectAdjust [0];\n```\n\nExample:\n\n```sqf\n[\"DynamicBlur\", 400, [10]] spawn\n{\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```\n\n#### FilmGrain\n\nTitle: \"FilmGrain\"; Base Priority: 2000\n\n> [!NOTE]\n> **Arma 3:** In Arma 3 the **monochromatic** parameter is numeric. Use **0** for monochrome, any other value for colour.\n\nNumber of parameters is flexible: it may be defined from 1 to 6 parameters, meaning of individual parameters is following:\n\n| Parameter |  | Meaning | Type | Range | Default |\n|---|---|---|---|---|---|\n| intensity |  | intensity | float | 0..1 | 0.005 |\n| sharpness |  | sharpness | float | 1..20 | 1.25 |\n| grainSize |  | grain size | float | 1..8 | 2.01 |\n| intensityX0 |  | intensityX0 | float | -x..0..+x | 0.75 |\n| intensityX1 |  | intensityX1 | float | -x..0..+x | 1.0 |\n| monochromatic | Arma 2 v1.00Arma 2: Operation Arrowhead v1.50 | monochromatic | bool | false, true | true |\n| monochromatic | Arma 3 v1.00 | monochromatic | integer | 0, 1 | 0 |\n\nSyntax:\n\n```sqf\n_filmGrainHandle ppEffectAdjust [\n    intensity,\n    sharpness,\n    grainSize,\n    intensityX0,\n    intensityX1,\n    monochromatic\n];\n```\n\nDefaults:\n\n| Arma 3 v1.00 | Arma 2 v1.00Arma 2: Operation Arrowhead v1.50 |\n|---|---|\n| ```sqf<br>_filmGrainHandle ppEffectAdjust [<br>    0.005,<br>    1.25,<br>    2.01,<br>    0.75,<br>    1.0,<br>    0<br>];<br>``` | ```sqf<br>_filmGrainHandle ppEffectAdjust [<br>    0.005,<br>    1.25,<br>    2.01,<br>    0.75,<br>    1.0,<br>    true<br>];<br>``` |\n\nExample:\n\n| Arma 3 v1.00 | Arma 2 v1.00Arma 2: Operation Arrowhead v1.50 |\n|---|---|\n| ```sqf<br>[\"FilmGrain\", 2000, [1, 0.15, 7, 0.2, 1.0, 0]] spawn<br>{<br>    params [\"_name\", \"_priority\", \"_effect\"];<br><br>    private _handle = -1;<br>    while {<br>        _handle = ppEffectCreate [_name, _priority];<br>        _handle < 0;<br>    } do {<br>        _priority = _priority + 1;<br>    };<br>    _handle ppEffectEnable true;<br>    _handle ppEffectAdjust _effect;<br>    _handle ppEffectCommit 5;<br>    waitUntil { sleep 0.1; ppEffectCommitted _handle };<br>    systemChat \"admire effect for a sec\";<br>    uiSleep 3;<br>    _handle ppEffectEnable false;<br>    ppEffectDestroy _handle;<br>};<br>``` | ```sqf<br>[\"FilmGrain\", 2000, [1, 0.15, 7, 0.2, 1.0, true]] spawn<br>{<br>    local _name = _this select 0;<br>    local _priority = _this select 1;<br>    local _effect = _this select 2;<br>    local _handle = -1;<br>    while {<br>        _handle = ppEffectCreate [_name, _priority];<br>        _handle < 0;<br>    } do {<br>        _priority = _priority + 1;<br>    };<br>    _handle ppEffectEnable true;<br>    _handle ppEffectAdjust _effect;<br>    _handle ppEffectCommit 5;<br>    waitUntil { sleep 0.1; ppEffectCommitted _handle };<br>    systemChat \"admire effect for a sec\";<br>    uiSleep 3;<br>    _handle ppEffectEnable false;<br>    ppEffectDestroy _handle;<br>};<br>``` |\n\n#### ColorInversion\n\nTitle: \"ColorInversion\"; Base Priority: 2500\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| Red | Inversion of R channel (image inversion (0..no blur, 1..very blurred) | float | 0..1 | 0 |\n| Green | Inversion of G channel (image inversion (0..no blur, 1..very blurred) | float | 0..1 | 0 |\n| Blue | Inversion of B channel (image inversion (0..no blur, 1..very blurred) | float | 0..1 | 0 |\n\nSyntax:\n\n```sqf\n_colorInversionHandle ppEffectAdjust [Red, Green, Blue];\n```\n\nDefaults:\n\n```sqf\n_colorInversionHandle ppEffectAdjust [0, 0, 0];\n```\n\nExample:\n\n```sqf\n[\"ColorInversion\", 2500, [0.5, 0.5, 0.5]] spawn\n{\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```\n\n#### SSAO (Arma 3 v0.50)\n\nTitle: \"SSAO\"; Base Priority: 0\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| intensity |  | float | 0..1 | 0 |\n| threshold0 |  | float | 0..1 | 0 |\n| threshold0 |  | float | 0..1 | 0 |\n| nearRadius |  | float | 0..1 | 0 |\n| farRadius |  | float | 0..1 | 0 |\n| nearDist |  | float | 0..1 | 0 |\n| farDist |  | float | 0..1 | 0 |\n| depthBlurDist |  | float | 0..1 | 0 |\n| blurPasses |  | integer | 0..x | 0 |\n| halfRes |  | bool | true, false | false |\n| blurHalfRes |  | boolean | true, false | false |\n\nSyntax:\n\n```sqf\n_ssaoHandle ppEffectAdjust [\n    intensity,\n    threshold0,\n    threshold1,\n    nearRadius,\n    farRadius,\n    nearDist,\n    farDist,\n    depthBlurDist,\n    blurPasses,\n    halfRes,\n    blurHalfRes\n];\n```\n\nDefaults:\n\n```sqf\n_ssaoHandle ppEffectAdjust [0, 0, 0, 0, 0, 0, 0, 0, 0, false, false];\n```\n\nExample:\n\n```sqf\n[\"SSAO\", 1, [3, 0.25, 0.75, 5, 50, 5, 25, 100, 3, true, true]] spawn\n{\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0;\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```\n\n#### Resolution (Arma 3 v2.10)\n\nTitle: \"Resolution\"; Base Priority: 0\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| verticalResolution | define the render's vertical resolution.<br>If the value is negative, the resolution goes back to normal. If the value is greater than the final render's vertical resolution, it gets clamped to it.<br>The effect can be disabled in both cases. | integer | -1..x | -1 |\n\nSyntax:\n\n```sqf\n_resolutionHandle ppEffectAdjust [verticalResolution];\n```\n\nDefaults:\n\n```sqf\n_ssaoHandle ppEffectAdjust [-1];\n```\n\nExample:\n\n```sqf\n[\"Resolution\", 1, [400]] spawn\n{\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0;\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```\n\n#### Sharpness (Arma 3 v2.20)\n\nTitle: \"Sharpness\"; Base Priority: 0\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| scale | Scale (minimum 0.01) | integer | 0..x | 0 |\n\n#### DepthOfField (Arma 3 v2.20)\n\nTitle: \"DepthOfField\"; Base Priority: ?\n\nTBD\n\n#### FishEye (Arma 3 v2.20)\n\nTitle: \"FishEye\"; Base Priority: ?\n\nTBD\n\n### Advanced effects\n\n> [!IMPORTANT]\n> The advanced effects are not intended to be used by the end user. They cannot be created by ppEffectCreate and their adjustments (via ppEffectAdjust) are **immediate** and do not require ppEffectCommit.\n> [More info on the forums](https://forums.bohemia.net/forums/topic/220199-hbaoplus-post-processing-effect/).\n\n#### LightShafts\n\nTitle: \"LightShafts\"; Base Priority: N/A\n\n- can be used with ppEffectAdjust\n- can be used with ppEffectEnable\n- **cannot** be used with ppEffectCreate\n- **cannot** be used with ppEffectCommit\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| sunInnerRadius | inner radius of the sun. 0 = no radius, 1 = full screen | float | 0.001..1 | 0.01 |\n| sunOuterRadius | outer radius of the sun. Must be > sunInnerRadius. 0 = no radius, 1 = full screen. light intensity fades out from inner to outer radius | float | 0..1 | 0.6 |\n| exposure | strength of effect | float | 0... | 0.45 |\n| decay | how fast intensity of rays decays with distance | float | 0..1 | 0.89 |\n\nSyntax:\n\n```sqf\n\"LightShafts\" ppEffectAdjust [sunInnerRadius, sunOuterRadius, exposure, decay];\n```\n\nDefaults:\n\n```sqf\n\"LightShafts\" ppEffectAdjust [0.01, 0.6, 0.45, 0.89];\n```\n\nExample:\n\n```sqf\n0 spawn\n{\n    \"LightShafts\" ppEffectEnable true;\n    \"LightShafts\" ppEffectAdjust [0.1,0.25,0.1,1];\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    \"LightShafts\" ppEffectEnable false;\n};\n```\n\n#### HBAOPlus\n\n> [!IMPORTANT]\n> HBAOPlus requires DirectX 11 feature level 11 or above as well as being enabled in Video Options to affect display.\n\nTitle: \"HBAOPlus\"; Base Priority: N/A\n\n- can be used with ppEffectAdjust\n- **cannot** be used with ppEffectEnable\n- **cannot** be used with ppEffectCreate\n- **cannot** be used with ppEffectCommit\n\n| Parameter | Meaning | Type | Range | Defaults (Soft) | Defaults (Medium) | Defaults (Strong) |\n|---|---|---|---|---|---|---|\n| radius | AO radius in meters | float | 0... | 1 |  | 1.2 |\n| bias | hide low-tessellation artifacts | float | 0..0.5 | 0.3 |  |  |\n| detailAO | scale factor for the small-scale AO, the greater the darker | float | 0..2 | 0.1 | 0.3 | 0.5 |\n| coarseAO | scale factor for the large-scale AO, the greater the darker | float | 0..2 | 0.50 | 0.75 | 1.00 |\n| powerExponent | final AO output is pow(AO, powerExponent) | float | 1..4 | 3 |  |  |\n| blurRadius | 0 = disabled blur, 1 = enabled with a radius of 2, 2 = enabled with a radius of 4. | integer | 0, 1, 2 | 1 |  |  |\n| blurSharpness | the greater the sharpness parameter, the more the blur preserves edges | float | 0... | 4 |  |  |\n| fadeSharpness | fading of the AO with distance (greater value = sharper transition) | float | 0... | 5 |  |  |\n| foregroundViewDepth | distance (in meters) of foreground objects - up to this distance the depth is handled differently from the rest of the scene - to prevent huge AO kernel of foreground objects | float | 0... | 2 |  |  |\n| backgroundViewDepth | distance (in meters) of background objects - AO kernel for objects beyond this distance is computed differently | float | 0... | 0 |  |  |\n\nSyntax:\n\n```sqf\n\"HBAOPlus\" ppEffectAdjust [radius, bias, detailAO, coarseAO, powerExponent, blurRadius, blurSharpness, fadeSharpness, foregroundViewDepth, backgroundViewDepth];\n```\n\nDefaults - *depend on HBAO+ setting in Video Options*:\n\n```sqf\n// HBAO+ Soft\n\"HBAOPlus\" ppEffectAdjust [1.0, 0.3, 0.1, 0.50, 3.0, 1.0, 4.0, 5.0, 2.0, 0.0];\n\n// HBAO+ Medium\n\"HBAOPlus\" ppEffectAdjust [1.0, 0.3, 0.3, 0.75, 3.0, 1.0, 4.0, 5.0, 2.0, 0.0];\n\n// HBAO+ Strong\n\"HBAOPlus\" ppEffectAdjust [1.2, 0.3, 0.5, 1.0, 3.0, 1.0, 4.0, 5.0, 2.0, 0.0];\n```\n\nExample:\n\n```sqf\n0 spawn\n{\n    \"HBAOPlus\" ppEffectAdjust [2, 0.3, 1, 1, 2, 1, 4, 5, 2, 0];\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    \"HBAOPlus\" ppEffectAdjust [1.0, 0.3, 0.1, 0.50, 3.0, 1.0, 4.0, 5.0, 2.0, 0.0];\n};\n```","sections":[{"heading":"Scripting Commands","level":3,"markdown":"- ppEffectCreate\n- ppEffectAdjust\n- ppEffectEnable\n- ppEffectEnabled\n- ppEffectForceInNVG\n- ppEffectCommit\n- ppEffectCommitted\n- ppEffectDestroy"},{"heading":"Usage","level":3,"markdown":""},{"heading":"Effect Creation","level":4,"markdown":"```sqf\n_handle = ppEffectCreate [\"effect_type\", priority];\n_handlesArray = ppEffectCreate [[\"effect_type0\", priority0], [\"effect_type1\", priority1], /* ... */];\n```"},{"heading":"Effect Cancellation","level":4,"markdown":"```sqf\nppEffectDestroy handle;\nppEffectDestroy handlesArray;\n```"},{"heading":"Effect Disabling","level":4,"markdown":"Compared to the effect cancellation, in this case the effect is just disabled but still exists\n\n```sqf\n_handle ppEffectEnable false;\n```"},{"heading":"Effect Fade out","level":4,"markdown":"Rather than disabling the effect completely at once, it is possible to use ppEffectAdjust to fade it out over time\n\n```sqf\n//after having created and used effect:\n//set the parameters for the effect back to the default values\n\"colorCorrections\" ppEffectAdjust [1,1,0,[0,0,0,0],[1,1,1,1],[0.299, 0.587, 0.114, 0],[-1,-1,0,0,0,0,0]];\n//then commit and fade out over given time (10 seconds)\n\"colorCorrections\" ppEffectCommit 10;\n//Disable completely after fadeout\n\"colorCorrections\" ppEffectEnable false;\n```"},{"heading":"Parameter Setup","level":4,"markdown":"```sqf\nhandle ppEffectAdjust [par0, par1, /* ... */, parN];\n```"},{"heading":"Parameter application","level":4,"markdown":"```sqf\nhandle ppEffectCommit _duration;\nhandlesArray ppEffectCommit _duration;\n```"},{"heading":"Effect Permission","level":4,"markdown":"```sqf\nhandle ppEffectEnable _OnOrOff;\nhandlesArray ppEffectEnable _OnOrOff;\n```"},{"heading":"Check if Enabled (Arma 3 v1.56)","level":4,"markdown":"```sqf\nppEffectEnabled handle;\n```"},{"heading":"Example","level":4,"markdown":"```sqf\n_handle = ppEffectCreate [\"colorCorrections\", 1501];\n_handle ppEffectEnable true;\n_handle ppEffectAdjust [1.0, 1.0, 0.0, [1.0, 0.1, 1.0, 0.75], [0.0, 1.0, 1.0, 1.0], [0.199, 0.587, 0.114, 0.0]];\n_handle ppEffectCommit 0;\nsleep 10;\nppEffectDestroy _handle;\n```"},{"heading":"Table of Priorities","level":3,"markdown":"Priority defines sequence in which post effects are applied. The higher priority, the later the effect will be applied, on top of the others.\n\n| Base Priority | Effect |\n|---|---|\n| 2500 | ColorInversion |\n| 2000 | FilmGrain |\n| 1500 | ColorCorrections |\n| 400 | DynamicBlur |\n| 300 | WetDistortion |\n| 200 | ChromaticAberration |\n| 100 | RadialBlur |\n| 0 | SSAO |\n| 0 | Resolution |"},{"heading":"Parameters of Individual Effects","level":3,"markdown":""},{"heading":"RadialBlur","level":4,"markdown":"Title: \"RadialBlur\"; Base Priority: 100\n\n> [!NOTE]\n> RadialBlur will not do anything if RADIAL BLUR is disabled in Video Options\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| powerX | relative blur degree on axis X | float | 0... | 0.01 |\n| powerY | relative blur degree on axis Y | float | 0... | 0.01 |\n| offsetX | relative size X of un-blurred centre | float | 0... | 0.06 |\n| offsetY | relative size Y of un-blurred centre | float | 0... | 0.06 |\n\nSyntax:\n\n```sqf\n_radialBlurHandle ppEffectAdjust [powerX, powerY, offsetX, offsetY];\n```\n\nDefaults:\n\n```sqf\n_radialBlurHandle ppEffectAdjust [0.01, 0.01, 0.06, 0.06];\n```\n\nExample:\n\n```sqf\n[\"RadialBlur\", 100, [100, 0.5, 0.1, 0.5]] spawn\n{\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```"},{"heading":"ChromAberration","level":4,"markdown":"Title \"ChromAberration\"; Base Priority: 200\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| aberrationPowerX | relative effect strength (sample spacing from each other) axis X | float | 0... | 0.005 |\n| aberrationPowerY | relative effect strength (sample spacing from each other) axis Y | float | 0... | 0.005 |\n| aspectCorrection | enable/disable correction according to screen aspect ratio | bool | true, false | false |\n\nSyntax:\n\n```sqf\n_chromaticAberrationHandle ppEffectAdjust [aberrationPowerX, aberrationPowerY, aspectCorrection];\n```\n\nDefaults:\n\n```sqf\n_chromaticAberrationHandle ppEffectAdjust [0.005, 0.005, false];\n```\n\nExample:\n\n```sqf\n[\"ChromAberration\", 200, [0.05, 0.05, true]] spawn {\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```"},{"heading":"WetDistortion","level":4,"markdown":"Title: \"WetDistortion\"; Base Priority: 300\n\n> [!NOTE]\n> Effect cancels automatically under water.\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| value | blurriness of distorted image (0 to 1, values above 1 cause unusual) | float | 0..1 | 1 |\n| top, bottom | effect power (top/bottom of screen separately) | float | 0..1 | 1, 1 |\n| horizontal1, horizontal2, vertical1, vertical2 | waves speeds (frequency/PI) | float | 0... | 4.10, 3.70, 2.50, 1.85 |\n| horizontal1, horizontal2, vertical1, vertical2 | waves amplitudes (delta texture coordinates) | float | 0... | 0.0054, 0.0041, 0.0090, 0.0070 |\n| randX, randY | coefficients for phase computing; weight of random vertex data on horizontal/vertical wave phases | float | 0... | 0.5, 0.3 |\n| posX, posY | coefficients for phase computing; weight of vertex X/Y-position on horizontal/vertical wave phases | float | 0... | 10.0, 6.0 |\n\nSyntax:\n\n```sqf\n_wetDistorsionHandle ppEffectAdjust [\n    value,\n    top, bottom,\n    horizontal1, horizontal2, vertical1, vertical2,\n    horizontal1, horizontal2, vertical1, vertical2,\n    randX, randY, posX, posY\n];\n```\n\nDefaults:\n\n```sqf\n_wetDistorsionHandle ppEffectAdjust [\n    1,\n    1, 1,\n    4.10, 3.70, 2.50, 1.85,\n    0.0054, 0.0041, 0.0090, 0.0070,\n    0.5, 0.3, 10.0, 6.0\n];\n```\n\nExample:\n\n```sqf\n[\"WetDistortion\", 300, [1, 0, 1, 4.10, 3.70, 2.50, 1.85, 0.0054, 0.0041, 0.05, 0.0070, 1, 1, 1, 1]] spawn\n{\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```"},{"heading":"ColorCorrections","level":4,"markdown":"Title: \"ColorCorrections\"; Base Priority: 1500\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| brightness | image brightness (0 - black, 1 - unchanged, 2 - white ) | float | 0..2 | 1 |\n| contrast | image contrast (1 - normal contrast) | float | 0... | 1 |\n| offset | image contrast offset (0 - unchanged ) | float | 0... | 0 |\n| [r, g, b, a] | color for blending (r, g, b - color, a - blend factor (0 - original color, 1 - blend color )) | float | 0..1 | [0, 0, 0, 0] |\n| [r, g, b, a] | color for colorization ( r, g, b - color, a - saturation (0 - original color, 1 - B&W multiplied by colorize color)) | float | 0..1 | [1, 1, 1, 1] |\n| [r, g, b, 0] | color rgb weights for desaturation | float | 0..1 | [0.299, 0.587, 0.114, 0] |\n| [<br>    radialMajorAxisRadius,<br>    radialMinorAxisRadius,<br>    radialRotationDeg,<br>    radialCenterX,<br>    radialCenterY,<br>    radialInnerRadiusCoef,<br>    radialInterpCoef<br>] | radial color ***(optional, Arma 3 only)***<br>major axis radius of ellipse<br>minor axis radius of ellipse<br>rotation of ellipse axis (in degrees)<br>centerX of ellipse on the screen (in relative coords, [-0.5] -> [0.5], where 0 is in the screen center)<br>centerY of ellipse on the screen (in relative coords, [-0.5] -> [0.5], where 0 is in the screen center)<br>coefficient for inner radius (where effect is not applied)<br>coefficient for color interpolation between inner and outer radius<br> | float<br>float<br>float<br>float<br>float<br>float<br>float<br> | 0..1<br>0..1<br>0..359<br>-1..1<br>-1..1<br>0..1<br>0...<br> | [<br>    -1,<br>    -1,<br>    0,<br>    0,<br>    0,<br>    0,<br>    0<br>] |\n\nSyntax:\n\n| Arma 3 v1.00 | Arma 2 v1.00Arma 2: Operation Arrowhead v1.50 |\n|---|---|\n| ```sqf<br>_colorCorrectionHandle ppEffectAdjust<br>[<br>    brightness,<br>    contrast,<br>    offset,<br>    [blendR, blendG, blendB, blendA],<br>    [colorizeR, colorizeG, colorizeB, colorizeA],<br>    [weightR, weightG, weightB, 0],<br>    [a, b, angle, cx, cy, innerRCoef, interpCoef]<br>];<br>``` | ```sqf<br>_colorCorrectionHandle ppEffectAdjust<br>[<br>    brightness,<br>    contrast,<br>    offset,<br>    [blendR, blendG, blendB, blendA],<br>    [colorizeR, colorizeG, colorizeB, colorizeA],<br>    [weightR, weightG, weightB, 0]<br>];<br>``` |\n\nDefaults:\n\n| Arma 3 v1.00 | Arma 2 v1.00Arma 2: Operation Arrowhead v1.50 |\n|---|---|\n| ```sqf<br>_colorCorrectionHandle ppEffectAdjust<br>[<br>    1,<br>    1,<br>    0,<br>    [0, 0, 0, 0],<br>    [1, 1, 1, 1],<br>    [0.299, 0.587, 0.114, 0],<br>    [-1, -1, 0, 0, 0, 0, 0]<br>];<br>``` | ```sqf<br>_colorCorrectionHandle ppEffectAdjust<br>[<br>    1,<br>    1,<br>    0,<br>    [0, 0, 0, 0],<br>    [1, 1, 1, 1],<br>    [0.299, 0.587, 0.114, 0]<br>];<br>``` |\n\nExample:\n\n```sqf\n[\"ColorCorrections\", 1500, [1, 0.4, 0, [0, 0, 0, 0], [1, 1, 1, 0], [1, 1, 1, 0]]] spawn\n{\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```"},{"heading":"DynamicBlur","level":4,"markdown":"Title: \"DynamicBlur\"; Base Priority: 400\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| value | blurriness | float | 0... | 0 |\n\nSyntax:\n\n```sqf\n_dynamicBlurHandle ppEffectAdjust [value];\n```\n\nDefaults:\n\n```sqf\n_dynamicBlurHandle ppEffectAdjust [0];\n```\n\nExample:\n\n```sqf\n[\"DynamicBlur\", 400, [10]] spawn\n{\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```"},{"heading":"FilmGrain","level":4,"markdown":"Title: \"FilmGrain\"; Base Priority: 2000\n\n> [!NOTE]\n> **Arma 3:** In Arma 3 the **monochromatic** parameter is numeric. Use **0** for monochrome, any other value for colour.\n\nNumber of parameters is flexible: it may be defined from 1 to 6 parameters, meaning of individual parameters is following:\n\n| Parameter |  | Meaning | Type | Range | Default |\n|---|---|---|---|---|---|\n| intensity |  | intensity | float | 0..1 | 0.005 |\n| sharpness |  | sharpness | float | 1..20 | 1.25 |\n| grainSize |  | grain size | float | 1..8 | 2.01 |\n| intensityX0 |  | intensityX0 | float | -x..0..+x | 0.75 |\n| intensityX1 |  | intensityX1 | float | -x..0..+x | 1.0 |\n| monochromatic | Arma 2 v1.00Arma 2: Operation Arrowhead v1.50 | monochromatic | bool | false, true | true |\n| monochromatic | Arma 3 v1.00 | monochromatic | integer | 0, 1 | 0 |\n\nSyntax:\n\n```sqf\n_filmGrainHandle ppEffectAdjust [\n    intensity,\n    sharpness,\n    grainSize,\n    intensityX0,\n    intensityX1,\n    monochromatic\n];\n```\n\nDefaults:\n\n| Arma 3 v1.00 | Arma 2 v1.00Arma 2: Operation Arrowhead v1.50 |\n|---|---|\n| ```sqf<br>_filmGrainHandle ppEffectAdjust [<br>    0.005,<br>    1.25,<br>    2.01,<br>    0.75,<br>    1.0,<br>    0<br>];<br>``` | ```sqf<br>_filmGrainHandle ppEffectAdjust [<br>    0.005,<br>    1.25,<br>    2.01,<br>    0.75,<br>    1.0,<br>    true<br>];<br>``` |\n\nExample:\n\n| Arma 3 v1.00 | Arma 2 v1.00Arma 2: Operation Arrowhead v1.50 |\n|---|---|\n| ```sqf<br>[\"FilmGrain\", 2000, [1, 0.15, 7, 0.2, 1.0, 0]] spawn<br>{<br>    params [\"_name\", \"_priority\", \"_effect\"];<br><br>    private _handle = -1;<br>    while {<br>        _handle = ppEffectCreate [_name, _priority];<br>        _handle < 0;<br>    } do {<br>        _priority = _priority + 1;<br>    };<br>    _handle ppEffectEnable true;<br>    _handle ppEffectAdjust _effect;<br>    _handle ppEffectCommit 5;<br>    waitUntil { sleep 0.1; ppEffectCommitted _handle };<br>    systemChat \"admire effect for a sec\";<br>    uiSleep 3;<br>    _handle ppEffectEnable false;<br>    ppEffectDestroy _handle;<br>};<br>``` | ```sqf<br>[\"FilmGrain\", 2000, [1, 0.15, 7, 0.2, 1.0, true]] spawn<br>{<br>    local _name = _this select 0;<br>    local _priority = _this select 1;<br>    local _effect = _this select 2;<br>    local _handle = -1;<br>    while {<br>        _handle = ppEffectCreate [_name, _priority];<br>        _handle < 0;<br>    } do {<br>        _priority = _priority + 1;<br>    };<br>    _handle ppEffectEnable true;<br>    _handle ppEffectAdjust _effect;<br>    _handle ppEffectCommit 5;<br>    waitUntil { sleep 0.1; ppEffectCommitted _handle };<br>    systemChat \"admire effect for a sec\";<br>    uiSleep 3;<br>    _handle ppEffectEnable false;<br>    ppEffectDestroy _handle;<br>};<br>``` |"},{"heading":"ColorInversion","level":4,"markdown":"Title: \"ColorInversion\"; Base Priority: 2500\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| Red | Inversion of R channel (image inversion (0..no blur, 1..very blurred) | float | 0..1 | 0 |\n| Green | Inversion of G channel (image inversion (0..no blur, 1..very blurred) | float | 0..1 | 0 |\n| Blue | Inversion of B channel (image inversion (0..no blur, 1..very blurred) | float | 0..1 | 0 |\n\nSyntax:\n\n```sqf\n_colorInversionHandle ppEffectAdjust [Red, Green, Blue];\n```\n\nDefaults:\n\n```sqf\n_colorInversionHandle ppEffectAdjust [0, 0, 0];\n```\n\nExample:\n\n```sqf\n[\"ColorInversion\", 2500, [0.5, 0.5, 0.5]] spawn\n{\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```"},{"heading":"SSAO (Arma 3 v0.50)","level":4,"markdown":"Title: \"SSAO\"; Base Priority: 0\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| intensity |  | float | 0..1 | 0 |\n| threshold0 |  | float | 0..1 | 0 |\n| threshold0 |  | float | 0..1 | 0 |\n| nearRadius |  | float | 0..1 | 0 |\n| farRadius |  | float | 0..1 | 0 |\n| nearDist |  | float | 0..1 | 0 |\n| farDist |  | float | 0..1 | 0 |\n| depthBlurDist |  | float | 0..1 | 0 |\n| blurPasses |  | integer | 0..x | 0 |\n| halfRes |  | bool | true, false | false |\n| blurHalfRes |  | boolean | true, false | false |\n\nSyntax:\n\n```sqf\n_ssaoHandle ppEffectAdjust [\n    intensity,\n    threshold0,\n    threshold1,\n    nearRadius,\n    farRadius,\n    nearDist,\n    farDist,\n    depthBlurDist,\n    blurPasses,\n    halfRes,\n    blurHalfRes\n];\n```\n\nDefaults:\n\n```sqf\n_ssaoHandle ppEffectAdjust [0, 0, 0, 0, 0, 0, 0, 0, 0, false, false];\n```\n\nExample:\n\n```sqf\n[\"SSAO\", 1, [3, 0.25, 0.75, 5, 50, 5, 25, 100, 3, true, true]] spawn\n{\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0;\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```"},{"heading":"Resolution (Arma 3 v2.10)","level":4,"markdown":"Title: \"Resolution\"; Base Priority: 0\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| verticalResolution | define the render's vertical resolution.<br>If the value is negative, the resolution goes back to normal. If the value is greater than the final render's vertical resolution, it gets clamped to it.<br>The effect can be disabled in both cases. | integer | -1..x | -1 |\n\nSyntax:\n\n```sqf\n_resolutionHandle ppEffectAdjust [verticalResolution];\n```\n\nDefaults:\n\n```sqf\n_ssaoHandle ppEffectAdjust [-1];\n```\n\nExample:\n\n```sqf\n[\"Resolution\", 1, [400]] spawn\n{\n    params [\"_name\", \"_priority\", \"_effect\", \"_handle\"];\n    while {\n        _handle = ppEffectCreate [_name, _priority];\n        _handle < 0;\n    } do {\n        _priority = _priority + 1;\n    };\n    _handle ppEffectEnable true;\n    _handle ppEffectAdjust _effect;\n    _handle ppEffectCommit 5;\n    waitUntil { ppEffectCommitted _handle };\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    _handle ppEffectEnable false;\n    ppEffectDestroy _handle;\n};\n```"},{"heading":"Sharpness (Arma 3 v2.20)","level":4,"markdown":"Title: \"Sharpness\"; Base Priority: 0\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| scale | Scale (minimum 0.01) | integer | 0..x | 0 |"},{"heading":"DepthOfField (Arma 3 v2.20)","level":4,"markdown":"Title: \"DepthOfField\"; Base Priority: ?\n\nTBD"},{"heading":"FishEye (Arma 3 v2.20)","level":4,"markdown":"Title: \"FishEye\"; Base Priority: ?\n\nTBD"},{"heading":"Advanced effects","level":3,"markdown":"> [!IMPORTANT]\n> The advanced effects are not intended to be used by the end user. They cannot be created by ppEffectCreate and their adjustments (via ppEffectAdjust) are **immediate** and do not require ppEffectCommit.\n> [More info on the forums](https://forums.bohemia.net/forums/topic/220199-hbaoplus-post-processing-effect/)."},{"heading":"LightShafts","level":4,"markdown":"Title: \"LightShafts\"; Base Priority: N/A\n\n- can be used with ppEffectAdjust\n- can be used with ppEffectEnable\n- **cannot** be used with ppEffectCreate\n- **cannot** be used with ppEffectCommit\n\n| Parameter | Meaning | Type | Range | Defaults |\n|---|---|---|---|---|\n| sunInnerRadius | inner radius of the sun. 0 = no radius, 1 = full screen | float | 0.001..1 | 0.01 |\n| sunOuterRadius | outer radius of the sun. Must be > sunInnerRadius. 0 = no radius, 1 = full screen. light intensity fades out from inner to outer radius | float | 0..1 | 0.6 |\n| exposure | strength of effect | float | 0... | 0.45 |\n| decay | how fast intensity of rays decays with distance | float | 0..1 | 0.89 |\n\nSyntax:\n\n```sqf\n\"LightShafts\" ppEffectAdjust [sunInnerRadius, sunOuterRadius, exposure, decay];\n```\n\nDefaults:\n\n```sqf\n\"LightShafts\" ppEffectAdjust [0.01, 0.6, 0.45, 0.89];\n```\n\nExample:\n\n```sqf\n0 spawn\n{\n    \"LightShafts\" ppEffectEnable true;\n    \"LightShafts\" ppEffectAdjust [0.1,0.25,0.1,1];\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    \"LightShafts\" ppEffectEnable false;\n};\n```"},{"heading":"HBAOPlus","level":4,"markdown":"> [!IMPORTANT]\n> HBAOPlus requires DirectX 11 feature level 11 or above as well as being enabled in Video Options to affect display.\n\nTitle: \"HBAOPlus\"; Base Priority: N/A\n\n- can be used with ppEffectAdjust\n- **cannot** be used with ppEffectEnable\n- **cannot** be used with ppEffectCreate\n- **cannot** be used with ppEffectCommit\n\n| Parameter | Meaning | Type | Range | Defaults (Soft) | Defaults (Medium) | Defaults (Strong) |\n|---|---|---|---|---|---|---|\n| radius | AO radius in meters | float | 0... | 1 |  | 1.2 |\n| bias | hide low-tessellation artifacts | float | 0..0.5 | 0.3 |  |  |\n| detailAO | scale factor for the small-scale AO, the greater the darker | float | 0..2 | 0.1 | 0.3 | 0.5 |\n| coarseAO | scale factor for the large-scale AO, the greater the darker | float | 0..2 | 0.50 | 0.75 | 1.00 |\n| powerExponent | final AO output is pow(AO, powerExponent) | float | 1..4 | 3 |  |  |\n| blurRadius | 0 = disabled blur, 1 = enabled with a radius of 2, 2 = enabled with a radius of 4. | integer | 0, 1, 2 | 1 |  |  |\n| blurSharpness | the greater the sharpness parameter, the more the blur preserves edges | float | 0... | 4 |  |  |\n| fadeSharpness | fading of the AO with distance (greater value = sharper transition) | float | 0... | 5 |  |  |\n| foregroundViewDepth | distance (in meters) of foreground objects - up to this distance the depth is handled differently from the rest of the scene - to prevent huge AO kernel of foreground objects | float | 0... | 2 |  |  |\n| backgroundViewDepth | distance (in meters) of background objects - AO kernel for objects beyond this distance is computed differently | float | 0... | 0 |  |  |\n\nSyntax:\n\n```sqf\n\"HBAOPlus\" ppEffectAdjust [radius, bias, detailAO, coarseAO, powerExponent, blurRadius, blurSharpness, fadeSharpness, foregroundViewDepth, backgroundViewDepth];\n```\n\nDefaults - *depend on HBAO+ setting in Video Options*:\n\n```sqf\n// HBAO+ Soft\n\"HBAOPlus\" ppEffectAdjust [1.0, 0.3, 0.1, 0.50, 3.0, 1.0, 4.0, 5.0, 2.0, 0.0];\n\n// HBAO+ Medium\n\"HBAOPlus\" ppEffectAdjust [1.0, 0.3, 0.3, 0.75, 3.0, 1.0, 4.0, 5.0, 2.0, 0.0];\n\n// HBAO+ Strong\n\"HBAOPlus\" ppEffectAdjust [1.2, 0.3, 0.5, 1.0, 3.0, 1.0, 4.0, 5.0, 2.0, 0.0];\n```\n\nExample:\n\n```sqf\n0 spawn\n{\n    \"HBAOPlus\" ppEffectAdjust [2, 0.3, 1, 1, 2, 1, 4, 5, 2, 0];\n    systemChat \"admire effect for a sec\";\n    uiSleep 3;\n    \"HBAOPlus\" ppEffectAdjust [1.0, 0.3, 0.1, 0.50, 3.0, 1.0, 4.0, 5.0, 2.0, 0.0];\n};\n```"}],"categories":["Scripting Topics"],"groups":["Scripting"]}