#if SPECIAL #include "main.h" #endif #include "effects_software.cpp" #include "effects_gl.cpp" 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] }; Effect_GL_DrawColor(Width, Height, BytesPerPixel, EffectBitmapAddress, ShaderProgram, Color); } static void Effect_GaussianBlur(real32 *Data, int Width, int Height, int BytesPerPixel, void *EffectBitmapAddress, uint16 ShaderProgram) { 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); }