summaryrefslogtreecommitdiff
path: root/src/egg/gfx/eggPostEffectSimple.cpp
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2025-03-20 19:59:10 +0100
committerrobojumper <robojumper@gmail.com>2025-03-20 19:59:10 +0100
commita26b40083fa1113368f7e381836b87eba20e8c52 (patch)
tree205ac27ce67d4b498fa367554f8ebd43ad6630d7 /src/egg/gfx/eggPostEffectSimple.cpp
parent2c2d5849b4f64e5938ab7108d263ffad5d24962f (diff)
Simple match
Diffstat (limited to 'src/egg/gfx/eggPostEffectSimple.cpp')
-rw-r--r--src/egg/gfx/eggPostEffectSimple.cpp47
1 files changed, 46 insertions, 1 deletions
diff --git a/src/egg/gfx/eggPostEffectSimple.cpp b/src/egg/gfx/eggPostEffectSimple.cpp
index 468e8539..24c18b9f 100644
--- a/src/egg/gfx/eggPostEffectSimple.cpp
+++ b/src/egg/gfx/eggPostEffectSimple.cpp
@@ -1,3 +1,48 @@
#include "egg/gfx/eggPostEffectSimple.h"
-namespace EGG {} // namespace EGG
+#include "egg/gfx/eggDrawGX.h"
+#include "nw4r/math/math_types.h"
+#include "rvl/GX/GXTypes.h"
+
+namespace EGG {
+
+PostEffectSimple::PostEffectSimple()
+ : field_0x2C(DrawGX::WHITE), field_0x30(1.0f), field_0x34(GX_CS_SCALE_1), field_0x38(1) {}
+
+void PostEffectSimple::setMaterialInternal() {
+ loadTextureInternal();
+ GXColor c = field_0x2C;
+ if (field_0x30 < 1.0f) {
+ scaleColor(c, c, true, field_0x30);
+ }
+ setMatColorChannel();
+ GXSetNumTexGens(1);
+ GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x1e, 0, 0x7d);
+ nw4r::math::MTX34 mtx;
+ getBaseTexMtx(&mtx);
+ GXLoadTexMtxImm(mtx, 0x1e, GX_MTX_2x4);
+ setMatInd();
+ GXSetNumTevStages(1);
+ GXSetTevDirect(GX_TEVSTAGE0);
+ GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP0);
+ GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA);
+ GXSetTevKColorSel(GX_TEVSTAGE0, GX_TEV_KCSEL_K0);
+ GXSetTevKAlphaSel(GX_TEVSTAGE0, GX_TEV_KASEL_K0_A);
+ GXSetTevKColor(GX_KCOLOR0, c);
+ GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, mTexMapId, GX_COLOR_NULL);
+ GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_KONST, GX_CC_ZERO);
+ GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, field_0x34, 1, GX_TEVPREV);
+ switch (field_0x38) {
+ case 0: GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); break;
+ case 1: GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_KONST, GX_CA_ZERO); break;
+ case 2:
+ GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXA, GX_CC_KONST, GX_CC_ZERO);
+ GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST);
+ break;
+ }
+
+ GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, field_0x34, true, GX_TEVPREV);
+ setMatPE();
+}
+
+} // namespace EGG