From bedd6906eabdd513042d6a178d4dc56a3a41d1d3 Mon Sep 17 00:00:00 2001 From: Fox Caminiti Date: Fri, 16 Dec 2022 20:16:43 -0500 Subject: v3, file/build organization --- src/effects.cpp | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/effects.cpp (limited to 'src/effects.cpp') diff --git a/src/effects.cpp b/src/effects.cpp new file mode 100644 index 0000000..1aacddb --- /dev/null +++ b/src/effects.cpp @@ -0,0 +1,58 @@ +#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); +} -- cgit v1.2.3