2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-15 03:26:08 +00:00

Start wiring up wgpu+winit

This commit is contained in:
2022-01-31 19:06:54 -05:00
parent 5491fd75cf
commit e48435f11e
209 changed files with 24234 additions and 8085 deletions

View File

@@ -2,56 +2,56 @@
#include "Runtime/World/CEnvFxManager.hpp"
#include <hecl/Pipeline.hpp>
//#include <hecl/Pipeline.hpp>
namespace metaforce {
boo::ObjToken<boo::IShaderPipeline> CEnvFxShaders::m_snowPipeline;
boo::ObjToken<boo::IShaderPipeline> CEnvFxShaders::m_underwaterPipeline;
//boo::ObjToken<boo::IShaderPipeline> CEnvFxShaders::m_snowPipeline;
//boo::ObjToken<boo::IShaderPipeline> CEnvFxShaders::m_underwaterPipeline;
void CEnvFxShaders::Initialize() {
m_snowPipeline = hecl::conv->convert(Shader_CEnvFxSnowShader{});
m_underwaterPipeline = hecl::conv->convert(Shader_CEnvFxUnderwaterShader{});
// m_snowPipeline = hecl::conv->convert(Shader_CEnvFxSnowShader{});
// m_underwaterPipeline = hecl::conv->convert(Shader_CEnvFxUnderwaterShader{});
}
void CEnvFxShaders::Shutdown() {
m_snowPipeline.reset();
m_underwaterPipeline.reset();
// m_snowPipeline.reset();
// m_underwaterPipeline.reset();
}
void CEnvFxShaders::BuildShaderDataBinding(boo::IGraphicsDataFactory::Context& ctx, CEnvFxManager& fxMgr,
void CEnvFxShaders::BuildShaderDataBinding(CEnvFxManager& fxMgr,
CEnvFxManagerGrid& grid) {
const auto uBufInfo = grid.m_uniformBuf.getBufferInfo();
const auto iBufInfo = grid.m_instBuf.getBufferInfo();
// const auto uBufInfo = grid.m_uniformBuf.getBufferInfo();
// const auto iBufInfo = grid.m_instBuf.getBufferInfo();
const std::array<boo::ObjToken<boo::IGraphicsBuffer>, 2> uniforms{{
uBufInfo.first.get(),
fxMgr.m_fogUniformBuf.get(),
}};
const std::array<size_t, 2> ubufOffsets{
size_t(uBufInfo.second),
0,
};
constexpr std::array<size_t, 2> ubufSizes{
sizeof(CEnvFxShaders::Uniform),
sizeof(CGraphics::g_Fog),
};
constexpr std::array<boo::PipelineStage, 2> uniformStages{
boo::PipelineStage::Vertex,
boo::PipelineStage::Fragment,
};
std::array<boo::ObjToken<boo::ITexture>, 2> textures{
fxMgr.xb74_txtrSnowFlake->GetBooTexture(),
fxMgr.x40_txtrEnvGradient->GetBooTexture(),
};
grid.m_snowBinding = ctx.newShaderDataBinding(
m_snowPipeline, nullptr, iBufInfo.first.get(), nullptr, uniforms.size(), uniforms.data(), uniformStages.data(),
ubufOffsets.data(), ubufSizes.data(), textures.size(), textures.data(), nullptr, nullptr, 0, iBufInfo.second);
textures[0] = fxMgr.xc48_underwaterFlake->GetBooTexture();
grid.m_underwaterBinding =
ctx.newShaderDataBinding(m_underwaterPipeline, nullptr, iBufInfo.first.get(), nullptr, uniforms.size(),
uniforms.data(), uniformStages.data(), ubufOffsets.data(), ubufSizes.data(),
textures.size(), textures.data(), nullptr, nullptr, 0, iBufInfo.second);
// const std::array<boo::ObjToken<boo::IGraphicsBuffer>, 2> uniforms{{
// uBufInfo.first.get(),
// fxMgr.m_fogUniformBuf.get(),
// }};
// const std::array<size_t, 2> ubufOffsets{
// size_t(uBufInfo.second),
// 0,
// };
// constexpr std::array<size_t, 2> ubufSizes{
// sizeof(CEnvFxShaders::Uniform),
// sizeof(CGraphics::g_Fog),
// };
// constexpr std::array<boo::PipelineStage, 2> uniformStages{
// boo::PipelineStage::Vertex,
// boo::PipelineStage::Fragment,
// };
// std::array<boo::ObjToken<boo::ITexture>, 2> textures{
// fxMgr.xb74_txtrSnowFlake->GetBooTexture(),
// fxMgr.x40_txtrEnvGradient->GetBooTexture(),
// };
//
// grid.m_snowBinding = ctx.newShaderDataBinding(
// m_snowPipeline, nullptr, iBufInfo.first.get(), nullptr, uniforms.size(), uniforms.data(), uniformStages.data(),
// ubufOffsets.data(), ubufSizes.data(), textures.size(), textures.data(), nullptr, nullptr, 0, iBufInfo.second);
// textures[0] = fxMgr.xc48_underwaterFlake->GetBooTexture();
// grid.m_underwaterBinding =
// ctx.newShaderDataBinding(m_underwaterPipeline, nullptr, iBufInfo.first.get(), nullptr, uniforms.size(),
// uniforms.data(), uniformStages.data(), ubufOffsets.data(), ubufSizes.data(),
// textures.size(), textures.data(), nullptr, nullptr, 0, iBufInfo.second);
}
} // namespace metaforce