From 2a1dc2ba871803932e2da4d8534de0eeaeaaf347 Mon Sep 17 00:00:00 2001 From: fincs Date: Thu, 9 Feb 2017 19:59:46 +0100 Subject: [PATCH] Added C3D_FragOpShadow() --- include/c3d/effect.h | 1 + source/effect.c | 7 +++++++ source/internal.h | 1 + 3 files changed, 9 insertions(+) diff --git a/include/c3d/effect.h b/include/c3d/effect.h index b64cc73..b128921 100644 --- a/include/c3d/effect.h +++ b/include/c3d/effect.h @@ -11,3 +11,4 @@ void C3D_AlphaTest(bool enable, GPU_TESTFUNC function, int ref); void C3D_AlphaBlend(GPU_BLENDEQUATION colorEq, GPU_BLENDEQUATION alphaEq, GPU_BLENDFACTOR srcClr, GPU_BLENDFACTOR dstClr, GPU_BLENDFACTOR srcAlpha, GPU_BLENDFACTOR dstAlpha); void C3D_ColorLogicOp(GPU_LOGICOP op); void C3D_FragOpMode(GPU_FRAGOPMODE mode); +void C3D_FragOpShadow(float scale, float bias); diff --git a/source/effect.c b/source/effect.c index 3b5db61..038f5f6 100644 --- a/source/effect.c +++ b/source/effect.c @@ -73,6 +73,12 @@ void C3D_FragOpMode(GPU_FRAGOPMODE mode) e->fragOpMode |= 0xE40000 | mode; } +void C3D_FragOpShadow(float scale, float bias) +{ + C3D_Effect* e = getEffect(); + e->fragOpShadow = f32tof16(scale+bias) | (f32tof16(-scale)<<16); +} + void C3Di_EffectBind(C3D_Effect* e) { GPUCMD_AddWrite(GPUREG_DEPTHMAP_ENABLE, e->zBuffer ? 1 : 0); @@ -83,6 +89,7 @@ void C3Di_EffectBind(C3D_Effect* e) GPUCMD_AddWrite(GPUREG_BLEND_FUNC, e->alphaBlend); GPUCMD_AddWrite(GPUREG_LOGIC_OP, e->clrLogicOp); GPUCMD_AddMaskedWrite(GPUREG_COLOR_OPERATION, 7, e->fragOpMode); + GPUCMD_AddWrite(GPUREG_FRAGOP_SHADOW, e->fragOpShadow); // Disable early depth test? GPUCMD_AddMaskedWrite(GPUREG_EARLYDEPTH_TEST1, 1, 0); diff --git a/source/internal.h b/source/internal.h index 3823abd..da1f7cd 100644 --- a/source/internal.h +++ b/source/internal.h @@ -10,6 +10,7 @@ typedef struct { u32 fragOpMode; + u32 fragOpShadow; u32 zScale, zOffset; GPU_CULLMODE cullMode; bool zBuffer;