diff options
Diffstat (limited to 'effects.cpp')
-rw-r--r-- | effects.cpp | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/effects.cpp b/effects.cpp index c5a07af..1aacddb 100644 --- a/effects.cpp +++ b/effects.cpp @@ -5,9 +5,7 @@ static void Effect_DrawColor(real32 *Data, int Width, int Height, int BytesPerPixel, void *EffectBitmapAddress, uint16 ShaderProgram) { v4 Color = { Data[0], Data[1], Data[2], Data[3] }; - blend_mode BlendMode = (blend_mode)Data[4]; - Effect_GL_DrawColor(Width, Height, BytesPerPixel, EffectBitmapAddress, ShaderProgram, Color, BlendMode); - // Effect_Software_DrawColor(Width, Height, BytesPerPixel, EffectBitmapAddress, Color, BlendMode); + Effect_GL_DrawColor(Width, Height, BytesPerPixel, EffectBitmapAddress, ShaderProgram, Color); } static void @@ -16,3 +14,45 @@ Effect_GaussianBlur(real32 *Data, int Width, int Height, int BytesPerPixel, void real32 Radius = Data[0]; Effect_GL_GaussianBlur(Width, Height, BytesPerPixel, EffectBitmapAddress, ShaderProgram, Radius); } + +static void +Effect_Curves_Init(block_effect *Effect, property_channel *Property) +{ + for (int i = 0; i < 5; i++) { + Property->Identifier = i; + Property++; + Property->Identifier = i; + Property++; + + Property->CurrentValue = 1.0f; + Property->Identifier = i; + Property++; + Property->CurrentValue = 1.0f; + Property->Identifier = i; + Property++; + + Effect->ExtraData[i] = 2; + } +} + +static void +Effect_Levels(real32 *Data, int Width, int Height, int BytesPerPixel, void *EffectBitmapAddress, uint16 ShaderProgram) +{ + real32 Min = Data[0]; + real32 Mid = Data[1]; + real32 Max = Data[2]; + + v4 ColMin = *(v4 *)&Data[3]; + v4 ColMid = *(v4 *)&Data[3+4]; + v4 ColMax = *(v4 *)&Data[3+8]; + Effect_GL_Levels(Width, Height, BytesPerPixel, EffectBitmapAddress, ShaderProgram, Min, Mid, Max, ColMin, ColMid, ColMax); +} + +static void +Effect_Curves(real32 *Data, int Width, int Height, int BytesPerPixel, void *EffectBitmapAddress, uint16 ShaderProgram) +{ + real32 PointCount = *Data; + v4 PointCount_Col = *(v4 *)(Data + 1); + v2 *PointData = (v2 *)(Data + 5); + Effect_Software_Curves(Width, Height, BytesPerPixel, EffectBitmapAddress, PointData, PointCount, PointCount_Col); +} |