Frame interp: Fix cloud shadow flickering (#446)

This commit is contained in:
Luke Street
2026-04-19 21:31:34 -06:00
committed by GitHub
parent 32cddc725b
commit 8b9f09bda5
3 changed files with 12 additions and 6 deletions
@@ -293,11 +293,6 @@ void J3DModel::calcMaterial() {
material->calc(getAnmMtx(material->getJoint()->getJntNo()));
}
#if TARGET_PC
if (mModelData->needsInterpCallBack())
dusk::frame_interp::add_interpolation_callback(&J3DModel::interp_callback, this);
#endif
}
void J3DModel::calcDiffTexMtx() {
@@ -500,6 +495,11 @@ void J3DModel::entry() {
joint->entryIn();
}
}
#if TARGET_PC
if (mModelData->needsInterpCallBack())
dusk::frame_interp::add_interpolation_callback(&J3DModel::interp_callback, this);
#endif
}
void J3DModel::viewCalc() {
@@ -383,6 +383,8 @@ bool J3DMaterial::needsInterpCallBack() const {
case J3DTexMtxMode_EnvmapBasic:
case J3DTexMtxMode_EnvmapOld:
case J3DTexMtxMode_Envmap:
case J3DTexMtxMode_ProjmapBasic:
case J3DTexMtxMode_Projmap:
case J3DTexMtxMode_ViewProjmap:
case J3DTexMtxMode_ViewProjmapBasic:
return true;
+5 -1
View File
@@ -296,7 +296,11 @@ J3DModelData* dRes_info_c::loaderBasicBmd(u32 i_tag, void* i_data) {
addWarpMaterial(modelData);
}
if (i_tag == 'BMDR' || i_tag == 'BMWR') {
// FRAME INTERP NOTE: Always create shared DL buffers so we can use J3DMaterial::diff()
#ifndef TARGET_PC
if (i_tag == 'BMDR' || i_tag == 'BMWR')
#endif
{
s32 result = modelData->newSharedDisplayList(J3DMdlFlag_UseSingleDL);
if (result != kJ3DError_Success) {
return NULL;