mirror of https://github.com/AxioDL/metaforce.git
Vulkan backend fixes
This commit is contained in:
parent
f4bd59bb2f
commit
536f943858
|
@ -117,7 +117,7 @@ struct CTweakGui final : ITweakGui
|
||||||
Value<float> x1f4_;
|
Value<float> x1f4_;
|
||||||
Value<float> x1f8_;
|
Value<float> x1f8_;
|
||||||
Value<float> x1fc_;
|
Value<float> x1fc_;
|
||||||
float x200_;
|
zeus::CColor x200_;
|
||||||
float x204_xrayBlurScaleLinear = 0.0014f;
|
float x204_xrayBlurScaleLinear = 0.0014f;
|
||||||
float x208_xrayBlurScaleQuadratic = 0.0000525f;
|
float x208_xrayBlurScaleQuadratic = 0.0000525f;
|
||||||
Value<float> x20c_;
|
Value<float> x20c_;
|
||||||
|
@ -314,9 +314,7 @@ struct CTweakGui final : ITweakGui
|
||||||
xd8_ = zeus::degToRad(xd8_);
|
xd8_ = zeus::degToRad(xd8_);
|
||||||
xdc_ = zeus::degToRad(xdc_);
|
xdc_ = zeus::degToRad(xdc_);
|
||||||
|
|
||||||
x200_ = x1f4_ * 0.25f;
|
x200_ = zeus::CColor(x1f4_ * 0.25f, x1f8_ * 0.25f, x1fc_ * 0.25f, 1.f);
|
||||||
x204_xrayBlurScaleLinear = x1f8_ * 0.25f;
|
|
||||||
x208_xrayBlurScaleQuadratic = x1fc_ * 0.25f;
|
|
||||||
|
|
||||||
x210_scanSidesAngle = zeus::degToRad(x210_scanSidesAngle);
|
x210_scanSidesAngle = zeus::degToRad(x210_scanSidesAngle);
|
||||||
x228_scanSidesEndTime = x220_scanSidesDuration + x224_scanSidesStartTime;
|
x228_scanSidesEndTime = x220_scanSidesDuration + x224_scanSidesStartTime;
|
||||||
|
|
|
@ -183,6 +183,36 @@ void CFluidPlaneShader::PrepareBinding(const boo::ObjToken<boo::IShaderPipeline>
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CFluidPlaneShader::Shutdown()
|
||||||
|
{
|
||||||
|
_cache.Clear();
|
||||||
|
switch (CGraphics::g_BooFactory->platform())
|
||||||
|
{
|
||||||
|
#if BOO_HAS_GL
|
||||||
|
case boo::IGraphicsDataFactory::Platform::OpenGL:
|
||||||
|
CFluidPlaneShader::_Shutdown<boo::GLDataFactory>();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#if _WIN32
|
||||||
|
case boo::IGraphicsDataFactory::Platform::D3D11:
|
||||||
|
case boo::IGraphicsDataFactory::Platform::D3D12:
|
||||||
|
CFluidPlaneShader::_Shutdown<boo::ID3DDataFactory>();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#if BOO_HAS_METAL
|
||||||
|
case boo::IGraphicsDataFactory::Platform::Metal:
|
||||||
|
CFluidPlaneShader::_Shutdown<boo::MetalDataFactory>();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#if BOO_HAS_VULKAN
|
||||||
|
case boo::IGraphicsDataFactory::Platform::Vulkan:
|
||||||
|
CFluidPlaneShader::_Shutdown<boo::VulkanDataFactory>();
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CFluidPlaneShader::CFluidPlaneShader(CFluidPlane::EFluidType type,
|
CFluidPlaneShader::CFluidPlaneShader(CFluidPlane::EFluidType type,
|
||||||
const std::experimental::optional<TLockedToken<CTexture>>& patternTex1,
|
const std::experimental::optional<TLockedToken<CTexture>>& patternTex1,
|
||||||
const std::experimental::optional<TLockedToken<CTexture>>& patternTex2,
|
const std::experimental::optional<TLockedToken<CTexture>>& patternTex2,
|
||||||
|
|
|
@ -151,6 +151,8 @@ private:
|
||||||
const boo::ObjToken<boo::IShaderPipeline>& pipeline, bool door);
|
const boo::ObjToken<boo::IShaderPipeline>& pipeline, bool door);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
template <class F> static void _Shutdown();
|
||||||
|
|
||||||
void PrepareBinding(const boo::ObjToken<boo::IShaderPipeline>& pipeline, u32 maxVertCount, bool door);
|
void PrepareBinding(const boo::ObjToken<boo::IShaderPipeline>& pipeline, u32 maxVertCount, bool door);
|
||||||
public:
|
public:
|
||||||
CFluidPlaneShader(CFluidPlane::EFluidType type,
|
CFluidPlaneShader(CFluidPlane::EFluidType type,
|
||||||
|
@ -169,7 +171,7 @@ public:
|
||||||
void prepareDraw(const RenderSetupInfo& info);
|
void prepareDraw(const RenderSetupInfo& info);
|
||||||
void loadVerts(const std::vector<Vertex>& verts);
|
void loadVerts(const std::vector<Vertex>& verts);
|
||||||
|
|
||||||
static void Shutdown() { _cache.Clear(); }
|
static void Shutdown();
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -578,6 +578,9 @@ CFluidPlaneShader::BuildShader(boo::GLDataFactory::Context& ctx, const SFluidPla
|
||||||
boo::CullMode::None);
|
boo::CullMode::None);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void CFluidPlaneShader::_Shutdown<boo::GLDataFactory>() {}
|
||||||
|
|
||||||
#if BOO_HAS_VULKAN
|
#if BOO_HAS_VULKAN
|
||||||
static boo::ObjToken<boo::IVertexFormat> s_vtxFmt;
|
static boo::ObjToken<boo::IVertexFormat> s_vtxFmt;
|
||||||
|
|
||||||
|
@ -633,6 +636,13 @@ CFluidPlaneShader::BuildShader(boo::VulkanDataFactory::Context& ctx, const SFlui
|
||||||
boo::Primitive::TriStrips, boo::ZTest::LEqual, false, true, false,
|
boo::Primitive::TriStrips, boo::ZTest::LEqual, false, true, false,
|
||||||
boo::CullMode::None);
|
boo::CullMode::None);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void CFluidPlaneShader::_Shutdown<boo::VulkanDataFactory>()
|
||||||
|
{
|
||||||
|
s_vtxFmt.reset();
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
boo::ObjToken<boo::IShaderDataBinding>
|
boo::ObjToken<boo::IShaderDataBinding>
|
||||||
|
|
|
@ -558,6 +558,12 @@ CFluidPlaneShader::BuildShader(boo::ID3DDataFactory::Context& ctx, const SFluidP
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void CFluidPlaneShader::_Shutdown<boo::ID3DDataFactory>()
|
||||||
|
{
|
||||||
|
s_vtxFmt.reset();
|
||||||
|
}
|
||||||
|
|
||||||
boo::ObjToken<boo::IShaderDataBinding>
|
boo::ObjToken<boo::IShaderDataBinding>
|
||||||
CFluidPlaneShader::BuildBinding(boo::ID3DDataFactory::Context& ctx,
|
CFluidPlaneShader::BuildBinding(boo::ID3DDataFactory::Context& ctx,
|
||||||
const boo::ObjToken<boo::IShaderPipeline>& pipeline, bool door)
|
const boo::ObjToken<boo::IShaderPipeline>& pipeline, bool door)
|
||||||
|
|
|
@ -586,6 +586,12 @@ CFluidPlaneShader::BuildShader(boo::MetalDataFactory::Context& ctx, const SFluid
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void CFluidPlaneShader::_Shutdown<boo::MetalDataFactory>()
|
||||||
|
{
|
||||||
|
s_vtxFmt.reset();
|
||||||
|
}
|
||||||
|
|
||||||
boo::ObjToken<boo::IShaderDataBinding> CFluidPlaneShader::BuildBinding(boo::MetalDataFactory::Context& ctx,
|
boo::ObjToken<boo::IShaderDataBinding> CFluidPlaneShader::BuildBinding(boo::MetalDataFactory::Context& ctx,
|
||||||
const boo::ObjToken<boo::IShaderPipeline>& pipeline, bool door)
|
const boo::ObjToken<boo::IShaderPipeline>& pipeline, bool door)
|
||||||
{
|
{
|
||||||
|
|
|
@ -171,7 +171,8 @@ void CScriptSpecialFunction::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId
|
||||||
if (msg == EScriptObjectMessage::Action)
|
if (msg == EScriptObjectMessage::Action)
|
||||||
{
|
{
|
||||||
mgr.MapWorldInfo()->SetMapStationUsed(true);
|
mgr.MapWorldInfo()->SetMapStationUsed(true);
|
||||||
const_cast<CMapWorld&>(*mgr.WorldNC()->GetMapWorld()).RecalculateWorldSphere(*mgr.MapWorldInfo(), *mgr.GetWorld());
|
const_cast<CMapWorld&>(*mgr.WorldNC()->GetMapWorld()).RecalculateWorldSphere
|
||||||
|
(*mgr.MapWorldInfo(), *mgr.GetWorld());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -180,7 +181,8 @@ void CScriptSpecialFunction::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId
|
||||||
if (msg == EScriptObjectMessage::Action)
|
if (msg == EScriptObjectMessage::Action)
|
||||||
{
|
{
|
||||||
CPlayerState& pState = *mgr.GetPlayerState().get();
|
CPlayerState& pState = *mgr.GetPlayerState().get();
|
||||||
pState.ResetAndIncrPickUp(CPlayerState::EItemType::Missiles, pState.GetItemCapacity(CPlayerState::EItemType::Missiles));
|
pState.ResetAndIncrPickUp(CPlayerState::EItemType::Missiles,
|
||||||
|
pState.GetItemCapacity(CPlayerState::EItemType::Missiles));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -189,7 +191,8 @@ void CScriptSpecialFunction::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId
|
||||||
if (msg == EScriptObjectMessage::Action)
|
if (msg == EScriptObjectMessage::Action)
|
||||||
{
|
{
|
||||||
CPlayerState& pState = *mgr.GetPlayerState().get();
|
CPlayerState& pState = *mgr.GetPlayerState().get();
|
||||||
pState.ResetAndIncrPickUp(CPlayerState::EItemType::PowerBombs, pState.GetItemCapacity(CPlayerState::EItemType::PowerBombs));
|
pState.ResetAndIncrPickUp(CPlayerState::EItemType::PowerBombs,
|
||||||
|
pState.GetItemCapacity(CPlayerState::EItemType::PowerBombs));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -278,7 +281,8 @@ void CScriptSpecialFunction::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId
|
||||||
{
|
{
|
||||||
CDamageInfo dInfo = x11c_damageInfo;
|
CDamageInfo dInfo = x11c_damageInfo;
|
||||||
dInfo.SetRadius(xfc_);
|
dInfo.SetRadius(xfc_);
|
||||||
mgr.ApplyDamageToWorld(GetUniqueId(), *this, GetTranslation(), dInfo, CMaterialFilter::MakeIncludeExclude({EMaterialTypes::Solid}, {0ull}));
|
mgr.ApplyDamageToWorld(GetUniqueId(), *this, GetTranslation(), dInfo,
|
||||||
|
CMaterialFilter::MakeIncludeExclude({EMaterialTypes::Solid}, {0ull}));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -329,6 +333,8 @@ void CScriptSpecialFunction::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -465,7 +471,8 @@ void CScriptSpecialFunction::DeleteEmitter(const CSfxHandle& handle)
|
||||||
|
|
||||||
u32 CScriptSpecialFunction::GetSpecialEnding(const CStateManager& mgr) const
|
u32 CScriptSpecialFunction::GetSpecialEnding(const CStateManager& mgr) const
|
||||||
{
|
{
|
||||||
const u32 rate = (mgr.GetPlayerState()->CalculateItemCollectionRate() * 100) / mgr.GetPlayerState()->GetPickupTotal();
|
const u32 rate = (mgr.GetPlayerState()->CalculateItemCollectionRate() * 100) /
|
||||||
|
mgr.GetPlayerState()->GetPickupTotal();
|
||||||
if (rate < 75)
|
if (rate < 75)
|
||||||
return 0;
|
return 0;
|
||||||
else if (rate < 100)
|
else if (rate < 100)
|
||||||
|
|
2
hecl
2
hecl
|
@ -1 +1 @@
|
||||||
Subproject commit c8f9d4cc050dc5dc0e4ae78beee80814b352bd8c
|
Subproject commit edaa2d0360409a3f02087ac3d4265c35f4ddee81
|
Loading…
Reference in New Issue