» Image Adjustment Pack
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

Image Adjustment Pack

effect color pixelshader contrast image adjustment saturation keying image correction


pixelshader functions resource

v1 includes:

  • Invert
  • Contrast
  • Saturation: Greyscale & Saturation
  • Levels
  • Tonecurves
  • LumaMatte: Luma & Inverse Luma
  • ColorMatte

maybe a bunch of single effects, which are combining differnt functions can be avoided this way...

feedback and tell me whats missing, plz


28.01.11 [16:17 UTC] by woei | 1820 downloads

West 28/01/2011 - 20:22

Nice collection to "chrush some blacks" :)

And big thumbs up for the Mattes!!

lasal 29/01/2011 - 21:23

very usefull ;)

woei 31/01/2011 - 20:54

thx for the flowers, guys!

any suggestions, what's missing for the basics? or other feedback?

West 02/02/2011 - 00:49

Spreadable key-colors would be funny. what is a .FXH vs a .FX ??

And the Hue/Saturation filter, with colorize function, like in Photoshop is something I could use.

woei 02/02/2011 - 01:36

actually you can do the spreading of keycolors yourself. thats why its a FXH.

there simple functions wrapped in these fxh files. so if you for example need a shader to control saturation, contrast and then keying out the green, you don't need to copy paste everything together but just include the .fxh and call the functions like:

#include "path/Saturation.fxh"
#include "path/Contrast.fxh"
#include "path/ColorMatte.fxh"

and in the pixelshader

float4 col=tex2d(Samp,In.TexCd)
col = Saturation(col); 
col = Contrast(col);
return col;

hope is, that this could prevent a lot of similar shaders (f)lying around

phlegma 18/04/2011 - 13:06

Create Work, Create Help, Thanx

deby 07/06/2011 - 18:53

Create contibution. Thanks!
I try to create an allinOne FX but with no result...

An idea?
Thanks a lot

//@author: woei
//@help: greyscale conversion function and saturation adjustment per channel
//@tags: greyscale, saturation, color correction, image adjustment, pixelshader
// --------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------
float4x4 tW: WORLD;        //the models world matrix
float4x4 tV: VIEW;         //view matrix as set via Renderer (EX9)
float4x4 tP: PROJECTION;
texture Tex <string uiname="Texture";>;
sampler Samp = sampler_state    //sampler for doing the texture-lookup
    Texture   = (Tex);          //apply a texture to the sampler
    MipFilter = Linear;         //sampler states
    MinFilter = Linear;
    MagFilter = Linear;
//texture transformation marked with semantic TEXTUREMATRIX to achieve symmetric transformations
float4x4 tTex: TEXTUREMATRIX <string uiname="Texture Transform";>;
#include "Contrast.fxh"
#include "Invert.fxh"
#include "Levels.fxh"
#include "Saturation.fxh"
#include "Tonecurve.fxh"
//the data structure: "vertexshader to pixelshader"
//used as output data with the VS function
//and as input data with the PS function
struct vs2ps
    float4 Pos  : POSITION;
    float2 TexCd : TEXCOORD0;
// --------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------
vs2ps VS(
    float4 PosO  : POSITION,
    float4 TexCd : TEXCOORD0)
    //declare output struct
    vs2ps Out;
    //transform position
    Out.Pos = mul(PosO, tWVP);
    //transform texturecoordinates
    Out.TexCd = mul(TexCd, tTex);
    return Out;
// --------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------
float4 PS(vs2ps In): COLOR
    float4 col = tex2d(Samp, In.TexCd);
    col = Contrast(col);
    col = Invert(col);
    col = Levels(col);
    col = Saturation(col);
    col = Tonecurve(col);
    return col;
// --------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------
technique TFX
    pass P0
        VertexShader = compile vs_1_1 VS();
        PixelShader  = compile ps_1_0 GREY();
technique TFixedFunction
    pass P0
        WorldTransform[0]   = (tW);
        ViewTransform       = (tV);
        ProjectionTransform = (tP);
        Sampler[0] = (Samp);
        TextureTransform[0] = (tTex);
        TexCoordIndex[0] = 0;
        TextureTransformFlags[0] = COUNT2;
        //Wrap0 = U;  // useful when mesh is round like a sphere
        Lighting       = FALSE;
        VertexShader = NULL;
        PixelShader  = NULL;
woei 10/06/2011 - 16:46

@deby: whats the error in the editor?
are the fxh files positioned beside the fx you are editing?
and you probably have to switch to shader model 2.0 at least. (technique -> pass p0 -> PixelShader...)

deby 10/06/2011 - 21:55

Hello woei,
the error appears here:

float4 PS(vs2ps In): COLOR

    float4 col = tex2d(Samp, In.TexCd);

col = Contrast(col);
col = Invert(col);
col = Levels(col);
col = Saturation(col);
col = Tonecurve(col);
return col;
the fxh files are in the same directory as the pixelshader.
I am totally beginner in programming pixelshader...

woei 14/06/2011 - 16:25

@deby: which line exactly does the error appear? and did you set the shader model in the technique to 2.0 or 3.0?

krementsov 29/05/2015 - 20:44

Hello woei,
Can you help me?
All nodes in this pack don't work with DX11, but work with DX9. What could be the problem?

Pin "Technique" is red

I can give you additional if you need.

Or may be you know another good pack for working with image.

blausand 29/05/2015 - 20:57

@deby: Why is your pixelshader called PS() but your pass calls GREY()?

anonymous user login


~3h ago

young47: Will visit Köln and Düsseldorf this week. I'm an artist from Moscow, would be happy to meet someone! If you will be there, reply :)

~5h ago

microdee: vpm got a clean-up update. Download here: https://github.com/vvvvpm/vpm/releases/tag/1.3

~2d ago

joreg: @udo2013 please note that bass is only available with x86 builds!

~2d ago

aeckheim: Can't find the visual c++ runtime 2008. setup.exe link leads to nowhere. try to setup newest beta version

~3d ago

joreg: More #vvvv workshop dates for the coming months are announced: upcoming-full-day-vvvv-gamma-workshops-in-berlin

~4d ago

mburk: @synth can confirm crashes with instance noodles. studio drivers fixed it.

~6d ago

synth: @nissidis: So i am not crazy! Thanks for confirmation :) These are the things i do have problems with as well.

~6d ago

nissidis: @synth I do with Instance Noodles and FieldTrip (RTX 2080) I rolled back to Studio Drivers (instead of GameReady ones)

~6d ago

synth: Anyone having problems with latest Nvidia Drivers and vvvv?