Windows build fixes and warning avoidance

This commit is contained in:
Jack Andersen 2018-05-24 20:39:38 -10:00
parent 3ceaa82035
commit 70b3404b7c
195 changed files with 428 additions and 502 deletions

View File

@ -24,7 +24,11 @@ set(BUILD_STATIC_LIBS ON CACHE BOOL "Force static libs on" FORCE)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/sanitizers-cmake/cmake" "${CMAKE_SOURCE_DIR}/cotire/CMake" ${CMAKE_MODULE_PATH})
find_package(Sanitizers)
include(cotire)
# Don't cotire when using clang-cl
if(NOT MSVC OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
include(cotire)
endif()
set(URDE_VECTOR_ISA "sse2" CACHE STRING "Vector ISA to build for (sse2, sse3, sse41, avx, avx2)")
@ -52,8 +56,8 @@ if(MSVC)
# Shaddup MSVC
add_definitions(-DUNICODE=1 -D_UNICODE=1 -D__SSE__=1 -D_CRT_SECURE_NO_WARNINGS=1 -DD_SCL_SECURE_NO_WARNINGS=1
-D_SCL_SECURE_NO_DEPRECATE=1 /IGNORE:4221 /wd4018 /wd4800 /wd4005 /wd4311 /wd4267 /wd4244 /wd4200 /wd4305
/wd4067 /wd4146 /wd4309 ${VS_DEFINES})
-D_SCL_SECURE_NO_DEPRECATE=1 -D_CRT_NONSTDC_NO_WARNINGS=1 /IGNORE:4221 /wd4018 /wd4800 /wd4005 /wd4311
/wd4267 /wd4244 /wd4200 /wd4305 /wd4067 /wd4146 /wd4309 /wd4805 ${VS_DEFINES})
if(WINDOWS_STORE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /AI\"$ENV{PROGRAMFILES\(X86\)}/Microsoft Visual Studio/2017/Community/Common7/IDE/VC/vcpackages\" /AI\"$ENV{PROGRAMFILES\(X86\)}/Windows Kits/10/UnionMetadata\"")
@ -62,15 +66,17 @@ if(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
# Link-time Code Generation for Release builds
set(CMAKE_C_FLAGS_RELEASE "/DNDEBUG /O2 /Oy /GL /Gy /MD")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "/LTCG")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "/DNDEBUG /Zi /O2 /Oy- /GL /Gy /MD")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
set(CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "/LTCG")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/RELEASE /LTCG /OPT:REF /OPT:ICF /INCREMENTAL:NO")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/DEBUG /RELEASE /LTCG /OPT:REF /OPT:ICF /INCREMENTAL:NO /DEBUGTYPE:cv,fixup")
# Link-time Code Generation for Release builds (excluding clang-cl)
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
set(CMAKE_C_FLAGS_RELEASE "/DNDEBUG /O2 /Oy /GL /Gy /MD")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "/DNDEBUG /Zi /O2 /Oy- /GL /Gy /MD")
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "/LTCG")
set(CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO "/LTCG")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/RELEASE /LTCG /OPT:REF /OPT:ICF /INCREMENTAL:NO")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/DEBUG /RELEASE /LTCG /OPT:REF /OPT:ICF /INCREMENTAL:NO /DEBUGTYPE:cv,fixup")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
endif()
else()
if(${URDE_VECTOR_ISA} STREQUAL "avx2")

View File

@ -243,7 +243,7 @@ BitstreamReader::read(const atUint8* data,
}
case Channel::Type::KfHead:
{
bool aBit = dequantizeBit(data);
dequantizeBit(data);
break;
}
case Channel::Type::RotationMP3:

View File

@ -1651,6 +1651,7 @@ bool WriteHMDLCMDL(const hecl::ProjectPath& outPath, const hecl::ProjectPath& in
size_t endOff = 0;
for (const hecl::blender::HMDLBuffers::Surface& surf : bufs.m_surfaces)
{
(void)surf;
head.secSizes.push_back(64);
paddingSizes.push_back(0);
endOff += 64;
@ -2172,6 +2173,7 @@ bool WriteHMDLMREASecs(std::vector<std::vector<uint8_t>>& secsOut, const hecl::P
size_t endOff = 0;
for (const hecl::blender::HMDLBuffers::Surface& surf : bufs.m_surfaces)
{
(void)surf;
endOff += 96;
surfEndOffs.push_back(endOff);
}

View File

@ -27,7 +27,7 @@ struct IGlyph : BigDNAVYaml
float bottom() const { return m_glyphRect.bottom; }
GlyphRect rect() const { return m_glyphRect; }
virtual int layer() { return 0; }
virtual atInt32 layer() const { return 0; }
virtual atInt32 leftPadding() const=0;
virtual atInt32 advance() const =0;
virtual atInt32 rightPadding() const=0;

View File

@ -102,7 +102,6 @@ static FittedOBB FitOBB(const ColMesh& mesh, const std::vector<int>& index)
// mean location
for (int i : index)
{
const ColMesh::Triangle& T = mesh.trianges[i];
std::unordered_set<uint32_t> verts = GetTriangleVerts(mesh, i);
auto it = verts.begin();
zeus::CVector3f p = mesh.verts[*it++].val;

View File

@ -186,6 +186,7 @@ public:
void enterPAKBridge(const BRIDGETYPE& pakBridge);
using PAKRouterBase::getWorking;
hecl::ProjectPath getWorking(const EntryType* entry,
const ResExtractor<BRIDGETYPE>& extractor) const;
hecl::ProjectPath getWorking(const EntryType* entry) const;

View File

@ -1470,6 +1470,7 @@ void SpawnSystemKeyframeData<IDType>::_read(typename ReadYaml::StreamT& r)
spawns.reserve(spawnCount);
for (const auto& child : r.getCurNode()->m_seqChildren)
{
(void)child;
if (auto rec = r.enterSubRecord(nullptr))
{
spawns.emplace_back();
@ -1480,6 +1481,7 @@ void SpawnSystemKeyframeData<IDType>::_read(typename ReadYaml::StreamT& r)
spawns.back().second.reserve(systemCount);
for (const auto& in : r.getCurNode()->m_seqChildren)
{
(void)in;
spawns.back().second.emplace_back();
SpawnSystemKeyframeInfo& info = spawns.back().second.back();
if (auto rec = r.enterSubRecord(nullptr))

View File

@ -235,6 +235,7 @@ static void DecodeI4(png_structp png, png_infop info,
}
}
#if 0
static void EncodeI4(const uint8_t* rgbaIn, uint8_t* texels, int width, int height)
{
for (int y=height-1 ; y>=0 ; --y)
@ -244,6 +245,7 @@ static void EncodeI4(const uint8_t* rgbaIn, uint8_t* texels, int width, int heig
rgbaIn += width;
}
}
#endif
static void DecodeI8(png_structp png, png_infop info,
const uint8_t* texels, int width, int height)
@ -291,6 +293,7 @@ static void DecodeIA4(png_structp png, png_infop info,
}
}
#if 0
static void EncodeIA4(const uint8_t* rgbaIn, uint8_t* texels, int width, int height)
{
for (int y=height-1 ; y>=0 ; --y)
@ -304,6 +307,7 @@ static void EncodeIA4(const uint8_t* rgbaIn, uint8_t* texels, int width, int hei
}
}
}
#endif
static void DecodeIA8(png_structp png, png_infop info,
const uint8_t* texels, int width, int height)
@ -808,6 +812,7 @@ static void DecodeRGB565(png_structp png, png_infop info,
}
}
#if 0
static void EncodeRGB565(const uint8_t* rgbaIn, uint8_t* texels, int width, int height)
{
for (int y=height-1 ; y>=0 ; --y)
@ -822,6 +827,7 @@ static void EncodeRGB565(const uint8_t* rgbaIn, uint8_t* texels, int width, int
rgbaIn += width * 3;
}
}
#endif
static void DecodeRGB5A3(png_structp png, png_infop info,
const uint8_t* texels, int width, int height)
@ -855,6 +861,7 @@ static void DecodeRGB5A3(png_structp png, png_infop info,
}
}
#if 0
static void EncodeRGB5A3(const uint8_t* rgbaIn, uint8_t* texels, int width, int height)
{
for (int y=height-1 ; y>=0 ; --y)
@ -881,6 +888,7 @@ static void EncodeRGB5A3(const uint8_t* rgbaIn, uint8_t* texels, int width, int
rgbaIn += width * 4;
}
}
#endif
static void DecodeRGBA8(png_structp png, png_infop info,
const uint8_t* texels, int width, int height)

View File

@ -318,6 +318,7 @@ struct MaterialSet : BigDNA
int stageIdx = 0;
for (const Material::TEVStage& stage : mat.tevStages)
{
(void)stage;
const Material::TEVStageTexInfo& texInfo = mat.tevStageTexInfo[stageIdx];
if (texInfo.texSlot == 0xff)
{

View File

@ -60,10 +60,8 @@ static bool GetNoShare(std::string_view name)
return true;
}
PAKBridge::PAKBridge(hecl::Database::Project& project,
const nod::Node& node,
bool doExtract)
: m_project(project), m_node(node), m_pak(false, GetNoShare(node.getName())), m_doExtract(doExtract)
PAKBridge::PAKBridge(const nod::Node& node, bool doExtract)
: m_node(node), m_pak(false, GetNoShare(node.getName())), m_doExtract(doExtract)
{
nod::AthenaPartReadStream rs(node.beginReadStream());
m_pak.read(rs);

View File

@ -13,7 +13,6 @@ extern logvisor::Module Log;
/* MP1-specific, one-shot PAK traversal/extraction class */
class PAKBridge
{
hecl::Database::Project& m_project;
const nod::Node& m_node;
PAK m_pak;
public:
@ -22,9 +21,7 @@ public:
std::unordered_map<UniqueID32, Level> m_levelDeps;
hecl::SystemString m_levelString;
PAKBridge(hecl::Database::Project& project,
const nod::Node& node,
bool doExtract=true);
PAKBridge(const nod::Node& node, bool doExtract=true);
void build();
static ResExtractor<PAKBridge> LookupExtractor(const PAK& pak, const PAK::Entry& entry);
std::string_view getName() const {return m_node.getName();}

View File

@ -11,6 +11,8 @@
#include "ScriptObjects/ScriptTypes.hpp"
#include "hecl/Blender/Connection.hpp"
#define DUMP_OCTREE 0
extern hecl::SystemString ExeDir;
namespace DataSpec::DNAMP1
@ -76,6 +78,7 @@ UniqueID32 MREA::GetPATHId(PAKEntryReadStream& rs)
return {rs};
}
#if DUMP_OCTREE
/* Collision octree dumper */
static void OutputOctreeNode(hecl::blender::PyOutStream& os, athena::io::MemoryReader& r,
BspNodeType type, const zeus::CAABox& aabb)
@ -201,6 +204,7 @@ static void OutputOctreeNode(hecl::blender::PyOutStream& os, athena::io::MemoryR
pos.x, pos.y, pos.z, extent.x, extent.y, extent.z);
}
}
#endif
bool MREA::Extract(const SpecBase& dataSpec,
PAKEntryReadStream& rs,
@ -517,7 +521,7 @@ bool MREA::Cook(const hecl::ProjectPath& outPath,
AROTBuilder arotBuilder;
arotBuilder.build(secs, fullAabb, meshAabbs, meshes);
#if 0
#if DUMP_OCTREE
hecl::blender::Connection& conn = btok.getBlenderConnection();
if (!conn.createBlend(inPath.getWithExtension(_S(".octree.blend"), true), hecl::blender::Connection::BlendType::Area))
return false;
@ -588,7 +592,7 @@ bool MREA::Cook(const hecl::ProjectPath& outPath,
DeafBabe collision = {};
DeafBabeBuildFromBlender(collision, cMesh);
#if 0
#if DUMP_OCTREE
hecl::blender::Connection& conn = btok.getBlenderConnection();
if (!conn.createBlend(inPath.getWithExtension(_S(".octree.blend"), true), hecl::blender::Connection::BlendType::Area))
return false;

View File

@ -7,16 +7,6 @@ namespace DataSpec::DNAMP1
const std::vector<FourCC> skLanguages = {FOURCC('ENGL'), FOURCC('FREN'), FOURCC('GERM'), FOURCC('SPAN'),
FOURCC('ITAL'), FOURCC('DUTC'), FOURCC('JAPN')};
static float u16stof(char16_t* str)
{
char cstr[16];
int i;
for (i = 0; i < 15 && str[i] != u'\0'; ++i)
cstr[i] = str[i];
cstr[i] = '\0';
return strtof(cstr, nullptr);
}
static uint32_t ParseTag(const char16_t* str)
{
char parseStr[9];

View File

@ -32,10 +32,9 @@ static bool GetNoShare(std::string_view name)
return true;
}
PAKBridge::PAKBridge(hecl::Database::Project& project,
const nod::Node& node,
PAKBridge::PAKBridge(const nod::Node& node,
bool doExtract)
: m_project(project), m_node(node), m_pak(true, GetNoShare(node.getName())), m_doExtract(doExtract)
: m_node(node), m_pak(true, GetNoShare(node.getName())), m_doExtract(doExtract)
{
nod::AthenaPartReadStream rs(node.beginReadStream());
m_pak.read(rs);

View File

@ -12,7 +12,6 @@ extern logvisor::Module Log;
/* MP2-specific, one-shot PAK traversal/extraction class */
class PAKBridge
{
hecl::Database::Project& m_project;
const nod::Node& m_node;
DNAMP1::PAK m_pak;
public:
@ -21,9 +20,7 @@ public:
std::unordered_map<UniqueID32, Level> m_levelDeps;
hecl::SystemString m_levelString;
PAKBridge(hecl::Database::Project& project,
const nod::Node& node,
bool doExtract=true);
PAKBridge(const nod::Node& node, bool doExtract=true);
void build();
static ResExtractor<PAKBridge> LookupExtractor(const DNAMP1::PAK& pak, const DNAMP1::PAK::Entry& entry);
std::string_view getName() const {return m_node.getName();}

View File

@ -208,7 +208,7 @@ bool MREA::Extract(const SpecBase& dataSpec,
drs.seek(egmcOffset, athena::Begin);
UniqueID32 egmcId(drs);
DNACommon::EGMC egmc;
bool hasEGMC = pakRouter.lookupAndReadDNA(egmcId, egmc);
pakRouter.lookupAndReadDNA(egmcId, egmc);
drs.seek(0, athena::Begin);

View File

@ -516,8 +516,8 @@ void ANIM::ANIM1::Enumerate<BigDNA::Read>(athena::io::IStreamReader& reader)
initBlock.push_back(reader.readInt16Big());
atUint32 rawChannelCount = reader.readUint32Big();
atUint32 scratchSize1 = reader.readUint32Big();
atUint32 scratchSize2 = reader.readUint32Big();
reader.readUint32Big();
reader.readUint32Big();
std::vector<atUint8> chanBitCounts;
chanBitCounts.reserve(rawChannelCount);

View File

@ -30,10 +30,9 @@ static bool GetNoShare(std::string_view name)
return true;
}
PAKBridge::PAKBridge(hecl::Database::Project& project,
const nod::Node& node,
PAKBridge::PAKBridge(const nod::Node& node,
bool doExtract)
: m_project(project), m_node(node), m_pak(GetNoShare(node.getName())), m_doExtract(doExtract)
: m_node(node), m_pak(GetNoShare(node.getName())), m_doExtract(doExtract)
{
nod::AthenaPartReadStream rs(node.beginReadStream());
m_pak.read(rs);

View File

@ -12,7 +12,6 @@ extern logvisor::Module Log;
/* MP3-specific, one-shot PAK traversal/extraction class */
class PAKBridge
{
hecl::Database::Project& m_project;
const nod::Node& m_node;
PAK m_pak;
public:
@ -21,9 +20,7 @@ public:
std::unordered_map<UniqueID64, Level> m_levelDeps;
hecl::SystemString m_levelString;
PAKBridge(hecl::Database::Project& project,
const nod::Node& node,
bool doExtract=true);
PAKBridge(const nod::Node& node, bool doExtract=true);
void build();
static ResExtractor<PAKBridge> LookupExtractor(const PAK& pak, const PAK::Entry& entry);
std::string_view getName() const {return m_node.getName();}

View File

@ -249,7 +249,7 @@ struct SpecMP1 : SpecBase
}
}
m_paks.emplace_back(m_project, child, good);
m_paks.emplace_back(child, good);
}
}
@ -1313,7 +1313,7 @@ struct SpecMP1 : SpecBase
auto layerIt = area.depLayers.cbegin();
while (it != area.deps.cend())
{
if (it - area.deps.cbegin() == *layerIt)
if (layerIt != area.depLayers.cend() && it - area.deps.cbegin() == *layerIt)
{
strippedDepLayers.push_back(atUint32(strippedDeps.size()));
++layerIt;

View File

@ -100,7 +100,7 @@ struct SpecMP2 : SpecBase
}
}
m_paks.emplace_back(m_project, child, good);
m_paks.emplace_back(child, good);
}
}

View File

@ -123,9 +123,9 @@ struct SpecMP3 : SpecBase
}
if (fe)
m_fePaks.emplace_back(m_project, child, good);
m_fePaks.emplace_back(child, good);
else
m_paks.emplace_back(m_project, child, good);
m_paks.emplace_back(child, good);
}
}
@ -410,9 +410,8 @@ struct SpecMP3 : SpecBase
auto pakName = hecl::SystemString(sysName.sys_str());
process.addLambdaTransaction([this, &progress, &pak, pakName, force](hecl::blender::Token& btok)
{
int threadIdx = hecl::ClientProcess::GetThreadWorkerIdx();
m_pakRouter.extractResources(pak, force, btok,
[&progress, &pakName, threadIdx](const hecl::SystemChar* substr, float factor)
[&progress, &pakName](const hecl::SystemChar* substr, float factor)
{
progress.print(pakName.c_str(), substr, factor);
});
@ -467,9 +466,8 @@ struct SpecMP3 : SpecBase
hecl::SystemString pakName(sysName.sys_str());
process.addLambdaTransaction([this, &progress, &pak, pakName, force](hecl::blender::Token& btok)
{
int threadIdx = hecl::ClientProcess::GetThreadWorkerIdx();
m_fePakRouter.extractResources(pak, force, btok,
[&progress, &pakName, threadIdx](const hecl::SystemChar* substr, float factor)
[&progress, &pakName](const hecl::SystemChar* substr, float factor)
{
progress.print(pakName.c_str(), substr, factor);
});

View File

@ -40,7 +40,7 @@ CToken ProjectResourcePool::GetObj(std::string_view name, const CVParamTransfer&
bool ProjectManager::m_registeredSpecs = false;
ProjectManager::ProjectManager(ViewManager &vm)
: m_vm(vm), m_clientProc(nullptr, 1),
: m_vm(vm), m_clientProc(nullptr),
m_factoryMP1(m_clientProc), m_objStore(m_factoryMP1, *this)
{
if (!m_registeredSpecs)

View File

@ -23,7 +23,7 @@ public:
private:
hecl::ProjectPath m_path;
Space::Class m_defaultClass = Space::Class::None;
EditorSpace* m_editingSpace = nullptr;
//EditorSpace* m_editingSpace = nullptr;
std::vector<ViewerSpace*> m_viewingSpaces;
public:
static Space::Class DeduceDefaultSpaceClass(const hecl::ProjectPath& path);

View File

@ -24,7 +24,6 @@ specter::View* Space::buildSpaceView(specter::ViewResources& res)
specter::View* sview = buildContentView(res);
m_spaceView->setContentView(sview);
specter::Toolbar& tb = *m_spaceView->toolbar();
const std::string* classStr = SpaceMenuNode::LookupClassString(m_class);
specter::Icon* classIcon = SpaceMenuNode::LookupClassIcon(m_class);
const zeus::CColor* classColor = SpaceMenuNode::LookupClassColor(m_class);
m_spaceSelectButton.reset(new specter::Button(res, tb, &m_spaceSelectBind, "", classIcon,

View File

@ -49,9 +49,9 @@ public:
static Space* NewSpaceFromConfigStream(ViewManager& vm, Space* parent, ConfigReader& r);
static RootSpace* NewRootSpaceFromConfigStream(ViewManager& vm, ConfigReader& r);
struct SpaceMenuNode : specter::IMenuNode
struct SpaceMenuNode final : specter::IMenuNode
{
struct SubNodeData : specter::IMenuNode
struct SubNodeData final : specter::IMenuNode
{
Class m_cls;
std::string m_key;
@ -66,7 +66,7 @@ public:
};
static std::vector<SubNodeData> s_subNodeDats;
struct SubNode : specter::IMenuNode
struct SubNode final : specter::IMenuNode
{
Space& m_space;
const SubNodeData& m_data;
@ -402,7 +402,7 @@ public:
AT_DECL_DNA_YAML
AT_DECL_DNAV
} m_state;
Space::State& spaceState() {return m_state;}
const Space::State& spaceState() const {return m_state;}
bool usesToolbar() const {return true;}
void buildToolbarView(specter::ViewResources& res, specter::Toolbar& tb)

View File

@ -30,10 +30,10 @@ SplashScreen::SplashScreen(ViewManager& vm, specter::ViewResources& res)
m_textColor(res.themeData().uiText()),
m_textColorClear(m_textColor),
m_newString(m_vm.translateOr("new_project", "New Project")),
m_newProjBind(*this),
m_openString(m_vm.translateOr("open_project", "Open Project")),
m_openProjBind(*this),
m_extractString(m_vm.translateOr("extract_game", "Extract Game")),
m_newProjBind(*this),
m_openProjBind(*this),
m_extractProjBind(*this)
{
if (GIT_COMMIT_DATE[0] != '\0' &&

View File

@ -89,7 +89,7 @@ class SplashScreen : public specter::ModalWindow
std::string m_text;
const std::string* text() const {return &m_text;}
struct OpenRecentMenuItem : specter::IMenuNode
struct OpenRecentMenuItem final : specter::IMenuNode
{
OpenRecentMenuRoot& m_parent;

View File

@ -26,7 +26,7 @@ namespace urde
{
class SplashScreen;
class ViewManager : public specter::IViewManager
class ViewManager final : public specter::IViewManager
{
friend class ProjectManager;
friend class Space;

View File

@ -28,7 +28,7 @@ void InitializeBadging(specter::ViewResources& viewRes)
if (uncompress(texels.get(), &destSz, URDE_BADGE + pos, URDE_BADGE_SZ - pos) != Z_OK)
Log.report(logvisor::Fatal, "unable to decompress badge");
viewRes.m_factory->BooCommitTransaction([&](boo::IGraphicsDataFactory::Context& ctx)
viewRes.m_factory->commitTransaction([&](boo::IGraphicsDataFactory::Context& ctx)
{
specter::IconAtlas<1, 1> atlas;
@ -37,7 +37,7 @@ void InitializeBadging(specter::ViewResources& viewRes)
texels.get(), destSz));
g_BadgeIcon = atlas.getIcon(0, 0);
return true;
});
} BooTrace);
}
void DestroyBadging()

View File

@ -28,14 +28,14 @@ void InitializeIcons(specter::ViewResources& viewRes)
if (uncompress(texels.get(), &destSz, URDE_ICONS + pos, URDE_ICONS_SZ - pos) != Z_OK)
Log.report(logvisor::Fatal, "unable to decompress icons");
viewRes.m_factory->BooCommitTransaction([&](boo::IGraphicsDataFactory::Context& ctx)
viewRes.m_factory->commitTransaction([&](boo::IGraphicsDataFactory::Context& ctx)
{
g_IconAtlas.initializeAtlas(ctx.newStaticTexture(width, height, mips,
boo::TextureFormat::RGBA8,
boo::TextureClampMode::Repeat,
texels.get(), destSz));
return true;
});
} BooTrace);
}
void DestroyIcons()

View File

@ -65,7 +65,7 @@ enum {
#endif
};
static void nesEmuFdsSetup(uint8_t *src, uint8_t *dst);
//static void nesEmuFdsSetup(uint8_t *src, uint8_t *dst);
static int emuFileType = FTYPE_UNK;
static char emuFileName[1024];
@ -82,11 +82,11 @@ bool doOverscan = false;
bool nesPAL = false;
bool nesEmuNSFPlayback = false;
static bool inPause = false;
static bool inOverscanToggle = false;
static bool inResize = false;
static bool inDiskSwitch = false;
static bool inReset = false;
//static bool inPause = false;
//static bool inOverscanToggle = false;
//static bool inResize = false;
//static bool inDiskSwitch = false;
//static bool inReset = false;
#if DEBUG_HZ
static int emuFrameStart = 0;
@ -107,7 +107,7 @@ static int emuMainTotalElapsed = 0;
static uint32_t linesToDraw = VISIBLE_LINES;
static const uint32_t visibleImg = VISIBLE_DOTS*VISIBLE_LINES*4;
static uint8_t scaleFactor = 2;
//static uint8_t scaleFactor = 2;
static bool emuSaveEnabled = false;
static bool emuFdsHasSideB = false;
static uint32_t mainLoopRuns;
@ -252,7 +252,7 @@ void CNESEmulator::InitializeEmulator()
//mainLoopRuns *= ppuLinesTotal;
mainLoopPos = mainLoopRuns;
CGraphicsCommitResources([this](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([this](boo::IGraphicsDataFactory::Context& ctx)
{
// Nearest-neighbor FTW!
m_texture = ctx.newDynamicTexture(VISIBLE_DOTS, linesToDraw,
@ -269,7 +269,7 @@ void CNESEmulator::InitializeEmulator()
m_uniBuf = ctx.newDynamicBuffer(boo::BufferUse::Uniform, sizeof(Uniform), 1);
m_shadBind = CNESShader::BuildShaderDataBinding(ctx, m_vbo, m_uniBuf, m_texture);
return true;
});
} BooTrace);
//double useFreq = 223740;
double useFreq = apuGetFrequency();
@ -547,6 +547,7 @@ void CNESEmulator::NesEmuMainLoop(bool forceDraw)
#endif
}
#if 0
static void nesEmuFdsSetup(uint8_t *src, uint8_t *dst)
{
memcpy(dst, src, 0x38);
@ -567,6 +568,7 @@ static void nesEmuFdsSetup(uint8_t *src, uint8_t *dst)
} while(cROMPos < 0xFFDC && cDiskPos < 0xFFFF);
printf("%04x -> %04x\n", cROMPos, cDiskPos);
}
#endif
void CNESEmulator::DecompressROM(u8* dataIn, u8* dataOut, u32 dataOutLen, u8 descrambleSeed,
u32 checkDataLen, u32 checksumMagic)

View File

@ -17,7 +17,7 @@ namespace MP1
#define NUM_AUDIO_BUFFERS 10
class CNESEmulator : public boo::IAudioVoiceCallback
class CNESEmulator final : public boo::IAudioVoiceCallback
{
public:
enum class EPasswordEntryState

View File

@ -179,7 +179,7 @@ boo::ObjToken<boo::IShaderDataBinding> CNESShader::BuildShaderDataBinding(boo::G
#endif
#if _WIN32
void CNESShader::Initialize(boo::ID3DDataFactory::Context& ctx)
void CNESShader::Initialize(boo::D3DDataFactory::Context& ctx)
{
const boo::VertexElementDescriptor VtxVmt[] =
{
@ -193,7 +193,7 @@ void CNESShader::Initialize(boo::ID3DDataFactory::Context& ctx)
boo::ZTest::None, false, true, false, boo::CullMode::None);
}
boo::ObjToken<boo::IShaderDataBinding> CNESShader::BuildShaderDataBinding(boo::ID3DDataFactory::Context& ctx,
boo::ObjToken<boo::IShaderDataBinding> CNESShader::BuildShaderDataBinding(boo::D3DDataFactory::Context& ctx,
boo::ObjToken<boo::IGraphicsBufferS> vbo,
boo::ObjToken<boo::IGraphicsBufferD> uniBuf,
boo::ObjToken<boo::ITextureD> tex)
@ -274,8 +274,7 @@ boo::ObjToken<boo::IShaderDataBinding> CNESShader::BuildShaderDataBinding(boo::I
#endif
#if _WIN32
case boo::IGraphicsDataFactory::Platform::D3D11:
case boo::IGraphicsDataFactory::Platform::D3D12:
return BuildShaderDataBinding(static_cast<boo::ID3DDataFactory::Context&>(ctx), vbo, uniBuf, tex);
return BuildShaderDataBinding(static_cast<boo::D3DDataFactory::Context&>(ctx), vbo, uniBuf, tex);
#endif
#if BOO_HAS_METAL
case boo::IGraphicsDataFactory::Platform::Metal:
@ -295,7 +294,7 @@ void CNESShader::Initialize()
if (!CGraphics::g_BooFactory)
return;
CGraphicsCommitResources(
CGraphics::CommitResources(
[&](boo::IGraphicsDataFactory::Context& ctx)
{
switch (ctx.platform())
@ -307,8 +306,7 @@ void CNESShader::Initialize()
#endif
#if _WIN32
case boo::IGraphicsDataFactory::Platform::D3D11:
case boo::IGraphicsDataFactory::Platform::D3D12:
Initialize(static_cast<boo::ID3DDataFactory::Context&>(ctx));
Initialize(static_cast<boo::D3DDataFactory::Context&>(ctx));
break;
#endif
#if BOO_HAS_METAL
@ -324,7 +322,7 @@ void CNESShader::Initialize()
default: break;
}
return true;
});
} BooTrace);
}
void CNESShader::Shutdown()

View File

@ -20,8 +20,8 @@ public:
boo::ObjToken<boo::ITextureD> tex);
#endif
#if _WIN32
static void Initialize(boo::ID3DDataFactory::Context& ctx);
static boo::ObjToken<boo::IShaderDataBinding> BuildShaderDataBinding(boo::ID3DDataFactory::Context& ctx,
static void Initialize(boo::D3DDataFactory::Context& ctx);
static boo::ObjToken<boo::IShaderDataBinding> BuildShaderDataBinding(boo::D3DDataFactory::Context& ctx,
boo::ObjToken<boo::IGraphicsBufferS> vbo,
boo::ObjToken<boo::IGraphicsBufferD> uniBuf,
boo::ObjToken<boo::ITextureD> tex);

View File

@ -55,18 +55,8 @@ Build / Debug / Run on Windows, macOS and Linux in a unified way.
#### Visual Studio
Using *Git Shell* with [GitHub for Windows](https://desktop.github.com/)
Windows 7/8 users should run:
```sh
cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Debug ../urde
```
Windows 10 users should run:
```sh
cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_SYSTEM_VERSION=10.0 -DCMAKE_BUILD_TYPE=Debug ../urde
cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_BUILD_TYPE=Debug ../urde
```
Then open `urde.sln`

View File

@ -25,7 +25,6 @@ CFactoryFnReturn FAudioTranslationTableFactory(const SObjectTag& tag, CInputStre
obj->reserve(count);
for (u32 i=0 ; i<count ; ++i)
obj->push_back(in.readUint16Big());
CSimplePool* sp = vparms.GetOwnedObj<CSimplePool*>();
return TToken<std::vector<s16>>::GetIObjObjectFor(std::move(obj));
}

View File

@ -60,11 +60,13 @@ public:
zeus::CVector3f xc_;
zeus::CVector3f x18_;
zeus::CVector3f x24_;
/*
float x30_ = 0.f;
float x34_ = 0.f;
float x38_ = 0.f;
u32 x3c_ = 0;
bool x40_ = false;
*/
bool x44_listenerActive = false;
std::unordered_set<CSfxHandle> x48_handles;
};

View File

@ -19,7 +19,7 @@ class CStaticAudioPlayer
u32 x18_curSamp = 0;
u32 x1c_loopStartSamp;
u32 x20_loopEndSamp;
u32 x24_ = 0;
//u32 x24_ = 0;
//std::unique_ptr<u8[]> x28_dmaLeft;
//std::unique_ptr<u8[]> x30_dmaRight;
std::vector<std::shared_ptr<IDvdRequest>> x38_dvdRequests;

View File

@ -54,7 +54,7 @@ void CMapArea::PostConstruct()
m_surfaces.back().PostConstruct(x44_buf.get(), index);
}
CGraphicsCommitResources([this, &index](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([this, &index](boo::IGraphicsDataFactory::Context& ctx)
{
m_vbo = ctx.newStaticBuffer(boo::BufferUse::Vertex, m_verts.data(), 16, m_verts.size());
m_ibo = ctx.newStaticBuffer(boo::BufferUse::Index, index.data(), 4, index.size());
@ -98,7 +98,7 @@ void CMapArea::PostConstruct()
mapObj.m_doorSurface.emplace(ctx);
}
return true;
});
} BooTrace);
}
bool CMapArea::GetIsVisibleToAutoMapper(bool worldVis, bool areaVis) const

View File

@ -22,7 +22,7 @@ public:
CAssetId x8_wldRes;
int xc_closestHex;
float x10_flashPulse;
const CStateManager& x14_mgr;
//const CStateManager& x14_mgr;
const zeus::CTransform& x18_model;
const zeus::CTransform& x1c_view;
public:
@ -34,7 +34,7 @@ public:
x8_wldRes(wldRes),
xc_closestHex(closestHex),
x10_flashPulse(flashPulse),
x14_mgr(mgr),
//x14_mgr(mgr),
x18_model(model),
x1c_view(view)
{}

View File

@ -294,12 +294,12 @@ void CMappableObject::ReadAutoMapperTweaks(const ITweakAutoMapper& tweaks)
doorVerts[6].assign(.2f * -center.z, center.y, 0.f);
doorVerts[7].assign(.2f * -center.z, center.y, 2.f * center.x);
CGraphicsCommitResources([](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([](boo::IGraphicsDataFactory::Context& ctx)
{
g_doorVbo = ctx.newStaticBuffer(boo::BufferUse::Vertex, skDoorVerts, 16, 8);
g_doorIbo = ctx.newStaticBuffer(boo::BufferUse::Index, DoorIndices, 4, 24);
return true;
});
} BooTrace);
}
void CMappableObject::Shutdown()

View File

@ -11,11 +11,6 @@
namespace urde
{
static const char* DecodeARAMFile(const char* name)
{
return (strncmp(name, "aram:", 5) == 0 ? name + 5 : name);
}
enum class ESeekOrigin
{
Begin = 0,

View File

@ -54,7 +54,7 @@ CFactoryFnReturn CFactoryMgr::MakeObjectFromMemory(const SObjectTag& tag, std::u
{
std::unique_ptr<CInputStream> compRead =
std::make_unique<athena::io::MemoryReader>(localBuf.get(), size);
u32 decompLen = compRead->readUint32Big();
compRead->readUint32Big();
CZipInputStream r(std::move(compRead));
return search->second(tag, r, paramXfer, selfRef);
}

View File

View File

@ -605,6 +605,7 @@ CHintOptions::CHintOptions(CBitStreamReader& stream)
u32 hintIdx = 0;
for (const auto& hint : hints)
{
(void)hint;
EHintState state = EHintState(stream.ReadEncoded(2));
u32 timeBits = stream.ReadEncoded(32);
float time = reinterpret_cast<float&>(timeBits);

View File

@ -160,7 +160,7 @@ CGameState::CGameState(CBitStreamReader& stream, u32 saveIdx)
for (u32 i = 0; i < 128; i++)
x0_[i] = stream.ReadEncoded(8);
u32 tsSeconds = stream.ReadEncoded(32);
//u32 tsSeconds = stream.ReadEncoded(32);
x228_24_hardMode = stream.ReadEncoded(1);
x228_25_initPowerupsAtFirstSpawn = stream.ReadEncoded(1);
@ -173,7 +173,7 @@ CGameState::CGameState(CBitStreamReader& stream, u32 saveIdx)
xa0_playTime = conv.doub;
x98_playerState = std::make_shared<CPlayerState>(stream);
float currentHealth = x98_playerState->GetHealthInfo().GetHP();
//float currentHealth = x98_playerState->GetHealthInfo().GetHP();
x17c_gameOptions = CGameOptions(stream);
x1f8_hintOptions = CHintOptions(stream);

View File

@ -33,11 +33,6 @@ public:
size_t GetNameHash() const { return m_nameHash; }
};
static bool operator==(std::shared_ptr<CIOWin> a, std::shared_ptr<CIOWin> b)
{
return a.get() == b.get();
}
}
#endif // __URDE_CIOWIN_HPP__

View File

@ -83,7 +83,6 @@ add_library(RuntimeCommon
CResLoader.hpp CResLoader.cpp
CDvdRequest.hpp
CDvdFile.hpp CDvdFile.cpp
CVirtualDvdFile.hpp CVirtualDvdFile.cpp
IObjectStore.hpp
CSimplePool.hpp CSimplePool.cpp
CGameOptions.hpp CGameOptions.cpp
@ -96,7 +95,7 @@ add_library(RuntimeCommon
GameObjectLists.hpp GameObjectLists.cpp
CSortedLists.hpp CSortedLists.cpp
CArchitectureMessage.hpp
CArchitectureQueue.hpp CArchitectureQueue.cpp
CArchitectureQueue.hpp
IObj.hpp
IVParamObj.hpp
CTimeProvider.hpp CTimeProvider.cpp
@ -109,7 +108,7 @@ add_library(RuntimeCommon
CMFGameBase.hpp
CInGameTweakManagerBase.hpp
CPlayMovieBase.hpp
CGameDebug.hpp CGameDebug.cpp
CGameDebug.hpp
CGameHintInfo.hpp CGameHintInfo.cpp
rstl.hpp
GameGlobalObjects.hpp GameGlobalObjects.cpp

View File

@ -64,6 +64,7 @@ public:
const_iterator cend() const { return const_iterator(*this, -1); }
CObjectList(EGameObjectList listEnum);
virtual ~CObjectList() = default;
void AddObject(CEntity& entity);
void RemoveObject(TUniqueId uid);

View File

@ -1208,7 +1208,7 @@ std::pair<std::multimap<TEditorId, TUniqueId>::const_iterator, std::multimap<TEd
CStateManager::GetIdListForScript(TEditorId id) const
{
auto ret = x890_scriptIdMap.equal_range(id);
if (ret.first->first != id)
if (ret.first != x890_scriptIdMap.cend() && ret.first->first != id)
ret.first = x890_scriptIdMap.cend();
return ret;
}

View File

@ -149,11 +149,11 @@ float CCameraShakeData::GetMaxFMComponent() const
CCameraShakeData CCameraShakeData::LoadCameraShakeData(CInputStream& in)
{
float xMag = in.readFloatBig();
float f2 = in.readFloatBig();
in.readFloatBig();
float yMag = in.readFloatBig();
float f4 = in.readFloatBig();
in.readFloatBig();
float zMag = in.readFloatBig();
float f6 = in.readFloatBig();
in.readFloatBig();
float duration = in.readFloatBig();
SCameraShakePoint xAM(0, 0.f, 0.f, duration, 2.f * xMag);

View File

@ -10,8 +10,8 @@ namespace urde
void CABSAim::Start(CBodyController& bc, CStateManager& mgr)
{
const CBCAdditiveAimCmd* cmd =
static_cast<const CBCAdditiveAimCmd*>(bc.GetCommandMgr().GetCmd(EBodyStateCmd::AdditiveAim));
//const CBCAdditiveAimCmd* cmd =
// static_cast<const CBCAdditiveAimCmd*>(bc.GetCommandMgr().GetCmd(EBodyStateCmd::AdditiveAim));
const CPASAnimState* aimState = bc.GetPASDatabase().GetAnimState(22);
// Left, Right, Up, Down

View File

@ -12,7 +12,7 @@ class CAnimPlaybackParms
s32 x4_animB = -1;
float x8_blendWeight = 1.f;
bool xc_animating = true;
s32 x10_ = 0;
//s32 x10_ = 0;
const zeus::CVector3f* x14_targetPos = nullptr;
bool x18_useLocator = false;
const zeus::CQuaternion* x1c_deltaOrient = nullptr;

View File

@ -68,6 +68,7 @@ public:
s32 VGetInt32POIState(const char* name) const;
CParticleData::EParentedMode VGetParticlePOIState(const char* name) const;
using IAnimReader::VGetOffset;
virtual zeus::CVector3f VGetOffset(const CSegId& seg, const CCharAnimTime& b) const=0;
virtual bool VSupportsReverseView() const=0;
virtual SAdvancementResults VReverseView(const CCharAnimTime& time)=0;

View File

@ -7,7 +7,7 @@ namespace urde
{
class CAnimation;
class CAnimationDatabaseGame : public CAnimationDatabase
class CAnimationDatabaseGame final : public CAnimationDatabase
{
std::vector<std::shared_ptr<IMetaAnim>> x10_anims;
public:

View File

@ -803,7 +803,7 @@ CMaterialList CGroundMovement::MoveObjectAnalytical(CStateManager& mgr, CPhysics
{
if (actor.x15c_force.canBeNormalized())
{
zeus::CVector3f prevForce = actor.x15c_force;
//zeus::CVector3f prevForce = actor.x15c_force;
actor.x15c_force = CGroundMovement::CollisionDamping(actor.x15c_force,
actor.x15c_force.normalized(),
collisionNorm, 0.f, 1.f);

View File

@ -19,10 +19,10 @@ void CIkChain::Deactivate()
void CIkChain::Activate(const CAnimData& animData, const CSegId& segId, const zeus::CTransform& xf)
{
const CHierarchyPoseBuilder& posBuilder = animData.GetPoseBuilder();
//const CHierarchyPoseBuilder& posBuilder = animData.GetPoseBuilder();
x0_ = segId;
const TLockedToken<CCharLayoutInfo>& info = posBuilder.CharLayoutInfo();
//const TLockedToken<CCharLayoutInfo>& info = posBuilder.CharLayoutInfo();
}
void CIkChain::Solve(zeus::CQuaternion& q1, zeus::CQuaternion& q2, const zeus::CVector3f& vec)

View File

@ -18,7 +18,7 @@ set(CHARACTER_SOURCES
CCharLayoutInfo.hpp CCharLayoutInfo.cpp
CLayoutDescription.hpp
CSegIdList.hpp CSegIdList.cpp
CSegId.hpp CSegId.cpp
CSegId.hpp
TSegIdMap.hpp
CIkChain.hpp CIkChain.cpp
CSkinRules.hpp CSkinRules.cpp
@ -30,7 +30,7 @@ set(CHARACTER_SOURCES
CPASAnimState.hpp CPASAnimState.cpp
CPASParmInfo.hpp CPASParmInfo.cpp
CPASAnimInfo.hpp CPASAnimInfo.cpp
CPASAnimParm.hpp CPASAnimParm.cpp
CPASAnimParm.hpp
CPASAnimParmData.hpp CPASAnimParmData.cpp
CEffectComponent.hpp CEffectComponent.cpp
CAnimation.hpp CAnimation.cpp

View File

@ -22,7 +22,7 @@ std::shared_ptr<CAnimTreeNode>
CMetaAnimBlend::VGetAnimationTree(const CAnimSysContext& animSys,
const CMetaAnimTreeBuildOrders& orders) const
{
CMetaAnimTreeBuildOrders buildOrders = CMetaAnimTreeBuildOrders::NoSpecialOrders();
//CMetaAnimTreeBuildOrders buildOrders = CMetaAnimTreeBuildOrders::NoSpecialOrders();
return {};
}

View File

@ -101,7 +101,7 @@ CSequenceFundamentals CSequenceHelper::ComputeSequenceFundamentals()
auto simp = node->Simplified();
if (simp)
node = CAnimTreeNode::Cast(std::move(*simp));
CCharAnimTime prevRemTime = remTime;
//CCharAnimTime prevRemTime = remTime;
remTime = res.x0_remTime;
/* This was originally accumulating uninitialized register values (stack variable misuse?) */
offset += res.x8_deltas.x0_posDelta;

View File

@ -8,7 +8,7 @@ namespace urde
class CTransition;
class CHalfTransition;
class CTransitionDatabaseGame : public CTransitionDatabase
class CTransitionDatabaseGame final : public CTransitionDatabase
{
std::shared_ptr<IMetaTrans> x10_defaultTrans;
std::vector<std::pair<std::pair<u32, u32>, std::shared_ptr<IMetaTrans>>> x14_transitions;

View File

@ -27,6 +27,7 @@ class CPreAdvanceIndicator
bool x0_isTime;
CCharAnimTime x4_time;
const char* xc_string;
/*
u32 x10_;
u32 x14_;
u32 x18_;
@ -39,6 +40,7 @@ class CPreAdvanceIndicator
u32 x34_;
u32 x38_;
u16 x3c_;
*/
public:
CPreAdvanceIndicator(const CCharAnimTime& time)
: x0_isTime(true), x4_time(time) {}

View File

@ -102,7 +102,7 @@ const CDamageVulnerability* CCollisionActor::GetDamageVulnerability(const zeus::
void CCollisionActor::SetDamageVulnerability(const CDamageVulnerability& vuln) { x294_damageVuln = vuln; }
zeus::CVector3f CCollisionActor::GetScanObjectIndicatorPosition(const CStateManager& mgr)
zeus::CVector3f CCollisionActor::GetScanObjectIndicatorPosition(const CStateManager& mgr) const
{
const CGameCamera* gameCamera = static_cast<const CGameCamera*>(mgr.GetCameraManager()->GetCurrentCamera(mgr));

View File

@ -54,7 +54,7 @@ public:
const zeus::CVector3f& GetBoxSize() const { return x260_boxSize; }
TUniqueId GetOwnerId() const { return x25c_owner; }
TUniqueId GetLastTouchedObject() const { return x2fc_lastTouched; }
zeus::CVector3f GetScanObjectIndicatorPosition(const CStateManager &);
zeus::CVector3f GetScanObjectIndicatorPosition(const CStateManager &) const;
void SetExtendedTouchBounds(const zeus::CVector3f& boundExt) { x304_extendedTouchBounds = boundExt; }
float GetSphereRadius() const { return x288_sphereRadius; }
};

View File

@ -1 +0,0 @@
#include "CInternalRayCastStructure.hpp"

View File

@ -4,7 +4,7 @@ set(COLLISION_SOURCES
CGameCollision.hpp CGameCollision.cpp
CCollisionResponseData.hpp CCollisionResponseData.cpp
CCollisionInfo.hpp CCollisionInfo.cpp
CCollisionInfoList.hpp CCollisionInfoList.cpp
CCollisionInfoList.hpp
CCollisionEdge.hpp CCollisionEdge.cpp
CCollisionSurface.hpp CCollisionSurface.cpp
InternalColliders.hpp InternalColliders.cpp
@ -18,7 +18,7 @@ set(COLLISION_SOURCES
CCollisionPrimitive.hpp CCollisionPrimitive.cpp
CMaterialList.hpp
CMaterialFilter.hpp CMaterialFilter.cpp
CInternalRayCastStructure.hpp CInternalRayCastStructure.cpp
CInternalRayCastStructure.hpp
CRayCastResult.hpp CRayCastResult.cpp
CCollisionActor.hpp CCollisionActor.cpp
CCollisionActorManager.hpp CCollisionActorManager.cpp

View File

@ -712,7 +712,7 @@ CBooRenderer::CBooRenderer(IObjectStore& store, IFactory& resFac)
m_staticEntropy = store.GetObj("RandomStaticEntropy");
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
GenerateFogVolumeRampTex(ctx);
GenerateSphereRampTex(ctx);
@ -720,7 +720,7 @@ CBooRenderer::CBooRenderer(IObjectStore& store, IFactory& resFac)
x14c_reflectionTex = ctx.newRenderTexture(256, 256, boo::TextureClampMode::Repeat, 1, 0);
GenerateScanLinesVBO(ctx);
return true;
});
} BooTrace);
LoadThermoPalette();
LoadBallFade();
m_thermHotFilter.emplace();

View File

@ -168,7 +168,7 @@ static const zeus::CMatrix4f PlusOneZ(1.f, 0.f, 0.f, 0.f,
static const zeus::CMatrix4f VulkanCorrect(1.f, 0.f, 0.f, 0.f,
0.f, -1.f, 0.f, 0.f,
0.f, 0.f, 0.5f, 0.5f,
0.f, 0.f, 0.5f, 0.5f + FLT_EPSILON,
0.f, 0.f, 0.f, 1.f);
zeus::CMatrix4f CGraphics::CalculatePerspectiveMatrix(float fovy, float aspect,
@ -210,7 +210,6 @@ zeus::CMatrix4f CGraphics::CalculatePerspectiveMatrix(float fovy, float aspect,
0.f, 0.f, -1.f, 0.f);
}
case boo::IGraphicsDataFactory::Platform::D3D11:
case boo::IGraphicsDataFactory::Platform::D3D12:
case boo::IGraphicsDataFactory::Platform::Metal:
{
zeus::CMatrix4f mat2(2.f * st.x14_near / rml, 0.f, rpl / rml, 0.f,
@ -260,7 +259,6 @@ zeus::CMatrix4f CGraphics::GetPerspectiveProjectionMatrix(bool forRenderer)
0.f, 0.f, -1.f, 0.f);
}
case boo::IGraphicsDataFactory::Platform::D3D11:
case boo::IGraphicsDataFactory::Platform::D3D12:
case boo::IGraphicsDataFactory::Platform::Metal:
{
zeus::CMatrix4f mat2(2.f * g_Proj.x14_near / rml, 0.f, rpl / rml, 0.f,
@ -307,7 +305,6 @@ zeus::CMatrix4f CGraphics::GetPerspectiveProjectionMatrix(bool forRenderer)
0.f, 0.f, 0.f, 1.f);
}
case boo::IGraphicsDataFactory::Platform::D3D11:
case boo::IGraphicsDataFactory::Platform::D3D12:
case boo::IGraphicsDataFactory::Platform::Metal:
{
zeus::CMatrix4f mat2(2.f / rml, 0.f, 0.f, -rpl / rml,
@ -427,8 +424,8 @@ SClipScreenRect CGraphics::ClipScreenRectFromVS(const zeus::CVector3f& p1,
if (maxX2 <= 0 /* ViewportX origin */)
return {};
int finalMinX = std::max(minX, 0 /* ViewportX origin */);
int finalMaxX = std::min(maxX, int(g_Viewport.x8_width));
//int finalMinX = std::max(minX, 0 /* ViewportX origin */);
//int finalMaxX = std::min(maxX, int(g_Viewport.x8_width));
if (minY2 >= g_Viewport.xc_height)
@ -439,8 +436,8 @@ SClipScreenRect CGraphics::ClipScreenRectFromVS(const zeus::CVector3f& p1,
if (maxY2 <= 0 /* ViewportY origin */)
return {};
int finalMinY = std::max(minY, 0 /* ViewportY origin */);
int finalMaxY = std::min(maxY, int(g_Viewport.xc_height));
//int finalMinY = std::max(minY, 0 /* ViewportY origin */);
//int finalMaxY = std::min(maxY, int(g_Viewport.xc_height));
int width = maxX2 - minX2;
int height = maxY2 - minY2;
@ -453,7 +450,7 @@ SClipScreenRect CGraphics::ClipScreenRectFromVS(const zeus::CVector3f& p1,
zeus::CVector3f CGraphics::ProjectModelPointToViewportSpace(const zeus::CVector3f& point)
{
zeus::CVector3f pt = g_GXModelView * point;
return GetPerspectiveProjectionMatrix(false).multiplyOneOverW(pt);
return GetPerspectiveProjectionMatrix(true).multiplyOneOverW(pt);
}
void CGraphics::SetViewportResolution(const zeus::CVector2i& res)

View File

@ -339,12 +339,6 @@ public:
g_BooFactory->commitTransaction(commitFunc __BooTraceArgsUse);
}
#ifndef NDEBUG
#define CGraphicsCommitResources(...) CGraphics::CommitResources(__VA_ARGS__, __FILE__, __LINE__)
#else
#define CGraphicsCommitResources(...) CGraphics::CommitResources(__VA_ARGS__)
#endif
static void SetShaderDataBinding(const boo::ObjToken<boo::IShaderDataBinding>& binding)
{
g_BooMainCommandQueue->setShaderDataBinding(binding);

View File

@ -32,7 +32,6 @@ public:
u16 w = in.readUint16Big();
u16 h = in.readUint16Big();
x8_entryCount = w * h;
xc_entries[x8_entryCount];
/* GX Tlut init here */
}

View File

@ -92,11 +92,11 @@ CLineRenderer::CLineRenderer(EPrimitiveMode mode, u32 maxVerts,
m_uniformBuf = s_uniformPool.allocateBlock(CGraphics::g_BooFactory);
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
CLineRendererShaders::BuildShaderDataBinding(ctx, *this, texture, additive, zTest, zGEqual);
return true;
});
} BooTrace);
}
rstl::reserved_vector<CLineRenderer::SDrawVertTex, 1024> CLineRenderer::g_StaticLineVertsTex = {};

View File

@ -84,8 +84,8 @@ set(GRAPHICS_SOURCES
IRenderer.hpp
IWeaponRenderer.hpp IWeaponRenderer.cpp
CBooRenderer.hpp CBooRenderer.cpp
CDrawable.hpp CDrawable.cpp
CDrawablePlaneObject.hpp CDrawablePlaneObject.cpp
CDrawable.hpp
CDrawablePlaneObject.hpp
CLineRenderer.hpp CLineRenderer.cpp
CMetroidModelInstance.hpp
CLight.hpp CLight.cpp
@ -94,7 +94,7 @@ set(GRAPHICS_SOURCES
CSkinnedModel.hpp CSkinnedModel.cpp
CVertexMorphEffect.hpp CVertexMorphEffect.cpp
CMoviePlayer.hpp CMoviePlayer.cpp
CGraphicsPalette.hpp CGraphicsPalette.cpp
CGraphicsPalette.hpp
CPVSVisSet.hpp CPVSVisSet.cpp
CPVSVisOctree.hpp CPVSVisOctree.cpp
CPVSAreaSet.hpp CPVSAreaSet.cpp

View File

@ -269,6 +269,7 @@ GeometryUniformLayout::GeometryUniformLayout(const CModel* model, const Material
/* Animated UV transform matrices */
for (const MaterialSet::Material& mat : matSet->materials)
{
(void)mat;
size_t thisSz = ROUND_UP_256(/*mat.uvAnims.size()*/ 8 * (sizeof(zeus::CMatrix4f) * 2));
m_uvOffs.push_back(m_geomBufferSize);
m_uvSizes.push_back(thisSz);
@ -286,7 +287,7 @@ CBooModel::ModelInstance* CBooModel::PushNewModelInstance(int sharedLayoutBuf)
m_instances.emplace_back();
ModelInstance& newInst = m_instances.back();
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
/* Build geometry uniform buffer if shared not available */
boo::ObjToken<boo::IGraphicsBufferD> geomUniformBuf;
@ -460,7 +461,7 @@ CBooModel::ModelInstance* CBooModel::PushNewModelInstance(int sharedLayoutBuf)
}
}
return true;
});
} BooTrace);
return &newInst;
}
@ -870,6 +871,7 @@ void CBooModel::UVAnimationBuffer::Update(u8*& bufOut, const MaterialSet* matSet
-flags.mbShadowBox.min.z) * CGraphics::g_GXModelView).toMatrix4f();
for (const MaterialSet::Material& mat : matSet->materials)
{
(void)mat;
std::array<zeus::CMatrix4f, 2>* mtxs = reinterpret_cast<std::array<zeus::CMatrix4f, 2>*>(bufOut);
mtxs[0][0] = texMtx;
mtxs[0][1] = MBShadowPost0;
@ -1280,7 +1282,7 @@ CModel::CModel(std::unique_ptr<u8[]>&& in, u32 /* dataLen */, IObjectStore* stor
matSet.BuildShaders(m_hmdlMeta);
}
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
/* Index buffer is always static */
if (m_hmdlMeta.indexCount)
@ -1306,7 +1308,7 @@ CModel::CModel(std::unique_ptr<u8[]>&& in, u32 /* dataLen */, IObjectStore* stor
}
return true;
});
} BooTrace);
u32 surfCount = hecl::SBig(*reinterpret_cast<const u32*>(surfInfo));
x8_surfaces.reserve(surfCount);

View File

@ -57,6 +57,7 @@ BOO_GLSL_BINDING_HEAD
" yuv.r+2.017*yuv.g, 1.0) * vtf.color;\n"
"}\n";
#if _WIN32
static const char* VS_HLSL_YUV =
"struct VertData\n"
"{\n"
@ -101,7 +102,9 @@ static const char* FS_HLSL_YUV =
" yuv.r-0.39173*yuv.g-0.81290*yuv.b,\n"
" yuv.r+2.017*yuv.g, 1.0) * vtf.color;\n"
"}\n";
#endif
#if BOO_HAS_METAL
static const char* VS_METAL_YUV =
"#include <metal_stdlib>\n"
"using namespace metal;\n"
@ -152,6 +155,7 @@ static const char* FS_METAL_YUV =
" yuv.r-0.39173*yuv.g-0.81290*yuv.b,\n"
" yuv.r+2.017*yuv.g, 1.0) * vtf.color;\n"
"}\n";
#endif
/* used in the original to look up fixed-point dividends on a
* MIDI-style volume scale (0-127) -> (n/0x8000) */
@ -198,7 +202,7 @@ static const char* TexNames[] = {"texY", "texU", "texV"};
void CMoviePlayer::Initialize()
{
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
if (!ctx.bindingNeedsVertexFormat())
{
@ -222,8 +226,7 @@ void CMoviePlayer::Initialize()
#endif
#if _WIN32
case boo::IGraphicsDataFactory::Platform::D3D11:
case boo::IGraphicsDataFactory::Platform::D3D12:
YUVShaderPipeline = static_cast<boo::ID3DDataFactory::Context&>(ctx).newShaderPipeline
YUVShaderPipeline = static_cast<boo::D3DDataFactory::Context&>(ctx).newShaderPipeline
(VS_HLSL_YUV, FS_HLSL_YUV, nullptr, nullptr, nullptr, YUVVTXFmt,
boo::BlendFactor::SrcAlpha, boo::BlendFactor::InvSrcAlpha,
boo::Primitive::TriStrips, boo::ZTest::None, false, true, false, boo::CullMode::None);
@ -248,7 +251,7 @@ void CMoviePlayer::Initialize()
default: break;
}
return true;
});
} BooTrace);
TjHandle = tjInitDecompress();
}
@ -426,7 +429,7 @@ CMoviePlayer::CMoviePlayer(const char* path, float preLoadSeconds, bool loop, bo
xa0_bufferQueue.reserve(xf0_preLoadFrames);
/* All set for GPU resources */
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_blockBuf = ctx.newDynamicBuffer(boo::BufferUse::Uniform, sizeof(m_viewVertBlock), 1);
m_vertBuf = ctx.newDynamicBuffer(boo::BufferUse::Vertex, sizeof(specter::View::TexShaderVert), 4);
@ -489,7 +492,7 @@ CMoviePlayer::CMoviePlayer(const char* path, float preLoadSeconds, bool loop, bo
set.audioBuf.reset(new s16[x28_thpHead.maxAudioSamples * 2]);
}
return true;
});
} BooTrace);
/* Temporary planar YUV decode buffer, resulting planes copied to Boo */
m_yuvBuf.reset(new uint8_t[tjBufSizeYUV(x6c_videoInfo.width, x6c_videoInfo.height, TJ_420)]);

View File

@ -14,12 +14,12 @@ CRainSplashGenerator::CRainSplashGenerator(const zeus::CVector3f& scale, u32 max
x48_24 = false;
x48_25_raining = true;
x0_rainSplashes.reserve(maxSplashes);
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
for (int i=0 ; i<maxSplashes ; ++i)
x0_rainSplashes.emplace_back(ctx);
return true;
});
} BooTrace);
}
void CRainSplashGenerator::SSplashLine::Draw(float alpha, float dt, const zeus::CVector3f& pos) const

View File

@ -112,12 +112,12 @@ void CTexture::BuildI4FromGCN(CInputStream& in)
h /= 2;
}
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_booTex = ctx.newStaticTexture(x4_w, x6_h, x8_mips, boo::TextureFormat::RGBA8,
boo::TextureClampMode::Repeat, buf.get(), texelCount * 4).get();
return true;
});
} BooTrace);
}
void CTexture::BuildI8FromGCN(CInputStream& in)
@ -160,12 +160,12 @@ void CTexture::BuildI8FromGCN(CInputStream& in)
h /= 2;
}
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_booTex = ctx.newStaticTexture(x4_w, x6_h, x8_mips, boo::TextureFormat::RGBA8,
boo::TextureClampMode::Repeat, buf.get(), texelCount * 4).get();
return true;
});
} BooTrace);
}
void CTexture::BuildIA4FromGCN(CInputStream& in)
@ -209,12 +209,12 @@ void CTexture::BuildIA4FromGCN(CInputStream& in)
h /= 2;
}
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_booTex = ctx.newStaticTexture(x4_w, x6_h, x8_mips, boo::TextureFormat::RGBA8,
boo::TextureClampMode::Repeat, buf.get(), texelCount * 4).get();
return true;
});
} BooTrace);
}
void CTexture::BuildIA8FromGCN(CInputStream& in)
@ -258,12 +258,12 @@ void CTexture::BuildIA8FromGCN(CInputStream& in)
h /= 2;
}
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_booTex = ctx.newStaticTexture(x4_w, x6_h, x8_mips, boo::TextureFormat::RGBA8,
boo::TextureClampMode::Repeat, buf.get(), texelCount * 4).get();
return true;
});
} BooTrace);
}
static std::vector<RGBA8> DecodePalette(int numEntries, CInputStream& in)
@ -366,12 +366,12 @@ void CTexture::BuildC4FromGCN(CInputStream& in)
h /= 2;
}
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_booTex = ctx.newStaticTexture(x4_w, x6_h, x8_mips, boo::TextureFormat::RGBA8,
boo::TextureClampMode::Repeat, buf.get(), texelCount * 4).get();
return true;
});
} BooTrace);
}
void CTexture::BuildC8FromGCN(CInputStream& in)
@ -410,12 +410,12 @@ void CTexture::BuildC8FromGCN(CInputStream& in)
h /= 2;
}
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_booTex = ctx.newStaticTexture(x4_w, x6_h, x8_mips, boo::TextureFormat::RGBA8,
boo::TextureClampMode::Repeat, buf.get(), texelCount * 4).get();
return true;
});
} BooTrace);
}
void CTexture::BuildC14X2FromGCN(CInputStream& in)
@ -462,12 +462,12 @@ void CTexture::BuildRGB565FromGCN(CInputStream& in)
h /= 2;
}
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_booTex = ctx.newStaticTexture(x4_w, x6_h, x8_mips, boo::TextureFormat::RGBA8,
boo::TextureClampMode::Repeat, buf.get(), texelCount * 4).get();
return true;
});
} BooTrace);
}
void CTexture::BuildRGB5A3FromGCN(CInputStream& in)
@ -519,12 +519,12 @@ void CTexture::BuildRGB5A3FromGCN(CInputStream& in)
h /= 2;
}
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_booTex = ctx.newStaticTexture(x4_w, x6_h, x8_mips, boo::TextureFormat::RGBA8,
boo::TextureClampMode::Repeat, buf.get(), texelCount * 4).get();
return true;
});
} BooTrace);
}
void CTexture::BuildRGBA8FromGCN(CInputStream& in)
@ -576,12 +576,12 @@ void CTexture::BuildRGBA8FromGCN(CInputStream& in)
h /= 2;
}
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_booTex = ctx.newStaticTexture(x4_w, x6_h, x8_mips, boo::TextureFormat::RGBA8,
boo::TextureClampMode::Repeat, buf.get(), texelCount * 4).get();
return true;
});
} BooTrace);
}
struct DXT1Block
@ -640,12 +640,12 @@ void CTexture::BuildDXT1FromGCN(CInputStream& in)
h /= 2;
}
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_booTex = ctx.newStaticTexture(x4_w, x6_h, x8_mips, boo::TextureFormat::DXT1,
boo::TextureClampMode::Repeat, buf.get(), blockCount * 8).get();
return true;
});
} BooTrace);
}
void CTexture::BuildRGBA8(const void* data, size_t length)
@ -656,12 +656,12 @@ void CTexture::BuildRGBA8(const void* data, size_t length)
Log.report(logvisor::Fatal, "insufficient TXTR length (%" PRISize "/%" PRISize ")",
length, expectedSize);
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_booTex = ctx.newStaticTexture(x4_w, x6_h, x8_mips, boo::TextureFormat::RGBA8,
boo::TextureClampMode::Repeat, data, expectedSize).get();
return true;
});
} BooTrace);
}
void CTexture::BuildC8(const void* data, size_t length)
@ -671,7 +671,7 @@ void CTexture::BuildC8(const void* data, size_t length)
Log.report(logvisor::Fatal, "insufficient TXTR length (%" PRISize "/%" PRISize ")",
length, texelCount);
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
uint32_t nentries = hecl::SBig(*reinterpret_cast<const uint32_t*>(data));
const u8* paletteTexels = reinterpret_cast<const u8*>(data) + 4;
@ -681,14 +681,14 @@ void CTexture::BuildC8(const void* data, size_t length)
m_booTex = ctx.newStaticTexture(x4_w, x6_h, x8_mips, boo::TextureFormat::I8,
boo::TextureClampMode::Repeat, texels, texelCount).get();
return true;
});
} BooTrace);
}
void CTexture::BuildC8Font(const void* data, EFontType ftype)
{
size_t texelCount = ComputeMippedTexelCount();
size_t layerCount;
size_t layerCount = 1;
switch (ftype)
{
case EFontType::OneLayer:
@ -778,22 +778,22 @@ void CTexture::BuildC8Font(const void* data, EFontType ftype)
h /= 2;
}
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_booTex = ctx.newStaticArrayTexture(x4_w, x6_h, layerCount, x8_mips, boo::TextureFormat::RGBA8,
boo::TextureClampMode::Repeat, buf.get(), texelCount * layerCount * 4).get();
return true;
});
} BooTrace);
}
void CTexture::BuildDXT1(const void* data, size_t length)
{
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_booTex = ctx.newStaticTexture(x4_w, x6_h, x8_mips, boo::TextureFormat::DXT1,
boo::TextureClampMode::Repeat, data, length).get();
return true;
});
} BooTrace);
}
CTexture::CTexture(ETexelFormat fmt, s16 w, s16 h, s32 mips)

View File

@ -6,13 +6,13 @@ namespace urde
CAABoxShader::CAABoxShader(bool zOnly)
: m_zOnly(zOnly)
{
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_vbo = ctx.newDynamicBuffer(boo::BufferUse::Vertex, sizeof(zeus::CVector3f), 34);
m_uniBuf = ctx.newDynamicBuffer(boo::BufferUse::Uniform, sizeof(Uniform), 1);
m_dataBind = TShader<CAABoxShader>::BuildShaderDataBinding(ctx, *this);
return true;
});
} BooTrace);
}
void CAABoxShader::setAABB(const zeus::CAABox& aabb)

View File

@ -54,7 +54,7 @@ struct CAABoxShaderD3DDataBindingFactory : TShader<CAABoxShader>::IDataBindingFa
BuildShaderDataBinding(boo::IGraphicsDataFactory::Context& ctx,
CAABoxShader& filter)
{
boo::ID3DDataFactory::Context& cctx = static_cast<boo::ID3DDataFactory::Context&>(ctx);
boo::D3DDataFactory::Context& cctx = static_cast<boo::D3DDataFactory::Context&>(ctx);
boo::ObjToken<boo::IGraphicsBuffer> bufs[] = {filter.m_uniBuf.get()};
return cctx.newShaderDataBinding(filter.m_zOnly ? s_zOnlyPipeline : s_Pipeline, s_VtxFmt,
@ -63,7 +63,7 @@ struct CAABoxShaderD3DDataBindingFactory : TShader<CAABoxShader>::IDataBindingFa
}
};
TShader<CAABoxShader>::IDataBindingFactory* CAABoxShader::Initialize(boo::ID3DDataFactory::Context& ctx)
TShader<CAABoxShader>::IDataBindingFactory* CAABoxShader::Initialize(boo::D3DDataFactory::Context& ctx)
{
const boo::VertexElementDescriptor VtxVmt[] =
{
@ -80,7 +80,7 @@ TShader<CAABoxShader>::IDataBindingFactory* CAABoxShader::Initialize(boo::ID3DDa
}
template <>
void CAABoxShader::Shutdown<boo::ID3DDataFactory>()
void CAABoxShader::Shutdown<boo::D3DDataFactory>()
{
s_VtxFmt.reset();
s_Pipeline.reset();

View File

@ -5,13 +5,13 @@ namespace urde
CCameraBlurFilter::CCameraBlurFilter()
{
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
m_vbo = ctx.newDynamicBuffer(boo::BufferUse::Vertex, 32, 4);
m_uniBuf = ctx.newDynamicBuffer(boo::BufferUse::Uniform, sizeof(Uniform), 1);
m_dataBind = TShader<CCameraBlurFilter>::BuildShaderDataBinding(ctx, *this);
return true;
});
} BooTrace);
}
void CCameraBlurFilter::draw(float amount, bool clearDepth)

View File

@ -96,7 +96,7 @@ struct CCameraBlurFilterD3DDataBindingFactory : TShader<CCameraBlurFilter>::IDat
BuildShaderDataBinding(boo::IGraphicsDataFactory::Context& ctx,
CCameraBlurFilter& filter)
{
boo::ID3DDataFactory::Context& cctx = static_cast<boo::ID3DDataFactory::Context&>(ctx);
boo::D3DDataFactory::Context& cctx = static_cast<boo::D3DDataFactory::Context&>(ctx);
boo::ObjToken<boo::IGraphicsBuffer> bufs[] = {filter.m_uniBuf.get()};
boo::ObjToken<boo::ITexture> texs[] = {CGraphics::g_SpareTexture.get()};
@ -106,7 +106,7 @@ struct CCameraBlurFilterD3DDataBindingFactory : TShader<CCameraBlurFilter>::IDat
}
};
TShader<CCameraBlurFilter>::IDataBindingFactory* CCameraBlurFilter::Initialize(boo::ID3DDataFactory::Context& ctx)
TShader<CCameraBlurFilter>::IDataBindingFactory* CCameraBlurFilter::Initialize(boo::D3DDataFactory::Context& ctx)
{
const boo::VertexElementDescriptor VtxVmt[] =
{
@ -122,7 +122,7 @@ TShader<CCameraBlurFilter>::IDataBindingFactory* CCameraBlurFilter::Initialize(b
}
template <>
void CCameraBlurFilter::Shutdown<boo::ID3DDataFactory>()
void CCameraBlurFilter::Shutdown<boo::D3DDataFactory>()
{
s_VtxFmt.reset();
s_Pipeline.reset();

View File

@ -5,7 +5,7 @@ namespace urde
CColoredQuadFilter::CColoredQuadFilter(EFilterType type)
{
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
struct Vert
{
@ -21,7 +21,7 @@ CColoredQuadFilter::CColoredQuadFilter(EFilterType type)
m_uniBuf = ctx.newDynamicBuffer(boo::BufferUse::Uniform, sizeof(Uniform), 1);
m_dataBind = TMultiBlendShader<CColoredQuadFilter>::BuildShaderDataBinding(ctx, type, *this);
return true;
});
} BooTrace);
}
void CColoredQuadFilter::draw(const zeus::CColor& color, const zeus::CRectangle& rect)

View File

@ -69,7 +69,7 @@ struct CColoredQuadFilterD3DDataBindingFactory : TMultiBlendShader<CColoredQuadF
BuildShaderDataBinding(boo::IGraphicsDataFactory::Context& ctx,
EFilterType type, CColoredQuadFilter& filter)
{
boo::ID3DDataFactory::Context& cctx = static_cast<boo::ID3DDataFactory::Context&>(ctx);
boo::D3DDataFactory::Context& cctx = static_cast<boo::D3DDataFactory::Context&>(ctx);
boo::ObjToken<boo::IGraphicsBuffer> bufs[] = {filter.m_uniBuf.get()};
return cctx.newShaderDataBinding(SelectPipeline(type), s_VtxFmt,
@ -79,7 +79,7 @@ struct CColoredQuadFilterD3DDataBindingFactory : TMultiBlendShader<CColoredQuadF
};
TMultiBlendShader<CColoredQuadFilter>::IDataBindingFactory*
CColoredQuadFilter::Initialize(boo::ID3DDataFactory::Context& ctx)
CColoredQuadFilter::Initialize(boo::D3DDataFactory::Context& ctx)
{
const boo::VertexElementDescriptor VtxVmt[] =
{
@ -102,7 +102,7 @@ CColoredQuadFilter::Initialize(boo::ID3DDataFactory::Context& ctx)
}
template <>
void CColoredQuadFilter::Shutdown<boo::ID3DDataFactory>()
void CColoredQuadFilter::Shutdown<boo::D3DDataFactory>()
{
s_VtxFmt.reset();
s_AlphaPipeline.reset();

View File

@ -143,7 +143,7 @@ struct D3DDecalDataBindingFactory : TShader<CDecalShaders>::IDataBindingFactory
}
};
TShader<CDecalShaders>::IDataBindingFactory* CDecalShaders::Initialize(boo::ID3DDataFactory::Context& ctx)
TShader<CDecalShaders>::IDataBindingFactory* CDecalShaders::Initialize(boo::D3DDataFactory::Context& ctx)
{
static const boo::VertexElementDescriptor TexFmtTex[] =
{
@ -199,7 +199,7 @@ TShader<CDecalShaders>::IDataBindingFactory* CDecalShaders::Initialize(boo::ID3D
}
template <>
void CDecalShaders::Shutdown<boo::ID3DDataFactory>()
void CDecalShaders::Shutdown<boo::D3DDataFactory>()
{
m_vtxFormatTex.reset();
m_vtxFormatNoTex.reset();

View File

@ -262,7 +262,7 @@ struct D3DElementDataBindingFactory : TShader<CElementGenShaders>::IDataBindingF
}
};
TShader<CElementGenShaders>::IDataBindingFactory* CElementGenShaders::Initialize(boo::ID3DDataFactory::Context& ctx)
TShader<CElementGenShaders>::IDataBindingFactory* CElementGenShaders::Initialize(boo::D3DDataFactory::Context& ctx)
{
static const boo::VertexElementDescriptor TexFmtTex[] =
{
@ -436,7 +436,7 @@ TShader<CElementGenShaders>::IDataBindingFactory* CElementGenShaders::Initialize
}
template <>
void CElementGenShaders::Shutdown<boo::ID3DDataFactory>()
void CElementGenShaders::Shutdown<boo::D3DDataFactory>()
{
m_vtxFormatTex.reset();
m_vtxFormatIndTex.reset();

View File

@ -21,14 +21,14 @@ void CEnergyBarShader::draw(const zeus::CColor& color0, const std::vector<Vertex
{
m_maxVerts = totalVerts;
m_tex = tex;
CGraphicsCommitResources([this](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([this](boo::IGraphicsDataFactory::Context& ctx)
{
m_vbo = ctx.newDynamicBuffer(boo::BufferUse::Vertex, sizeof(Vertex), m_maxVerts);
for (int i=0 ; i<3 ; ++i)
m_uniBuf[i] = ctx.newDynamicBuffer(boo::BufferUse::Uniform, sizeof(Uniform), 1);
TShader<CEnergyBarShader>::BuildShaderDataBinding(ctx, *this);
return true;
});
} BooTrace);
}
size_t vertIter = 0;

View File

@ -61,7 +61,7 @@ struct CEnergyBarShaderD3DDataBindingFactory : TShader<CEnergyBarShader>::IDataB
BuildShaderDataBinding(boo::IGraphicsDataFactory::Context& ctx,
CEnergyBarShader& filter)
{
boo::ID3DDataFactory::Context& cctx = static_cast<boo::ID3DDataFactory::Context&>(ctx);
boo::D3DDataFactory::Context& cctx = static_cast<boo::D3DDataFactory::Context&>(ctx);
boo::ObjToken<boo::IGraphicsBuffer> bufs[1];
boo::ObjToken<boo::ITexture> texs[] = {filter.m_tex->GetBooTexture()};
@ -77,7 +77,7 @@ struct CEnergyBarShaderD3DDataBindingFactory : TShader<CEnergyBarShader>::IDataB
};
TShader<CEnergyBarShader>::IDataBindingFactory*
CEnergyBarShader::Initialize(boo::ID3DDataFactory::Context& ctx)
CEnergyBarShader::Initialize(boo::D3DDataFactory::Context& ctx)
{
const boo::VertexElementDescriptor VtxVmt[] =
{
@ -93,7 +93,7 @@ CEnergyBarShader::Initialize(boo::ID3DDataFactory::Context& ctx)
}
template <>
void CEnergyBarShader::Shutdown<boo::ID3DDataFactory>()
void CEnergyBarShader::Shutdown<boo::D3DDataFactory>()
{
s_VtxFmt.reset();
s_Pipeline.reset();

View File

@ -99,7 +99,7 @@ boo::ObjToken<boo::IShaderPipeline> CFluidPlaneShader::Cache::GetOrBuildShader(c
if (CGraphics::g_BooFactory == nullptr)
return nullptr;
CGraphicsCommitResources(
CGraphics::CommitResources(
[&](boo::IGraphicsDataFactory::Context& ctx)
{
switch (ctx.platform())
@ -111,8 +111,7 @@ boo::ObjToken<boo::IShaderPipeline> CFluidPlaneShader::Cache::GetOrBuildShader(c
#endif
#if _WIN32
case boo::IGraphicsDataFactory::Platform::D3D11:
case boo::IGraphicsDataFactory::Platform::D3D12:
slot = BuildShader(static_cast<boo::ID3DDataFactory::Context&>(ctx), info);
slot = BuildShader(static_cast<boo::D3DDataFactory::Context&>(ctx), info);
break;
#endif
#if BOO_HAS_METAL
@ -128,7 +127,7 @@ boo::ObjToken<boo::IShaderPipeline> CFluidPlaneShader::Cache::GetOrBuildShader(c
default: break;
}
return true;
});
} BooTrace);
return slot;
}
@ -148,7 +147,7 @@ void CFluidPlaneShader::Cache::Clear()
void CFluidPlaneShader::PrepareBinding(const boo::ObjToken<boo::IShaderPipeline>& pipeline, u32 maxVertCount, bool door)
{
CGraphicsCommitResources(
CGraphics::CommitResources(
[&](boo::IGraphicsDataFactory::Context& ctx)
{
m_vbo = ctx.newDynamicBuffer(boo::BufferUse::Vertex, sizeof(Vertex), maxVertCount);
@ -163,8 +162,7 @@ void CFluidPlaneShader::PrepareBinding(const boo::ObjToken<boo::IShaderPipeline>
#endif
#if _WIN32
case boo::IGraphicsDataFactory::Platform::D3D11:
case boo::IGraphicsDataFactory::Platform::D3D12:
m_dataBind = BuildBinding(static_cast<boo::ID3DDataFactory::Context&>(ctx), pipeline, door);
m_dataBind = BuildBinding(static_cast<boo::D3DDataFactory::Context&>(ctx), pipeline, door);
break;
#endif
#if BOO_HAS_METAL
@ -180,7 +178,7 @@ void CFluidPlaneShader::PrepareBinding(const boo::ObjToken<boo::IShaderPipeline>
default: break;
}
return true;
});
} BooTrace);
}
void CFluidPlaneShader::Shutdown()
@ -195,8 +193,7 @@ void CFluidPlaneShader::Shutdown()
#endif
#if _WIN32
case boo::IGraphicsDataFactory::Platform::D3D11:
case boo::IGraphicsDataFactory::Platform::D3D12:
CFluidPlaneShader::_Shutdown<boo::ID3DDataFactory>();
CFluidPlaneShader::_Shutdown<boo::D3DDataFactory>();
break;
#endif
#if BOO_HAS_METAL

View File

@ -127,11 +127,11 @@ private:
const boo::ObjToken<boo::IShaderPipeline>& pipeline, bool door);
#endif
#if _WIN32
static boo::ObjToken<boo::IShaderPipeline> BuildShader(boo::ID3DDataFactory::Context& ctx,
static boo::ObjToken<boo::IShaderPipeline> BuildShader(boo::D3DDataFactory::Context& ctx,
const SFluidPlaneShaderInfo& info);
static boo::ObjToken<boo::IShaderPipeline> BuildShader(boo::ID3DDataFactory::Context& ctx,
static boo::ObjToken<boo::IShaderPipeline> BuildShader(boo::D3DDataFactory::Context& ctx,
const SFluidPlaneDoorShaderInfo& info);
boo::ObjToken<boo::IShaderDataBinding> BuildBinding(boo::ID3DDataFactory::Context& ctx,
boo::ObjToken<boo::IShaderDataBinding> BuildBinding(boo::D3DDataFactory::Context& ctx,
const boo::ObjToken<boo::IShaderPipeline>& pipeline, bool door);
#endif
#if BOO_HAS_METAL

View File

@ -166,7 +166,7 @@ static const char* FSDoor =
"}\n";
boo::ObjToken<boo::IShaderPipeline>
CFluidPlaneShader::BuildShader(boo::ID3DDataFactory::Context& ctx, const SFluidPlaneShaderInfo& info)
CFluidPlaneShader::BuildShader(boo::D3DDataFactory::Context& ctx, const SFluidPlaneShaderInfo& info)
{
if (!s_vtxFmt)
{
@ -498,7 +498,7 @@ CFluidPlaneShader::BuildShader(boo::ID3DDataFactory::Context& ctx, const SFluidP
}
boo::ObjToken<boo::IShaderPipeline>
CFluidPlaneShader::BuildShader(boo::ID3DDataFactory::Context& ctx, const SFluidPlaneDoorShaderInfo& info)
CFluidPlaneShader::BuildShader(boo::D3DDataFactory::Context& ctx, const SFluidPlaneDoorShaderInfo& info)
{
if (!s_vtxFmt)
{
@ -559,13 +559,13 @@ CFluidPlaneShader::BuildShader(boo::ID3DDataFactory::Context& ctx, const SFluidP
}
template <>
void CFluidPlaneShader::_Shutdown<boo::ID3DDataFactory>()
void CFluidPlaneShader::_Shutdown<boo::D3DDataFactory>()
{
s_vtxFmt.reset();
}
boo::ObjToken<boo::IShaderDataBinding>
CFluidPlaneShader::BuildBinding(boo::ID3DDataFactory::Context& ctx,
CFluidPlaneShader::BuildBinding(boo::D3DDataFactory::Context& ctx,
const boo::ObjToken<boo::IShaderPipeline>& pipeline, bool door)
{
boo::ObjToken<boo::IGraphicsBuffer> ubufs[] = { m_uniBuf.get(), m_uniBuf.get(), m_uniBuf.get() };

View File

@ -5,7 +5,7 @@ namespace urde
CFogVolumeFilter::CFogVolumeFilter()
{
CGraphicsCommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx)
{
struct Vert
{
@ -22,7 +22,7 @@ CFogVolumeFilter::CFogVolumeFilter()
m_uniBuf = ctx.newDynamicBuffer(boo::BufferUse::Uniform, sizeof(zeus::CColor), 1);
TShader<CFogVolumeFilter>::BuildShaderDataBinding(ctx, *this);
return true;
});
} BooTrace);
}
void CFogVolumeFilter::draw2WayPass(const zeus::CColor& color)

Some files were not shown because too many files have changed in this diff Show More