add helper method to convert between TStencilFace and MaterialInstance::StencilFace (not strictly necessary, but will help if something upstream changes in future

This commit is contained in:
Nick Fisher
2025-06-09 18:12:17 +08:00
parent 6055bd3fa7
commit 0dd64a07bb

View File

@@ -176,13 +176,25 @@ namespace thermion
materialInstance->setStencilOpDepthStencilPass(op, face);
}
filament::MaterialInstance::StencilFace toStencilFace(TStencilFace tface) {
switch(tface) {
case STENCIL_FACE_FRONT: return filament::MaterialInstance::StencilFace::FRONT;
case STENCIL_FACE_BACK: return filament::MaterialInstance::StencilFace::BACK;
case STENCIL_FACE_FRONT_AND_BACK: return filament::MaterialInstance::StencilFace::FRONT_AND_BACK;
default: throw std::invalid_argument("Invalid TStencilFace value");
}
}
EMSCRIPTEN_KEEPALIVE void MaterialInstance_setStencilCompareFunction(TMaterialInstance *tMaterialInstance,
TSamplerCompareFunc tFunc, TStencilFace tFace)
{
auto *materialInstance = reinterpret_cast<::filament::MaterialInstance *>(tMaterialInstance);
auto func = static_cast<filament::MaterialInstance::StencilCompareFunc>(tFunc);
auto face = static_cast<filament::MaterialInstance::StencilFace>(tFace);
materialInstance->setStencilCompareFunction(func, face);
auto face = toStencilFace(tFace);
materialInstance->setStencilCompareFunction(
func,
face);
}
EMSCRIPTEN_KEEPALIVE void MaterialInstance_setStencilReferenceValue(TMaterialInstance *tMaterialInstance,