[nostalgia/gfx] Cleanup
This commit is contained in:
@ -453,7 +453,7 @@ static void drawBackgrounds(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void drawSprites(Context &ctx, ox::Size const&renderSz) noexcept {
|
static void drawSprites(Context &ctx, ox::Size const &renderSz) noexcept {
|
||||||
glUseProgram(ctx.spriteShader);
|
glUseProgram(ctx.spriteShader);
|
||||||
auto &sb = ctx.spriteBlocks;
|
auto &sb = ctx.spriteBlocks;
|
||||||
auto const uniformXScale = glGetUniformLocation(ctx.bgShader, "vXScale");
|
auto const uniformXScale = glGetUniformLocation(ctx.bgShader, "vXScale");
|
||||||
@ -481,7 +481,7 @@ static void loadPalette(
|
|||||||
ox::Array<GLfloat, 1024> &palette,
|
ox::Array<GLfloat, 1024> &palette,
|
||||||
size_t const palOffset,
|
size_t const palOffset,
|
||||||
GLuint const shaderPgrm,
|
GLuint const shaderPgrm,
|
||||||
CompactPalette const&pal,
|
CompactPalette const &pal,
|
||||||
size_t const page = 0) noexcept {
|
size_t const page = 0) noexcept {
|
||||||
static constexpr std::size_t ColorCnt = 256;
|
static constexpr std::size_t ColorCnt = 256;
|
||||||
for (auto i = palOffset; auto const c : pal.pages[page]) {
|
for (auto i = palOffset; auto const c : pal.pages[page]) {
|
||||||
@ -500,7 +500,7 @@ static void loadPalette(
|
|||||||
static void setSprite(
|
static void setSprite(
|
||||||
Context &ctx,
|
Context &ctx,
|
||||||
uint_t const idx,
|
uint_t const idx,
|
||||||
Sprite const&s) noexcept {
|
Sprite const &s) noexcept {
|
||||||
// Tonc Table 8.4
|
// Tonc Table 8.4
|
||||||
struct Sz { uint_t x{}, y{}; };
|
struct Sz { uint_t x{}, y{}; };
|
||||||
static constexpr ox::Array<Sz, 12> dimensions{
|
static constexpr ox::Array<Sz, 12> dimensions{
|
||||||
@ -574,7 +574,7 @@ static void setSprite(
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ox::Result<ox::UPtr<Context>> init(turbine::Context &tctx, InitParams const¶ms) noexcept {
|
ox::Result<ox::UPtr<Context>> init(turbine::Context &tctx, InitParams const ¶ms) noexcept {
|
||||||
auto ctx = ox::make_unique<Context>(tctx, params);
|
auto ctx = ox::make_unique<Context>(tctx, params);
|
||||||
auto const bgVshad = ox::sfmt(renderer::bgvshadTmpl, gl::GlslVersion);
|
auto const bgVshad = ox::sfmt(renderer::bgvshadTmpl, gl::GlslVersion);
|
||||||
auto const bgFshad = ox::sfmt(renderer::bgfshadTmpl, gl::GlslVersion);
|
auto const bgFshad = ox::sfmt(renderer::bgfshadTmpl, gl::GlslVersion);
|
||||||
@ -604,7 +604,7 @@ struct TileSheetData {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static ox::Result<TileSheetData> normalizeTileSheet
|
static ox::Result<TileSheetData> normalizeTileSheet
|
||||||
(CompactTileSheet const&ts) noexcept {
|
(CompactTileSheet const &ts) noexcept {
|
||||||
const uint_t bytesPerTile = ts.bpp == 8 ? PixelsPerTile : PixelsPerTile / 2;
|
const uint_t bytesPerTile = ts.bpp == 8 ? PixelsPerTile : PixelsPerTile / 2;
|
||||||
auto const tiles = ts.pixels.size() / bytesPerTile;
|
auto const tiles = ts.pixels.size() / bytesPerTile;
|
||||||
constexpr int width = 8;
|
constexpr int width = 8;
|
||||||
@ -632,7 +632,7 @@ static ox::Result<TileSheetData> normalizeTileSheet
|
|||||||
ox::Error loadBgPalette(
|
ox::Error loadBgPalette(
|
||||||
Context &ctx,
|
Context &ctx,
|
||||||
size_t const palBank,
|
size_t const palBank,
|
||||||
CompactPalette const&palette,
|
CompactPalette const &palette,
|
||||||
size_t const page) noexcept {
|
size_t const page) noexcept {
|
||||||
renderer::loadPalette(ctx.bgPalette, palBank * 16 * 4, ctx.bgShader, palette, page);
|
renderer::loadPalette(ctx.bgPalette, palBank * 16 * 4, ctx.bgShader, palette, page);
|
||||||
return {};
|
return {};
|
||||||
@ -640,7 +640,7 @@ ox::Error loadBgPalette(
|
|||||||
|
|
||||||
ox::Error loadSpritePalette(
|
ox::Error loadSpritePalette(
|
||||||
Context &ctx,
|
Context &ctx,
|
||||||
CompactPalette const&palette,
|
CompactPalette const &palette,
|
||||||
size_t const page) noexcept {
|
size_t const page) noexcept {
|
||||||
ox::Array<GLfloat, 1024> pal;
|
ox::Array<GLfloat, 1024> pal;
|
||||||
renderer::loadPalette(pal, 0, ctx.spriteShader, palette, page);
|
renderer::loadPalette(pal, 0, ctx.spriteShader, palette, page);
|
||||||
@ -649,14 +649,14 @@ ox::Error loadSpritePalette(
|
|||||||
|
|
||||||
static ox::Result<TileSheetData> buildSetTsd(
|
static ox::Result<TileSheetData> buildSetTsd(
|
||||||
Context const &ctx,
|
Context const &ctx,
|
||||||
TileSheetSet const&set) noexcept {
|
TileSheetSet const &set) noexcept {
|
||||||
auto &kctx = keelCtx(ctx.turbineCtx);
|
auto &kctx = keelCtx(ctx.turbineCtx);
|
||||||
TileSheetData setTsd;
|
TileSheetData setTsd;
|
||||||
setTsd.width = TileWidth;
|
setTsd.width = TileWidth;
|
||||||
for (auto const&entry : set.entries) {
|
for (auto const &entry : set.entries) {
|
||||||
OX_REQUIRE(tilesheet, readObj<CompactTileSheet>(kctx, entry.tilesheet));
|
OX_REQUIRE(tilesheet, readObj<CompactTileSheet>(kctx, entry.tilesheet));
|
||||||
OX_REQUIRE(tsd, normalizeTileSheet(*tilesheet));
|
OX_REQUIRE(tsd, normalizeTileSheet(*tilesheet));
|
||||||
for (auto const&s : entry.sections) {
|
for (auto const &s : entry.sections) {
|
||||||
auto const size = s.tiles * PixelsPerTile;
|
auto const size = s.tiles * PixelsPerTile;
|
||||||
for (auto i = 0; i < size; ++i) {
|
for (auto i = 0; i < size; ++i) {
|
||||||
auto const srcIdx = static_cast<size_t>(i) + static_cast<size_t>(s.begin * PixelsPerTile);
|
auto const srcIdx = static_cast<size_t>(i) + static_cast<size_t>(s.begin * PixelsPerTile);
|
||||||
@ -669,7 +669,7 @@ static ox::Result<TileSheetData> buildSetTsd(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void copyPixels(
|
static void copyPixels(
|
||||||
CompactTileSheet const&ts,
|
CompactTileSheet const &ts,
|
||||||
ox::Span<uint32_t> const dst,
|
ox::Span<uint32_t> const dst,
|
||||||
size_t const srcPxIdx,
|
size_t const srcPxIdx,
|
||||||
size_t const pxlCnt) noexcept {
|
size_t const pxlCnt) noexcept {
|
||||||
@ -704,7 +704,7 @@ void clearCbbs(Context &ctx) noexcept {
|
|||||||
ox::Error loadBgTileSheet(
|
ox::Error loadBgTileSheet(
|
||||||
Context &ctx,
|
Context &ctx,
|
||||||
unsigned const cbb,
|
unsigned const cbb,
|
||||||
CompactTileSheet const&ts,
|
CompactTileSheet const &ts,
|
||||||
size_t const dstTileIdx,
|
size_t const dstTileIdx,
|
||||||
size_t const srcTileIdx,
|
size_t const srcTileIdx,
|
||||||
size_t const tileCnt) noexcept {
|
size_t const tileCnt) noexcept {
|
||||||
@ -728,8 +728,8 @@ ox::Error loadBgTileSheet(
|
|||||||
ox::Error loadBgTileSheet(
|
ox::Error loadBgTileSheet(
|
||||||
Context &ctx,
|
Context &ctx,
|
||||||
uint_t const cbb,
|
uint_t const cbb,
|
||||||
CompactTileSheet const&ts,
|
CompactTileSheet const &ts,
|
||||||
ox::Optional<unsigned> const&paletteBank) noexcept {
|
ox::Optional<unsigned> const &paletteBank) noexcept {
|
||||||
auto const bytesPerTile = static_cast<uint64_t>(PixelsPerTile / (1 + (ts.bpp == 4)));
|
auto const bytesPerTile = static_cast<uint64_t>(PixelsPerTile / (1 + (ts.bpp == 4)));
|
||||||
auto const tiles = ts.pixels.size() / bytesPerTile;
|
auto const tiles = ts.pixels.size() / bytesPerTile;
|
||||||
OX_RETURN_ERROR(loadBgTileSheet(ctx, cbb, ts, 0, 0, tiles));
|
OX_RETURN_ERROR(loadBgTileSheet(ctx, cbb, ts, 0, 0, tiles));
|
||||||
@ -742,7 +742,7 @@ ox::Error loadBgTileSheet(
|
|||||||
ox::Error loadBgTileSheet(
|
ox::Error loadBgTileSheet(
|
||||||
Context &ctx,
|
Context &ctx,
|
||||||
unsigned const cbb,
|
unsigned const cbb,
|
||||||
TileSheetSet const&set) noexcept {
|
TileSheetSet const &set) noexcept {
|
||||||
OX_REQUIRE(setTsd, buildSetTsd(ctx, set));
|
OX_REQUIRE(setTsd, buildSetTsd(ctx, set));
|
||||||
ctx.cbbs[cbb].tex = renderer::createTexture(setTsd.width, setTsd.height, setTsd.pixels.data());
|
ctx.cbbs[cbb].tex = renderer::createTexture(setTsd.width, setTsd.height, setTsd.pixels.data());
|
||||||
return {};
|
return {};
|
||||||
@ -750,7 +750,7 @@ ox::Error loadBgTileSheet(
|
|||||||
|
|
||||||
ox::Error loadSpriteTileSheet(
|
ox::Error loadSpriteTileSheet(
|
||||||
Context &ctx,
|
Context &ctx,
|
||||||
CompactTileSheet const&ts,
|
CompactTileSheet const &ts,
|
||||||
bool const loadDefaultPalette) noexcept {
|
bool const loadDefaultPalette) noexcept {
|
||||||
OX_REQUIRE(tsd, normalizeTileSheet(ts));
|
OX_REQUIRE(tsd, normalizeTileSheet(ts));
|
||||||
oxTracef("nostalgia.gfx.gl", "loadSpriteTexture: { w: {}, h: {} }", tsd.width, tsd.height);
|
oxTracef("nostalgia.gfx.gl", "loadSpriteTexture: { w: {}, h: {} }", tsd.width, tsd.height);
|
||||||
@ -763,7 +763,7 @@ ox::Error loadSpriteTileSheet(
|
|||||||
|
|
||||||
ox::Error loadSpriteTileSheet(
|
ox::Error loadSpriteTileSheet(
|
||||||
Context &ctx,
|
Context &ctx,
|
||||||
TileSheetSet const&set) noexcept {
|
TileSheetSet const &set) noexcept {
|
||||||
OX_REQUIRE(setTsd, buildSetTsd(ctx, set));
|
OX_REQUIRE(setTsd, buildSetTsd(ctx, set));
|
||||||
ctx.spriteBlocks.tex = renderer::createTexture(setTsd.width, setTsd.height, setTsd.pixels.data());
|
ctx.spriteBlocks.tex = renderer::createTexture(setTsd.width, setTsd.height, setTsd.pixels.data());
|
||||||
return {};
|
return {};
|
||||||
@ -774,7 +774,7 @@ void setBgTile(
|
|||||||
uint_t const bgIdx,
|
uint_t const bgIdx,
|
||||||
int const column,
|
int const column,
|
||||||
int const row,
|
int const row,
|
||||||
BgTile const&tile) noexcept {
|
BgTile const &tile) noexcept {
|
||||||
oxTracef(
|
oxTracef(
|
||||||
"nostalgia.gfx.setBgTile",
|
"nostalgia.gfx.setBgTile",
|
||||||
"bgIdx: {}, column: {}, row: {}, tile: {}, palBank: {}",
|
"bgIdx: {}, column: {}, row: {}, tile: {}, palBank: {}",
|
||||||
@ -853,7 +853,7 @@ void showSprite(Context &ctx, uint_t const idx) noexcept {
|
|||||||
renderer::setSprite(ctx, idx, s);
|
renderer::setSprite(ctx, idx, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setSprite(Context &ctx, uint_t const idx, Sprite const&sprite) noexcept {
|
void setSprite(Context &ctx, uint_t const idx, Sprite const &sprite) noexcept {
|
||||||
auto &s = ctx.spriteStates[idx];
|
auto &s = ctx.spriteStates[idx];
|
||||||
s = sprite;
|
s = sprite;
|
||||||
renderer::setSprite(ctx, idx, s);
|
renderer::setSprite(ctx, idx, s);
|
||||||
@ -869,7 +869,7 @@ ox::Size drawSize(int const scale) noexcept {
|
|||||||
return {240 * scale, 160 * scale};
|
return {240 * scale, 160 * scale};
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw(Context &ctx, ox::Size const&renderSz) noexcept {
|
void draw(Context &ctx, ox::Size const &renderSz) noexcept {
|
||||||
glViewport(0, 0, renderSz.width, renderSz.height);
|
glViewport(0, 0, renderSz.width, renderSz.height);
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
|
Reference in New Issue
Block a user