From 2113ae54df2da867f553df3a9ee457c0a3856a33 Mon Sep 17 00:00:00 2001 From: bigfoot547 Date: Fri, 14 Jun 2024 20:29:43 -0500 Subject: initial commit --- .../dev/figboot/cuberender/state/BlendMode.java | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/main/java/dev/figboot/cuberender/state/BlendMode.java (limited to 'src/main/java/dev/figboot/cuberender/state/BlendMode.java') diff --git a/src/main/java/dev/figboot/cuberender/state/BlendMode.java b/src/main/java/dev/figboot/cuberender/state/BlendMode.java new file mode 100644 index 0000000..0c30998 --- /dev/null +++ b/src/main/java/dev/figboot/cuberender/state/BlendMode.java @@ -0,0 +1,26 @@ +package dev.figboot.cuberender.state; + +import dev.figboot.cuberender.math.Vector4f; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +@Getter +public enum BlendMode { + DISABLE((inOutColor, prev) -> inOutColor.w = 1), + BLEND_OVER((inOutColor, prev) -> { + float pAlphaFactor = prev.w * (1 - inOutColor.w); + float aOut = inOutColor.w + pAlphaFactor; + + inOutColor.x = (inOutColor.x + prev.x * pAlphaFactor) / aOut; + inOutColor.y = (inOutColor.y + prev.y * pAlphaFactor) / aOut; + inOutColor.z = (inOutColor.z + prev.z * pAlphaFactor) / aOut; + inOutColor.w = aOut; + }); + + private final BlendFunction function; + + public interface BlendFunction { + void blend(Vector4f inOutColor, Vector4f prev); + } +} -- cgit v1.2.3-70-g09d2