Fix more things that didn't commit for some reason

This commit is contained in:
Luke Street 2020-10-07 20:06:35 -04:00
parent 036e769210
commit c7f87333af
13 changed files with 66 additions and 70 deletions

View File

@ -28,37 +28,39 @@ enum class EFilterType {
};
template <EFilterType FT, hsh::Compare ZComp = hsh::Always>
struct FilterPipeline : hsh::pipeline::pipeline<hsh::pipeline::color_attachment<>,
hsh::pipeline::depth_write<false>> {};
struct FilterPipeline : hsh::pipeline::pipeline<hsh::pipeline::topology<hsh::TriangleStrip>,
hsh::pipeline::color_attachment<>, hsh::pipeline::depth_write<false>> {
};
template <hsh::Compare ZComp>
struct FilterPipeline<EFilterType::Passthru, ZComp>
: hsh::pipeline::pipeline<hsh::pipeline::color_attachment<>, hsh::pipeline::depth_compare<ZComp>,
hsh::pipeline::depth_write<false>> {};
: hsh::pipeline::pipeline<hsh::pipeline::topology<hsh::TriangleStrip>, hsh::pipeline::color_attachment<>,
hsh::pipeline::depth_compare<ZComp>, hsh::pipeline::depth_write<false>> {};
template <hsh::Compare ZComp>
struct FilterPipeline<EFilterType::Multiply, ZComp>
: hsh::pipeline::pipeline<MultiplyAttachment<false>, hsh::pipeline::depth_compare<ZComp>,
hsh::pipeline::depth_write<false>> {};
: hsh::pipeline::pipeline<hsh::pipeline::topology<hsh::TriangleStrip>, MultiplyAttachment<false>,
hsh::pipeline::depth_compare<ZComp>, hsh::pipeline::depth_write<false>> {};
template <hsh::Compare ZComp>
struct FilterPipeline<EFilterType::Add, ZComp>
: hsh::pipeline::pipeline<AdditiveAttachment<false>, hsh::pipeline::depth_compare<ZComp>,
hsh::pipeline::depth_write<false>> {};
: hsh::pipeline::pipeline<hsh::pipeline::topology<hsh::TriangleStrip>, AdditiveAttachment<false>,
hsh::pipeline::depth_compare<ZComp>, hsh::pipeline::depth_write<false>> {};
template <hsh::Compare ZComp>
struct FilterPipeline<EFilterType::Blend, ZComp>
: hsh::pipeline::pipeline<BlendAttachment<false>, hsh::pipeline::depth_compare<ZComp>,
hsh::pipeline::depth_write<false>> {};
: hsh::pipeline::pipeline<hsh::pipeline::topology<hsh::TriangleStrip>, BlendAttachment<false>,
hsh::pipeline::depth_compare<ZComp>, hsh::pipeline::depth_write<false>> {};
template <hsh::Compare ZComp>
struct FilterPipeline<EFilterType::NoColor, ZComp>
: hsh::pipeline::pipeline<NoColorAttachmentExt<AlphaMode::AlphaReplace>, hsh::pipeline::depth_compare<ZComp>,
hsh::pipeline::depth_write<false>> {};
: hsh::pipeline::pipeline<hsh::pipeline::topology<hsh::TriangleStrip>, NoColorAttachmentExt<AlphaMode::AlphaReplace>,
hsh::pipeline::depth_compare<ZComp>, hsh::pipeline::depth_write<false>> {};
template <hsh::Compare ZComp>
struct FilterPipeline<EFilterType::InvDstMultiply, ZComp>
: hsh::pipeline::pipeline<InvDstMultiplyAttachmentExt<AlphaMode::AlphaReplace>, hsh::pipeline::depth_compare<ZComp>,
: hsh::pipeline::pipeline<hsh::pipeline::topology<hsh::TriangleStrip>,
InvDstMultiplyAttachmentExt<AlphaMode::AlphaReplace>, hsh::pipeline::depth_compare<ZComp>,
hsh::pipeline::depth_write<false>> {};
enum class EFilterShape {

View File

@ -12,7 +12,7 @@
namespace urde {
using namespace hsh::pipeline;
struct CMoviePlayerPipeline : pipeline<color_attachment<>> {
struct CMoviePlayerPipeline : pipeline<topology<hsh::TriangleStrip>, BlendAttachment<true>, depth_write<false>> {
CMoviePlayerPipeline(hsh::vertex_buffer<TexUVVert> vbo, hsh::uniform_buffer<ViewBlock> uniBuf, hsh::texture2d Y,
hsh::texture2d U, hsh::texture2d V) {
position = uniBuf->m_mv * hsh::float4(vbo->m_pos, 1.0);
@ -219,7 +219,7 @@ CMoviePlayer::CMoviePlayer(const char* path, float preLoadSeconds, bool loop, bo
if (deinterlace) {
/* urde addition: this way interlaced THPs don't look horrible */
set.Y[0] = hsh::create_dynamic_texture2d({x6c_videoInfo.width, x6c_videoInfo.height / 2}, hsh::R8_UNORM, 1);
set.Y[0] = hsh::create_dynamic_texture2d({x6c_videoInfo.width, x6c_videoInfo.height / 2}, hsh::R8_UNORM, 1);
set.Y[1] = hsh::create_dynamic_texture2d({x6c_videoInfo.width, x6c_videoInfo.height / 2}, hsh::R8_UNORM, 1);
set.U = hsh::create_dynamic_texture2d({x6c_videoInfo.width / 2, x6c_videoInfo.height / 2}, hsh::R8_UNORM, 1);
set.V = hsh::create_dynamic_texture2d({x6c_videoInfo.width / 2, x6c_videoInfo.height / 2}, hsh::R8_UNORM, 1);
@ -252,7 +252,7 @@ CMoviePlayer::CMoviePlayer(const char* path, float preLoadSeconds, bool loop, bo
m_frame[3].m_uv = {1.f, 1.f};
SetFrame({-0.5f, 0.5f, 0.f}, {-0.5f, -0.5f, 0.f}, {0.5f, -0.5f, 0.f}, {0.5f, 0.5f, 0.f});
m_viewVertBlock.finalAssign(m_viewVertBlock);
m_viewVertBlock.m_mv = zeus::CMatrix4f{};
m_blockBuf.load(m_viewVertBlock);
}

View File

@ -6,6 +6,8 @@
#include "zeus/CMatrix4f.hpp"
#include "zeus/CRectangle.hpp"
#include "hsh/hsh.h"
namespace urde {
class CTexture;
@ -13,8 +15,7 @@ enum class EFilterShape;
enum class EFilterType;
class CColoredQuadFilter {
template <EFilterType Type>
friend struct CColoredQuadFilterPipeline;
public:
struct Uniform {
hsh::float4x4 m_matrix;
hsh::float4 m_color;
@ -22,6 +23,8 @@ class CColoredQuadFilter {
struct Vert {
hsh::float3 m_pos;
};
private:
hsh::owner<hsh::vertex_buffer<Vert>> m_vbo;
hsh::dynamic_owner<hsh::uniform_buffer<Uniform>> m_uniBuf;
hsh::binding m_dataBind;

View File

@ -7,16 +7,18 @@
#include "zeus/CRectangle.hpp"
#include "zeus/CVector4f.hpp"
#include "hsh/hsh.h"
namespace urde {
class CFogVolumePlaneShader {
template <size_t I>
friend struct CFogVolumePlanePipeline;
public:
struct Vert {
hsh::float4 pos;
Vert(hsh::float4 pos) : pos(pos) {}
};
private:
hsh::dynamic_owner<hsh::vertex_buffer<Vert>> m_vbo;
std::array<hsh::binding, 4> m_dataBinds;
std::vector<Vert> m_verts;

View File

@ -25,7 +25,7 @@ template struct CWorldShadowShaderPipeline<false>;
CWorldShadowShader::CWorldShadowShader(u32 w, u32 h) : m_w(w), m_h(h) {
m_vbo = hsh::create_dynamic_vertex_buffer<Vert>(4);
m_uniBuf = hsh::create_dynamic_uniform_buffer<Uniform>();
m_tex = hsh::create_render_texture2d({m_w, m_h}, hsh::RGBA8_UNORM, 1, 0);
m_tex = hsh::create_render_texture2d({m_w, m_h}, 1, 0);
// FIXME hsh bug: can't bind all constant values
bool depth = false;

View File

@ -70,15 +70,12 @@ CCompoundTargetReticle::CCompoundTargetReticle(const CStateManager& mgr)
}
CCompoundTargetReticle::SScanReticuleRenderer::SScanReticuleRenderer() {
CGraphics::CommitResources([this](boo::IGraphicsDataFactory::Context& ctx) {
for (size_t i = 0; i < m_lineRenderers.size(); ++i) {
m_lineRenderers[i].emplace(ctx, CLineRenderer::EPrimitiveMode::Lines, 8, nullptr, true, true);
for (auto& stripRenderer : m_stripRenderers[i]) {
stripRenderer.emplace(ctx, CLineRenderer::EPrimitiveMode::LineStrip, 4, nullptr, true, true);
}
for (size_t i = 0; i < m_lineRenderers.size(); ++i) {
m_lineRenderers[i].emplace(CLineRenderer::EPrimitiveMode::Lines, 8, hsh::texture2d{}, true, hsh::LEqual);
for (auto& stripRenderer : m_stripRenderers[i]) {
stripRenderer.emplace(CLineRenderer::EPrimitiveMode::LineStrip, 4, hsh::texture2d{}, true, hsh::LEqual);
}
return true;
} BooTrace);
}
}
CCompoundTargetReticle::EReticleState CCompoundTargetReticle::GetDesiredReticleState(const CStateManager& mgr) const {

View File

@ -10,7 +10,7 @@ CGuiPane::CGuiPane(const CGuiWidgetParms& parms, const zeus::CVector2f& dim, con
void CGuiPane::ScaleDimensions(const zeus::CVector3f& scale) {
InitializeBuffers();
for (specter::View::TexShaderVert& v : xc0_verts) {
for (auto& v : xc0_verts) {
v.m_pos -= xc8_scaleCenter;
v.m_pos *= scale;
v.m_pos += xc8_scaleCenter;
@ -29,10 +29,10 @@ void CGuiPane::InitializeBuffers() {
if (xc0_verts.size() < 4)
xc0_verts.resize(4);
xc0_verts[0].m_pos.assign(-xb8_dim.x() * 0.5f, 0.f, xb8_dim.y() * 0.5f);
xc0_verts[1].m_pos.assign(-xb8_dim.x() * 0.5f, 0.f, -xb8_dim.y() * 0.5f);
xc0_verts[2].m_pos.assign(xb8_dim.x() * 0.5f, 0.f, xb8_dim.y() * 0.5f);
xc0_verts[3].m_pos.assign(xb8_dim.x() * 0.5f, 0.f, -xb8_dim.y() * 0.5f);
xc0_verts[0].m_pos = {-xb8_dim.x() * 0.5f, 0.f, xb8_dim.y() * 0.5f};
xc0_verts[1].m_pos = {-xb8_dim.x() * 0.5f, 0.f, -xb8_dim.y() * 0.5f};
xc0_verts[2].m_pos = {xb8_dim.x() * 0.5f, 0.f, xb8_dim.y() * 0.5f};
xc0_verts[3].m_pos = {xb8_dim.x() * 0.5f, 0.f, -xb8_dim.y() * 0.5f};
}
void CGuiPane::WriteData(COutputStream& out, bool flag) const {}

View File

@ -159,7 +159,7 @@ constexpr std::array<ControlMapper::EKBMFunctionList, 70> skKBMMapping{
ControlMapper::EKBMFunctionList::KeyPress + 'w', // LookDown,
ControlMapper::EKBMFunctionList::KeyPress + ' ', // JumpOrBoost = 10,
ControlMapper::EKBMFunctionList::MousePress + boo2::MouseButton::Primary, // FireOrBomb = 11,
ControlMapper::EKBMFunctionList::MousePress + boo::EMouseButton::Secondary, // MissileOrPowerBomb = 12,
ControlMapper::EKBMFunctionList::MousePress + boo2::MouseButton::Secondary, // MissileOrPowerBomb = 12,
ControlMapper::EKBMFunctionList::KeyPress + 'c', // Morph,
ControlMapper::EKBMFunctionList::None, // AimUp,
ControlMapper::EKBMFunctionList::None, // AimDown,
@ -189,18 +189,18 @@ constexpr std::array<ControlMapper::EKBMFunctionList, 70> skKBMMapping{
ControlMapper::EKBMFunctionList::KeyPress + 'w', // MapCircleDown,
ControlMapper::EKBMFunctionList::KeyPress + 'a', // MapCircleLeft,
ControlMapper::EKBMFunctionList::KeyPress + 'd', // MapCircleRight,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo::ESpecialKey::Up, // MapMoveForward,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo::ESpecialKey::Down, // MapMoveBack,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo::ESpecialKey::Left, // MapMoveLeft,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo::ESpecialKey::Right, // MapMoveRight,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo2::Keycode::UP, // MapMoveForward,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo2::Keycode::DOWN, // MapMoveBack,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo2::Keycode::LEFT, // MapMoveLeft,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo2::Keycode::RIGHT, // MapMoveRight,
ControlMapper::EKBMFunctionList::KeyPress + 'e', // MapZoomIn,
ControlMapper::EKBMFunctionList::KeyPress + 'q', // MapZoomOut,
ControlMapper::EKBMFunctionList::KeyPress + 'e', // SpiderBall,
ControlMapper::EKBMFunctionList::KeyPress + 'q', // ChaseCamera,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo::ESpecialKey::Right, // XrayVisor = 50,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo::ESpecialKey::Down, // ThermoVisor = 51,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo::ESpecialKey::Left, // InviroVisor = 52,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo::ESpecialKey::Up, // NoVisor = 53,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo2::Keycode::RIGHT, // XrayVisor = 50,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo2::Keycode::DOWN, // ThermoVisor = 51,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo2::Keycode::LEFT, // InviroVisor = 52,
ControlMapper::EKBMFunctionList::SpecialKeyPress + boo2::Keycode::UP, // NoVisor = 53,
ControlMapper::EKBMFunctionList::None, // VisorMenu,
ControlMapper::EKBMFunctionList::None, // VisorUp,
ControlMapper::EKBMFunctionList::None, // VisorDown,
@ -311,10 +311,10 @@ static float KBToWASDY(const CKeyboardMouseControllerData& data) {
static float KBToArrowsX(const CKeyboardMouseControllerData& data) {
float retval = 0.0;
if (data.m_specialKeys[size_t(boo::ESpecialKey::Left)]) {
if (data.m_specialKeys[size_t(boo2::Keycode::LEFT)]) {
retval -= 1.0;
}
if (data.m_specialKeys[size_t(boo::ESpecialKey::Right)]) {
if (data.m_specialKeys[size_t(boo2::Keycode::RIGHT)]) {
retval += 1.0;
}
return retval;
@ -322,10 +322,10 @@ static float KBToArrowsX(const CKeyboardMouseControllerData& data) {
static float KBToArrowsY(const CKeyboardMouseControllerData& data) {
float retval = 0.0;
if (data.m_specialKeys[size_t(boo::ESpecialKey::Down)]) {
if (data.m_specialKeys[size_t(boo2::Keycode::DOWN)]) {
retval -= 1.0;
}
if (data.m_specialKeys[size_t(boo::ESpecialKey::Up)]) {
if (data.m_specialKeys[size_t(boo2::Keycode::UP)]) {
retval += 1.0;
}
return retval;

View File

@ -30,9 +30,6 @@ void CDecalManager::Initialize() {
m_DeltaTimeSinceLastDecalCreation = 0.f;
m_LastDecalCreatedIndex = -1;
m_LastDecalCreatedAssetId = -1;
/* Compile shaders */
CDecalShaders::Initialize();
}
void CDecalManager::Reinitialize() {
@ -52,7 +49,6 @@ void CDecalManager::Reinitialize() {
void CDecalManager::Shutdown() {
m_ActiveIndexList.clear();
m_DecalPool.clear();
CDecalShaders::Shutdown();
}
void CDecalManager::AddToRenderer(const zeus::CFrustum& frustum, const CStateManager& mgr) {

View File

@ -100,7 +100,7 @@ void CParticleElectric::DrawLineStrip(const std::vector<zeus::CVector3f>& verts,
}
if (!m_lineRenderers[useIdx]) {
m_lineRenderers[useIdx] =
std::make_unique<CLineRenderer>(CLineRenderer::EPrimitiveMode::LineStrip, x150_SSEG, nullptr, true, true);
std::make_unique<CLineRenderer>(CLineRenderer::EPrimitiveMode::LineStrip, x150_SSEG, hsh::texture2d{}, true, hsh::LEqual);
}
CLineRenderer& renderer = *m_lineRenderers[useIdx];
const zeus::CColor useColor = x1b8_moduColor * color;

View File

@ -12,18 +12,17 @@
namespace urde {
CPlasmaProjectile::RenderObjects::RenderObjects(boo::IGraphicsDataFactory::Context& ctx,
boo::ObjToken<boo::ITexture> tex,
boo::ObjToken<boo::ITexture> glowTex)
: m_beamStrip1(ctx, 8, CColoredStripShader::Mode::Additive, {})
, m_beamStrip2(ctx, 10, CColoredStripShader::Mode::FullAdditive, tex)
, m_beamStrip3(ctx, 18, CColoredStripShader::Mode::FullAdditive, tex)
, m_beamStrip4(ctx, 14, CColoredStripShader::Mode::Additive, glowTex)
, m_beamStrip1Sub(ctx, 8, CColoredStripShader::Mode::Subtractive, {})
, m_beamStrip2Sub(ctx, 10, CColoredStripShader::Mode::Subtractive, tex)
, m_beamStrip3Sub(ctx, 18, CColoredStripShader::Mode::Subtractive, tex)
, m_beamStrip4Sub(ctx, 14, CColoredStripShader::Mode::Subtractive, glowTex)
, m_motionBlurStrip(ctx, 16, CColoredStripShader::Mode::Alpha, {}) {}
CPlasmaProjectile::RenderObjects::RenderObjects(hsh::texture2d tex,
hsh::texture2d glowTex)
: m_beamStrip1(8, CColoredStripShader::Mode::Additive, hsh::texture2d{})
, m_beamStrip2(10, CColoredStripShader::Mode::FullAdditive, tex)
, m_beamStrip3(18, CColoredStripShader::Mode::FullAdditive, tex)
, m_beamStrip4(14, CColoredStripShader::Mode::Additive, glowTex)
, m_beamStrip1Sub(8, CColoredStripShader::Mode::Subtractive, hsh::texture2d{})
, m_beamStrip2Sub(10, CColoredStripShader::Mode::Subtractive, tex)
, m_beamStrip3Sub(18, CColoredStripShader::Mode::Subtractive, tex)
, m_beamStrip4Sub(14, CColoredStripShader::Mode::Subtractive, glowTex)
, m_motionBlurStrip(16, CColoredStripShader::Mode::Alpha, hsh::texture2d{}) {}
CPlasmaProjectile::CPlasmaProjectile(const TToken<CWeaponDescription>& wDesc, std::string_view name, EWeaponType wType,
const CBeamInfo& bInfo, const zeus::CTransform& xf, EMaterialTypes matType,
@ -61,10 +60,7 @@ CPlasmaProjectile::CPlasmaProjectile(const TToken<CWeaponDescription>& wDesc, st
x518_contactGen->SetParticleEmission(false);
x51c_pulseGen->SetParticleEmission(false);
CGraphics::CommitResources([this](boo::IGraphicsDataFactory::Context& ctx) {
m_renderObjs.emplace(ctx, x4e8_texture->GetBooTexture(), x4f4_glowTexture->GetBooTexture());
return true;
} BooTrace);
m_renderObjs.emplace(x4e8_texture->GetBooTexture(), x4f4_glowTexture->GetBooTexture());
}
void CPlasmaProjectile::Accept(IVisitor& visitor) { visitor.Visit(this); }

View File

@ -36,7 +36,7 @@ void CMorphBallShadow::RenderIdBuffer(const zeus::CAABox& aabb, const CStateMana
SViewport backupVp = g_Viewport;
g_Renderer->BindBallShadowIdTarget();
CGraphics::g_BooMainCommandQueue->clearTarget();
hsh::clear_attachments();
zeus::CTransform backupViewMtx = CGraphics::g_ViewMatrix;
CGraphics::CProjectionState backupProjection = CGraphics::g_Proj;

View File

@ -11,7 +11,7 @@
#include <logvisor/logvisor.hpp>
#endif
#include "hsh/hsh.h"
#include "hsh/bits/builtin_types.h"
namespace rstl {