summaryrefslogtreecommitdiff
path: root/src/ps2/ps2matfx.cpp
diff options
context:
space:
mode:
authorclaude-bot <[email protected]>2026-07-13 12:40:03 +0000
committerclaude-bot <[email protected]>2026-07-13 12:40:03 +0000
commit847962910f0bff071f3bf07c9abb87764fb6cac3 (patch)
treeddcd429e134c7fd5f72ddc97ced175de8d66fcd0 /src/ps2/ps2matfx.cpp
downloadlibrw-847962910f0bff071f3bf07c9abb87764fb6cac3.tar.gz
librw-847962910f0bff071f3bf07c9abb87764fb6cac3.zip
Import aap/librw @ masterHEADmaster
Snapshot for re3/reVC vendoring, per @lzcnt. Source: https://github.com/aap/librw (master).
Diffstat (limited to 'src/ps2/ps2matfx.cpp')
-rw-r--r--src/ps2/ps2matfx.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/ps2/ps2matfx.cpp b/src/ps2/ps2matfx.cpp
new file mode 100644
index 0000000..6972a05
--- /dev/null
+++ b/src/ps2/ps2matfx.cpp
@@ -0,0 +1,68 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "../rwbase.h"
+#include "../rwerror.h"
+#include "../rwplg.h"
+#include "../rwpipeline.h"
+#include "../rwobjects.h"
+#include "../rwanim.h"
+#include "../rwengine.h"
+#include "../rwplugins.h"
+#include "rwps2.h"
+#include "rwps2plg.h"
+
+#define PLUGIN_ID ID_MATFX
+
+namespace rw {
+namespace ps2 {
+
+static void*
+matfxOpen(void *o, int32, int32)
+{
+ matFXGlobals.pipelines[PLATFORM_PS2] = makeMatFXPipeline();
+ return o;
+}
+
+static void*
+matfxClose(void *o, int32, int32)
+{
+ ((ObjPipeline*)matFXGlobals.pipelines[PLATFORM_PS2])->groupPipeline->destroy();
+ ((ObjPipeline*)matFXGlobals.pipelines[PLATFORM_PS2])->destroy();
+ matFXGlobals.pipelines[PLATFORM_PS2] = nil;
+ return o;
+}
+
+void
+initMatFX(void)
+{
+ Driver::registerPlugin(PLATFORM_PS2, 0, ID_MATFX,
+ matfxOpen, matfxClose);
+}
+
+ObjPipeline*
+makeMatFXPipeline(void)
+{
+ MatPipeline *pipe = MatPipeline::create();
+ pipe->pluginID = ID_MATFX;
+ pipe->pluginData = 0;
+ pipe->attribs[AT_XYZ] = &attribXYZ;
+ pipe->attribs[AT_UV] = &attribUV;
+ pipe->attribs[AT_RGBA] = &attribRGBA;
+ pipe->attribs[AT_NORMAL] = &attribNormal;
+ uint32 vertCount = MatPipeline::getVertCount(0x3C5, 4, 3, 3);
+ pipe->setTriBufferSizes(4, vertCount);
+ pipe->vifOffset = pipe->inputStride*vertCount;
+ pipe->uninstanceCB = genericUninstanceCB;
+
+ ObjPipeline *opipe = ObjPipeline::create();
+ opipe->pluginID = ID_MATFX;
+ opipe->pluginData = 0;
+ opipe->groupPipeline = pipe;
+ return opipe;
+}
+
+}
+}