diff options
author | Fox Caminiti <fox@foxcam.net> | 2022-12-16 20:16:43 -0500 |
---|---|---|
committer | Fox Caminiti <fox@foxcam.net> | 2022-12-16 20:16:43 -0500 |
commit | bedd6906eabdd513042d6a178d4dc56a3a41d1d3 (patch) | |
tree | 2bcbd3e46ae61e583707a2ccc5b3f5cfeacb61a8 /src/effects.cpp | |
parent | cdb9e1f7240cb0716b7d99df5e1fd7c3fc3407a8 (diff) |
v3, file/build organization
Diffstat (limited to 'src/effects.cpp')
-rw-r--r-- | src/effects.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
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); +} |