|
|
|
|
#include "engine/render/light_render.hpp"
|
|
|
|
|
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
#include <cassert>
|
|
|
|
|
#include <cstddef>
|
|
|
|
|
#include <cstdint>
|
|
|
|
|
#include <cstring>
|
|
|
|
|
#include <span>
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
|
|
#include "engine/displacement.hpp"
|
|
|
|
|
#include "engine/lighting_defs.hpp"
|
|
|
|
|
#include "engine/point.hpp"
|
|
|
|
|
#include "levels/dun_tile.hpp"
|
|
|
|
|
#include "levels/gendung_defs.hpp"
|
|
|
|
|
|
|
|
|
|
namespace devilution {
|
|
|
|
|
|
|
|
|
|
namespace {
|
|
|
|
|
|
|
|
|
|
std::vector<uint8_t> LightmapBuffer;
|
|
|
|
|
|
|
|
|
|
void RenderFullTile(Point position, uint8_t lightLevel, uint8_t *lightmap, uint16_t pitch)
|
|
|
|
|
{
|
|
|
|
|
uint8_t *top = lightmap + (position.y + 1) * pitch + position.x - TILE_WIDTH / 2;
|
|
|
|
|
uint8_t *bottom = top + (TILE_HEIGHT - 2) * pitch;
|
|
|
|
|
for (int y = 0, w = 4; y < TILE_HEIGHT / 2 - 1; y++, w += 4) {
|
|
|
|
|
const int x = (TILE_WIDTH - w) / 2;
|
|
|
|
|
memset(top + x, lightLevel, w);
|
|
|
|
|
memset(bottom + x, lightLevel, w);
|
|
|
|
|
top += pitch;
|
|
|
|
|
bottom -= pitch;
|
|
|
|
|
}
|
|
|
|
|
memset(top, lightLevel, TILE_WIDTH);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int DecrementTowardZero(int num)
|
|
|
|
|
{
|
|
|
|
|
return num > 0 ? num - 1 : num + 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Half-space method for drawing triangles
|
|
|
|
|
// Points must be provided using counter-clockwise rotation
|
|
|
|
|
// https://web.archive.org/web/20050408192410/http://sw-shader.sourceforge.net/rasterizer.html
|
|
|
|
|
void RenderTriangle(Point p1, Point p2, Point p3, uint8_t lightLevel, uint8_t *lightmap, uint16_t pitch, uint16_t scanLines)
|
|
|
|
|
{
|
|
|
|
|
// Deltas (points are already 28.4 fixed-point)
|
|
|
|
|
const int dx12 = p1.x - p2.x;
|
|
|
|
|
const int dx23 = p2.x - p3.x;
|
|
|
|
|
const int dx31 = p3.x - p1.x;
|
|
|
|
|
|
|
|
|
|
const int dy12 = p1.y - p2.y;
|
|
|
|
|
const int dy23 = p2.y - p3.y;
|
|
|
|
|
const int dy31 = p3.y - p1.y;
|
|
|
|
|
|
|
|
|
|
// 24.8 fixed-point deltas
|
|
|
|
|
const int fdx12 = dx12 << 4;
|
|
|
|
|
const int fdx23 = dx23 << 4;
|
|
|
|
|
const int fdx31 = dx31 << 4;
|
|
|
|
|
|
|
|
|
|
const int fdy12 = dy12 << 4;
|
|
|
|
|
const int fdy23 = dy23 << 4;
|
|
|
|
|
const int fdy31 = dy31 << 4;
|
|
|
|
|
|
|
|
|
|
// Bounding rectangle
|
|
|
|
|
const int minx = std::max((std::min({ p1.x, p2.x, p3.x }) + 0xF) >> 4, 0);
|
|
|
|
|
const int maxx = std::min<int>((std::max({ p1.x, p2.x, p3.x }) + 0xF) >> 4, pitch);
|
|
|
|
|
const int xlen = maxx - minx;
|
|
|
|
|
if (xlen <= 0) return;
|
|
|
|
|
const int miny = std::max((std::min({ p1.y, p2.y, p3.y }) + 0xF) >> 4, 0);
|
|
|
|
|
const int maxy = std::min<int>((std::max({ p1.y, p2.y, p3.y }) + 0xF) >> 4, scanLines);
|
|
|
|
|
if (maxy <= miny) return;
|
|
|
|
|
|
|
|
|
|
uint8_t *dst = lightmap + static_cast<ptrdiff_t>(miny * pitch);
|
|
|
|
|
|
|
|
|
|
// Half-edge constants
|
|
|
|
|
constexpr auto CalcHalfEdge = [](const Point &p, int dx, int dy) {
|
|
|
|
|
return (dy * p.x) - (dx * p.y) +
|
|
|
|
|
// Correct for fill convention
|
|
|
|
|
(dy < 0 || (dy == 0 && dx > 0) ? 1 : 0);
|
|
|
|
|
};
|
|
|
|
|
const int c1 = CalcHalfEdge(p1, dx12, dy12);
|
|
|
|
|
const int c2 = CalcHalfEdge(p2, dx23, dy23);
|
|
|
|
|
const int c3 = CalcHalfEdge(p3, dx31, dy31);
|
|
|
|
|
|
|
|
|
|
constexpr auto CalcCy = [](int minx, int miny, int dx, int dy) {
|
|
|
|
|
return (dx * (miny << 4)) - (dy * (minx << 4));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
int cy1 = c1 + CalcCy(minx, miny, dx12, dy12);
|
|
|
|
|
int cy2 = c2 + CalcCy(minx, miny, dx23, dy23);
|
|
|
|
|
int cy3 = c3 + CalcCy(minx, miny, dx31, dy31);
|
|
|
|
|
|
|
|
|
|
for (int y = miny; y < maxy; y++) {
|
|
|
|
|
const int cxe1 = cy1 - (fdy12 * xlen);
|
|
|
|
|
const int cxe2 = cy2 - (fdy23 * xlen);
|
|
|
|
|
const int cxe3 = cy3 - (fdy31 * xlen);
|
|
|
|
|
|
|
|
|
|
constexpr auto CalcStartX = [](int xlen, int cx, int cxe, int fdy) -> int {
|
|
|
|
|
if (cx > 0) return 0;
|
|
|
|
|
if (cxe <= 0) return xlen;
|
|
|
|
|
return (cx + DecrementTowardZero(fdy)) / fdy;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const int startx = minx + std::max({
|
|
|
|
|
CalcStartX(xlen, cy1, cxe1, fdy12),
|
|
|
|
|
CalcStartX(xlen, cy2, cxe2, fdy23),
|
|
|
|
|
CalcStartX(xlen, cy3, cxe3, fdy31),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
constexpr auto CalcEndX = [](int xlen, int cx, int cxe, int fdy) -> int {
|
|
|
|
|
if (cxe > 0) return xlen;
|
|
|
|
|
if (cx <= 0) return 0;
|
|
|
|
|
return (cx + DecrementTowardZero(fdy)) / fdy;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const int endx = minx + std::min({
|
|
|
|
|
CalcEndX(xlen, cy1, cxe1, fdy12),
|
|
|
|
|
CalcEndX(xlen, cy2, cxe2, fdy23),
|
|
|
|
|
CalcEndX(xlen, cy3, cxe3, fdy31),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (startx < endx)
|
|
|
|
|
memset(&dst[startx], lightLevel, endx - startx);
|
|
|
|
|
|
|
|
|
|
cy1 += fdx12;
|
|
|
|
|
cy2 += fdx23;
|
|
|
|
|
cy3 += fdx31;
|
|
|
|
|
|
|
|
|
|
dst += pitch;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t GetLightLevel(const uint8_t tileLights[MAXDUNX][MAXDUNY], Point tile)
|
|
|
|
|
{
|
|
|
|
|
const int x = std::clamp(tile.x, 0, MAXDUNX - 1);
|
|
|
|
|
const int y = std::clamp(tile.y, 0, MAXDUNY - 1);
|
|
|
|
|
return tileLights[x][y];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t Interpolate(int q1, int q2, int lightLevel)
|
|
|
|
|
{
|
|
|
|
|
// Result will be 28.4 fixed-point
|
|
|
|
|
const int numerator = (lightLevel - q1) << 4;
|
|
|
|
|
const int result = (numerator + 0x8) / (q2 - q1);
|
|
|
|
|
assert(result >= 0);
|
|
|
|
|
return static_cast<uint8_t>(result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RenderCell(uint8_t quad[4], Point position, uint8_t lightLevel, uint8_t *lightmap, uint16_t pitch, uint16_t scanLines)
|
|
|
|
|
{
|
|
|
|
|
const Point center0 = position;
|
|
|
|
|
const Point center1 = position + Displacement { TILE_WIDTH / 2, TILE_HEIGHT / 2 };
|
|
|
|
|
const Point center2 = position + Displacement { 0, TILE_HEIGHT };
|
|
|
|
|
const Point center3 = position + Displacement { -TILE_WIDTH / 2, TILE_HEIGHT / 2 };
|
|
|
|
|
|
|
|
|
|
// 28.4 fixed-point coordinates
|
|
|
|
|
const Point fpCenter0 = center0 * (1 << 4);
|
|
|
|
|
const Point fpCenter1 = center1 * (1 << 4);
|
|
|
|
|
const Point fpCenter2 = center2 * (1 << 4);
|
|
|
|
|
const Point fpCenter3 = center3 * (1 << 4);
|
|
|
|
|
|
|
|
|
|
// Marching squares
|
|
|
|
|
// https://en.wikipedia.org/wiki/Marching_squares
|
|
|
|
|
uint8_t shape = 0;
|
|
|
|
|
shape |= quad[0] <= lightLevel ? 8 : 0;
|
|
|
|
|
shape |= quad[1] <= lightLevel ? 4 : 0;
|
|
|
|
|
shape |= quad[2] <= lightLevel ? 2 : 0;
|
|
|
|
|
shape |= quad[3] <= lightLevel ? 1 : 0;
|
|
|
|
|
|
|
|
|
|
switch (shape) {
|
|
|
|
|
// The whole cell is darker than lightLevel
|
|
|
|
|
case 0: break;
|
|
|
|
|
|
|
|
|
|
// Fill in the bottom-left corner of the cell
|
|
|
|
|
// In isometric view, only the west tile of the quad is lit
|
|
|
|
|
case 1: {
|
|
|
|
|
const uint8_t bottomFactor = Interpolate(quad[3], quad[2], lightLevel);
|
|
|
|
|
const uint8_t leftFactor = Interpolate(quad[3], quad[0], lightLevel);
|
|
|
|
|
const Point p1 = fpCenter3 + (center2 - center3) * bottomFactor;
|
|
|
|
|
const Point p2 = fpCenter3;
|
|
|
|
|
const Point p3 = fpCenter3 + (center0 - center3) * leftFactor;
|
|
|
|
|
RenderTriangle(p1, p3, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
// Fill in the bottom-right corner of the cell
|
|
|
|
|
// In isometric view, only the south tile of the quad is lit
|
|
|
|
|
case 2: {
|
|
|
|
|
const uint8_t rightFactor = Interpolate(quad[2], quad[1], lightLevel);
|
|
|
|
|
const uint8_t bottomFactor = Interpolate(quad[2], quad[3], lightLevel);
|
|
|
|
|
const Point p1 = fpCenter2 + (center1 - center2) * rightFactor;
|
|
|
|
|
const Point p2 = fpCenter2;
|
|
|
|
|
const Point p3 = fpCenter2 + (center3 - center2) * bottomFactor;
|
|
|
|
|
RenderTriangle(p1, p3, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
// Fill in the bottom half of the cell
|
|
|
|
|
// In isometric view, the south and west tiles of the quad are lit
|
|
|
|
|
case 3: {
|
|
|
|
|
const uint8_t rightFactor = Interpolate(quad[2], quad[1], lightLevel);
|
|
|
|
|
const uint8_t leftFactor = Interpolate(quad[3], quad[0], lightLevel);
|
|
|
|
|
const Point p1 = fpCenter2 + (center1 - center2) * rightFactor;
|
|
|
|
|
const Point p2 = fpCenter2;
|
|
|
|
|
const Point p3 = fpCenter3;
|
|
|
|
|
const Point p4 = fpCenter3 + (center1 - center2) * leftFactor;
|
|
|
|
|
RenderTriangle(p1, p4, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p2, p4, p3, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
// Fill in the top-right corner of the cell
|
|
|
|
|
// In isometric view, only the east tile of the quad is lit
|
|
|
|
|
case 4: {
|
|
|
|
|
const uint8_t topFactor = Interpolate(quad[1], quad[0], lightLevel);
|
|
|
|
|
const uint8_t rightFactor = Interpolate(quad[1], quad[2], lightLevel);
|
|
|
|
|
const Point p1 = fpCenter1 + (center0 - center1) * topFactor;
|
|
|
|
|
const Point p2 = fpCenter1;
|
|
|
|
|
const Point p3 = fpCenter1 + (center2 - center1) * rightFactor;
|
|
|
|
|
RenderTriangle(p1, p3, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
// Fill in the top-right and bottom-left corners of the cell
|
|
|
|
|
// Use the average of all values in the quad to determine whether to fill in the center
|
|
|
|
|
// In isometric view, the east and west tiles of the quad are lit
|
|
|
|
|
case 5: {
|
|
|
|
|
const uint8_t cell = (quad[0] + quad[1] + quad[2] + quad[3] + 2) / 4;
|
|
|
|
|
const uint8_t topFactor = Interpolate(quad[1], quad[0], lightLevel);
|
|
|
|
|
const uint8_t rightFactor = Interpolate(quad[1], quad[2], lightLevel);
|
|
|
|
|
const uint8_t bottomFactor = Interpolate(quad[3], quad[2], lightLevel);
|
|
|
|
|
const uint8_t leftFactor = Interpolate(quad[3], quad[0], lightLevel);
|
|
|
|
|
const Point p1 = fpCenter1 + (center0 - center1) * topFactor;
|
|
|
|
|
const Point p2 = fpCenter1;
|
|
|
|
|
const Point p3 = fpCenter1 + (center2 - center1) * rightFactor;
|
|
|
|
|
const Point p4 = fpCenter3 + (center2 - center3) * bottomFactor;
|
|
|
|
|
const Point p5 = fpCenter3;
|
|
|
|
|
const Point p6 = fpCenter3 + (center0 - center3) * leftFactor;
|
|
|
|
|
|
|
|
|
|
if (cell <= lightLevel) {
|
|
|
|
|
const uint8_t midFactor0 = Interpolate(quad[0], cell, lightLevel);
|
|
|
|
|
const uint8_t midFactor2 = Interpolate(quad[2], cell, lightLevel);
|
|
|
|
|
const Point p7 = fpCenter0 + (center2 - center0) / 2 * midFactor0;
|
|
|
|
|
const Point p8 = fpCenter2 + (center0 - center2) / 2 * midFactor2;
|
|
|
|
|
RenderTriangle(p1, p7, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p2, p7, p8, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p2, p8, p3, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p4, p8, p5, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p5, p8, p7, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p5, p7, p6, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} else {
|
|
|
|
|
const uint8_t midFactor1 = Interpolate(quad[1], cell, lightLevel);
|
|
|
|
|
const uint8_t midFactor3 = Interpolate(quad[3], cell, lightLevel);
|
|
|
|
|
const Point p7 = fpCenter1 + (center3 - center1) / 2 * midFactor1;
|
|
|
|
|
const Point p8 = fpCenter3 + (center1 - center3) / 2 * midFactor3;
|
|
|
|
|
RenderTriangle(p1, p7, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p2, p7, p3, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p4, p8, p5, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p5, p8, p6, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
}
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
// Fill in the right half of the cell
|
|
|
|
|
// In isometric view, the south and east tiles of the quad are lit
|
|
|
|
|
case 6: {
|
|
|
|
|
const uint8_t topFactor = Interpolate(quad[1], quad[0], lightLevel);
|
|
|
|
|
const uint8_t bottomFactor = Interpolate(quad[2], quad[3], lightLevel);
|
|
|
|
|
const Point p1 = fpCenter1 + (center0 - center1) * topFactor;
|
|
|
|
|
const Point p2 = fpCenter1;
|
|
|
|
|
const Point p3 = fpCenter2;
|
|
|
|
|
const Point p4 = fpCenter2 + (center3 - center2) * bottomFactor;
|
|
|
|
|
RenderTriangle(p1, p4, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p2, p4, p3, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
// Fill in everything except the top-left corner of the cell
|
|
|
|
|
// In isometric view, the south, east, and west tiles of the quad are lit
|
|
|
|
|
case 7: {
|
|
|
|
|
const uint8_t topFactor = Interpolate(quad[1], quad[0], lightLevel);
|
|
|
|
|
const uint8_t leftFactor = Interpolate(quad[3], quad[0], lightLevel);
|
|
|
|
|
const Point p1 = fpCenter1 + (center0 - center1) * topFactor;
|
|
|
|
|
const Point p2 = fpCenter1;
|
|
|
|
|
const Point p3 = fpCenter2;
|
|
|
|
|
const Point p4 = fpCenter3;
|
|
|
|
|
const Point p5 = fpCenter3 + (center0 - center3) * leftFactor;
|
|
|
|
|
RenderTriangle(p1, p3, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p1, p5, p3, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p3, p5, p4, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
// Fill in the top-left corner of the cell
|
|
|
|
|
// In isometric view, only the north tile of the quad is lit
|
|
|
|
|
case 8: {
|
|
|
|
|
const uint8_t topFactor = Interpolate(quad[0], quad[1], lightLevel);
|
|
|
|
|
const uint8_t leftFactor = Interpolate(quad[0], quad[3], lightLevel);
|
|
|
|
|
const Point p1 = fpCenter0;
|
|
|
|
|
const Point p2 = fpCenter0 + (center1 - center0) * topFactor;
|
|
|
|
|
const Point p3 = fpCenter0 + (center3 - center0) * leftFactor;
|
|
|
|
|
RenderTriangle(p1, p3, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
// Fill in the left half of the cell
|
|
|
|
|
// In isometric view, the north and west tiles of the quad are lit
|
|
|
|
|
case 9: {
|
|
|
|
|
const uint8_t topFactor = Interpolate(quad[0], quad[1], lightLevel);
|
|
|
|
|
const uint8_t bottomFactor = Interpolate(quad[3], quad[2], lightLevel);
|
|
|
|
|
const Point p1 = fpCenter0;
|
|
|
|
|
const Point p2 = fpCenter0 + (center1 - center0) * topFactor;
|
|
|
|
|
const Point p3 = fpCenter3 + (center2 - center3) * bottomFactor;
|
|
|
|
|
const Point p4 = fpCenter3;
|
|
|
|
|
RenderTriangle(p1, p3, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p1, p4, p3, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
// Fill in the top-left and bottom-right corners of the cell
|
|
|
|
|
// Use the average of all values in the quad to determine whether to fill in the center
|
|
|
|
|
// In isometric view, the north and south tiles of the quad are lit
|
|
|
|
|
case 10: {
|
|
|
|
|
const uint8_t cell = (quad[0] + quad[1] + quad[2] + quad[3] + 2) / 4;
|
|
|
|
|
const uint8_t topFactor = Interpolate(quad[0], quad[1], lightLevel);
|
|
|
|
|
const uint8_t rightFactor = Interpolate(quad[2], quad[1], lightLevel);
|
|
|
|
|
const uint8_t bottomFactor = Interpolate(quad[2], quad[3], lightLevel);
|
|
|
|
|
const uint8_t leftFactor = Interpolate(quad[0], quad[3], lightLevel);
|
|
|
|
|
const Point p1 = fpCenter0;
|
|
|
|
|
const Point p2 = fpCenter0 + (center1 - center0) * topFactor;
|
|
|
|
|
const Point p3 = fpCenter2 + (center1 - center2) * rightFactor;
|
|
|
|
|
const Point p4 = fpCenter2;
|
|
|
|
|
const Point p5 = fpCenter2 + (center3 - center2) * bottomFactor;
|
|
|
|
|
const Point p6 = fpCenter0 + (center3 - center0) * leftFactor;
|
|
|
|
|
|
|
|
|
|
if (cell <= lightLevel) {
|
|
|
|
|
const uint8_t midFactor1 = Interpolate(quad[1], cell, lightLevel);
|
|
|
|
|
const uint8_t midFactor3 = Interpolate(quad[3], cell, lightLevel);
|
|
|
|
|
const Point p7 = fpCenter1 + (center3 - center1) / 2 * midFactor1;
|
|
|
|
|
const Point p8 = fpCenter3 + (center1 - center3) / 2 * midFactor3;
|
|
|
|
|
RenderTriangle(p1, p7, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p1, p6, p8, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p1, p8, p7, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p3, p7, p4, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p4, p8, p5, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p4, p7, p8, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} else {
|
|
|
|
|
const uint8_t midFactor0 = Interpolate(quad[0], cell, lightLevel);
|
|
|
|
|
const uint8_t midFactor2 = Interpolate(quad[2], cell, lightLevel);
|
|
|
|
|
const Point p7 = fpCenter0 + (center2 - center0) / 2 * midFactor0;
|
|
|
|
|
const Point p8 = fpCenter2 + (center0 - center2) / 2 * midFactor2;
|
|
|
|
|
RenderTriangle(p1, p7, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p1, p6, p7, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p3, p8, p4, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p4, p8, p5, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
}
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
// Fill in everything except the top-right corner of the cell
|
|
|
|
|
// In isometric view, the north, south, and west tiles of the quad are lit
|
|
|
|
|
case 11: {
|
|
|
|
|
const uint8_t topFactor = Interpolate(quad[0], quad[1], lightLevel);
|
|
|
|
|
const uint8_t rightFactor = Interpolate(quad[2], quad[1], lightLevel);
|
|
|
|
|
const Point p1 = fpCenter0;
|
|
|
|
|
const Point p2 = fpCenter0 + (center1 - center0) * topFactor;
|
|
|
|
|
const Point p3 = fpCenter2 + (center1 - center2) * rightFactor;
|
|
|
|
|
const Point p4 = fpCenter2;
|
|
|
|
|
const Point p5 = fpCenter3;
|
|
|
|
|
RenderTriangle(p1, p5, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p2, p5, p3, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p3, p5, p4, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
// Fill in the top half of the cell
|
|
|
|
|
// In isometric view, the north and east tiles of the quad are lit
|
|
|
|
|
case 12: {
|
|
|
|
|
const uint8_t rightFactor = Interpolate(quad[1], quad[2], lightLevel);
|
|
|
|
|
const uint8_t leftFactor = Interpolate(quad[0], quad[3], lightLevel);
|
|
|
|
|
const Point p1 = fpCenter0;
|
|
|
|
|
const Point p2 = fpCenter1;
|
|
|
|
|
const Point p3 = fpCenter1 + (center2 - center1) * rightFactor;
|
|
|
|
|
const Point p4 = fpCenter0 + (center3 - center0) * leftFactor;
|
|
|
|
|
RenderTriangle(p1, p3, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p1, p4, p3, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
// Fill in everything except the bottom-right corner of the cell
|
|
|
|
|
// In isometric view, the north, east, and west tiles of the quad are lit
|
|
|
|
|
case 13: {
|
|
|
|
|
const uint8_t rightFactor = Interpolate(quad[1], quad[2], lightLevel);
|
|
|
|
|
const uint8_t bottomFactor = Interpolate(quad[3], quad[2], lightLevel);
|
|
|
|
|
const Point p1 = fpCenter0;
|
|
|
|
|
const Point p2 = fpCenter1;
|
|
|
|
|
const Point p3 = fpCenter1 + (center2 - center1) * rightFactor;
|
|
|
|
|
const Point p4 = fpCenter3 + (center2 - center3) * bottomFactor;
|
|
|
|
|
const Point p5 = fpCenter3;
|
|
|
|
|
RenderTriangle(p1, p3, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p1, p4, p3, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p1, p5, p4, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
// Fill in everything except the bottom-left corner of the cell
|
|
|
|
|
// In isometric view, the north, south, and east tiles of the quad are lit
|
|
|
|
|
case 14: {
|
|
|
|
|
const uint8_t bottomFactor = Interpolate(quad[2], quad[3], lightLevel);
|
|
|
|
|
const uint8_t leftFactor = Interpolate(quad[0], quad[3], lightLevel);
|
|
|
|
|
const Point p1 = fpCenter0;
|
|
|
|
|
const Point p2 = fpCenter1;
|
|
|
|
|
const Point p3 = fpCenter2;
|
|
|
|
|
const Point p4 = fpCenter2 + (center3 - center2) * bottomFactor;
|
|
|
|
|
const Point p5 = fpCenter0 + (center3 - center0) * leftFactor;
|
|
|
|
|
RenderTriangle(p1, p5, p2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p2, p5, p4, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(p2, p4, p3, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} break;
|
|
|
|
|
|
|
|
|
|
// Fill in the whole cell
|
|
|
|
|
// All four tiles in the quad are lit
|
|
|
|
|
case 15: {
|
|
|
|
|
if (center3.x < 0 || center1.x >= pitch || center0.y < 0 || center2.y >= scanLines) {
|
|
|
|
|
RenderTriangle(fpCenter0, fpCenter2, fpCenter1, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
RenderTriangle(fpCenter0, fpCenter3, fpCenter2, lightLevel, lightmap, pitch, scanLines);
|
|
|
|
|
} else {
|
|
|
|
|
// Optimized rendering path if full tile is visible
|
|
|
|
|
RenderFullTile(center0, lightLevel, lightmap, pitch);
|
|
|
|
|
}
|
|
|
|
|
} break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void BuildLightmap(Point tilePosition, Point targetBufferPosition, uint16_t viewportWidth, uint16_t viewportHeight,
|
|
|
|
|
int rows, int columns, const uint8_t tileLights[MAXDUNX][MAXDUNY], uint_fast8_t microTileLen)
|
|
|
|
|
{
|
|
|
|
|
// Since light may need to bleed up to the top of wall tiles,
|
|
|
|
|
// expand the buffer space to include the full base diamond of the tallest tile graphics
|
|
|
|
|
const uint16_t bufferHeight = viewportHeight + TILE_HEIGHT * (microTileLen / 2 + 1);
|
|
|
|
|
rows += microTileLen + 2;
|
|
|
|
|
|
|
|
|
|
const size_t totalPixels = static_cast<size_t>(viewportWidth) * bufferHeight;
|
|
|
|
|
LightmapBuffer.resize(totalPixels);
|
|
|
|
|
|
|
|
|
|
// Since rendering occurs in cells between quads,
|
|
|
|
|
// expand the rendering space to include tiles outside the viewport
|
|
|
|
|
tilePosition += Displacement(Direction::NorthWest) * 2;
|
|
|
|
|
targetBufferPosition -= Displacement { TILE_WIDTH, TILE_HEIGHT };
|
|
|
|
|
rows += 3;
|
|
|
|
|
columns++;
|
|
|
|
|
|
|
|
|
|
uint8_t *lightmap = LightmapBuffer.data();
|
|
|
|
|
memset(lightmap, LightsMax, totalPixels);
|
|
|
|
|
for (int i = 0; i < rows; i++) {
|
|
|
|
|
for (int j = 0; j < columns; j++, tilePosition += Direction::East, targetBufferPosition.x += TILE_WIDTH) {
|
|
|
|
|
const Point center0 = targetBufferPosition + Displacement { TILE_WIDTH / 2, -TILE_HEIGHT / 2 };
|
|
|
|
|
|
|
|
|
|
const Point tile0 = tilePosition;
|
|
|
|
|
const Point tile1 = tilePosition + Displacement { 1, 0 };
|
|
|
|
|
const Point tile2 = tilePosition + Displacement { 1, 1 };
|
|
|
|
|
const Point tile3 = tilePosition + Displacement { 0, 1 };
|
|
|
|
|
|
|
|
|
|
uint8_t quad[] = {
|
|
|
|
|
GetLightLevel(tileLights, tile0),
|
|
|
|
|
GetLightLevel(tileLights, tile1),
|
|
|
|
|
GetLightLevel(tileLights, tile2),
|
|
|
|
|
GetLightLevel(tileLights, tile3)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const uint8_t maxLight = std::max({ quad[0], quad[1], quad[2], quad[3] });
|
|
|
|
|
const uint8_t minLight = std::min({ quad[0], quad[1], quad[2], quad[3] });
|
|
|
|
|
|
|
|
|
|
for (uint8_t i = 0; i < LightsMax; i++) {
|
|
|
|
|
const uint8_t lightLevel = LightsMax - i - 1;
|
|
|
|
|
if (lightLevel > maxLight)
|
|
|
|
|
continue;
|
|
|
|
|
if (lightLevel < minLight)
|
|
|
|
|
break;
|
|
|
|
|
RenderCell(quad, center0, lightLevel, lightmap, viewportWidth, bufferHeight);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Return to start of row
|
|
|
|
|
tilePosition += Displacement(Direction::West) * columns;
|
|
|
|
|
targetBufferPosition.x -= columns * TILE_WIDTH;
|
|
|
|
|
|
|
|
|
|
// Jump to next row
|
|
|
|
|
targetBufferPosition.y += TILE_HEIGHT / 2;
|
|
|
|
|
if ((i & 1) != 0) {
|
|
|
|
|
tilePosition.x++;
|
|
|
|
|
columns--;
|
|
|
|
|
targetBufferPosition.x += TILE_WIDTH / 2;
|
|
|
|
|
} else {
|
|
|
|
|
tilePosition.y++;
|
|
|
|
|
columns++;
|
|
|
|
|
targetBufferPosition.x -= TILE_WIDTH / 2;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace
|
|
|
|
|
|
|
|
|
|
Lightmap::Lightmap(const uint8_t *outBuffer, uint16_t outPitch,
|
|
|
|
|
std::span<const uint8_t> lightmapBuffer, uint16_t lightmapPitch,
|
Make `dun_render` a standalone library
Does not make `dun_render_benchmark` standalone yet as that will require
more untangling.
Benchmark is neutral:
```
Benchmark Time CPU Time Old Time New CPU Old CPU New
----------------------------------------------------------------------------------------------------------------------------------------------------------
Render<LeftTriangle, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, FullyLit>_mean +0.0119 +0.0120 8377 8477 8375 8475
Render<LeftTriangle, Solid, FullyLit>_median +0.0119 +0.0119 8376 8477 8375 8475
Render<LeftTriangle, Solid, FullyLit>_stddev -0.0884 -0.2462 2 1 1 1
Render<LeftTriangle, Solid, FullyLit>_cv -0.0992 -0.2551 0 0 0 0
Render<LeftTriangle, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, FullyDark>_mean +0.0910 +0.0910 21174 23100 21170 23097
Render<LeftTriangle, Solid, FullyDark>_median +0.0869 +0.0869 21183 23023 21179 23019
Render<LeftTriangle, Solid, FullyDark>_stddev -0.1528 -0.1593 267 226 268 225
Render<LeftTriangle, Solid, FullyDark>_cv -0.2234 -0.2294 0 0 0 0
Render<LeftTriangle, Solid, PartiallyLit>_pvalue 0.0013 0.0013 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, PartiallyLit>_mean +0.0065 +0.0065 81168 81698 81151 81680
Render<LeftTriangle, Solid, PartiallyLit>_median +0.0075 +0.0073 81143 81748 81136 81730
Render<LeftTriangle, Solid, PartiallyLit>_stddev +0.8663 +0.8787 167 311 164 307
Render<LeftTriangle, Solid, PartiallyLit>_cv +0.8542 +0.8665 0 0 0 0
Render<LeftTriangle, Transparent, FullyLit>_pvalue 0.0028 0.0017 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, FullyLit>_mean -0.0239 -0.0239 94989 92719 94973 92703
Render<LeftTriangle, Transparent, FullyLit>_median -0.0122 -0.0123 93867 92717 93856 92704
Render<LeftTriangle, Transparent, FullyLit>_stddev -0.9920 -0.9955 2370 19 2368 11
Render<LeftTriangle, Transparent, FullyLit>_cv -0.9918 -0.9954 0 0 0 0
Render<LeftTriangle, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, FullyDark>_mean -0.0841 -0.0841 76234 69821 76220 69809
Render<LeftTriangle, Transparent, FullyDark>_median -0.0831 -0.0832 76209 69877 76202 69864
Render<LeftTriangle, Transparent, FullyDark>_stddev -0.4486 -0.4538 441 243 440 241
Render<LeftTriangle, Transparent, FullyDark>_cv -0.3979 -0.4037 0 0 0 0
Render<LeftTriangle, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, PartiallyLit>_mean +0.0022 +0.0021 128812 129091 128792 129067
Render<LeftTriangle, Transparent, PartiallyLit>_median +0.0023 +0.0023 128820 129115 128805 129096
Render<LeftTriangle, Transparent, PartiallyLit>_stddev +0.8757 +0.6866 50 93 53 90
Render<LeftTriangle, Transparent, PartiallyLit>_cv +0.8716 +0.6830 0 0 0 0
Render<RightTriangle, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, FullyLit>_mean +0.0057 +0.0057 8521 8570 8520 8569
Render<RightTriangle, Solid, FullyLit>_median +0.0057 +0.0057 8522 8570 8520 8568
Render<RightTriangle, Solid, FullyLit>_stddev -0.1826 -0.0420 1 1 1 1
Render<RightTriangle, Solid, FullyLit>_cv -0.1872 -0.0475 0 0 0 0
Render<RightTriangle, Solid, FullyDark>_pvalue 0.0006 0.0006 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, FullyDark>_mean -0.0303 -0.0303 22678 21991 22675 21987
Render<RightTriangle, Solid, FullyDark>_median -0.0360 -0.0359 22704 21888 22699 21883
Render<RightTriangle, Solid, FullyDark>_stddev +0.4759 +0.4648 195 288 196 287
Render<RightTriangle, Solid, FullyDark>_cv +0.5220 +0.5106 0 0 0 0
Render<RightTriangle, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, PartiallyLit>_mean +0.0338 +0.0338 83355 86170 83341 86157
Render<RightTriangle, Solid, PartiallyLit>_median +0.0347 +0.0348 83248 86140 83230 86126
Render<RightTriangle, Solid, PartiallyLit>_stddev +0.3670 +0.3423 238 326 240 322
Render<RightTriangle, Solid, PartiallyLit>_cv +0.3224 +0.2985 0 0 0 0
Render<RightTriangle, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, FullyLit>_mean -0.0617 -0.0616 102726 96392 102706 96375
Render<RightTriangle, Transparent, FullyLit>_median -0.0598 -0.0597 102521 96394 102498 96375
Render<RightTriangle, Transparent, FullyLit>_stddev -0.9516 -0.9548 456 22 461 21
Render<RightTriangle, Transparent, FullyLit>_cv -0.9485 -0.9518 0 0 0 0
Render<RightTriangle, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, FullyDark>_mean -0.1377 -0.1377 84505 72865 84492 72853
Render<RightTriangle, Transparent, FullyDark>_median -0.1374 -0.1374 84339 72748 84323 72740
Render<RightTriangle, Transparent, FullyDark>_stddev -0.2760 -0.2867 526 381 528 377
Render<RightTriangle, Transparent, FullyDark>_cv -0.1604 -0.1727 0 0 0 0
Render<RightTriangle, Transparent, PartiallyLit>_pvalue 0.0036 0.0017 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, PartiallyLit>_mean +0.0010 +0.0010 131672 131808 131649 131784
Render<RightTriangle, Transparent, PartiallyLit>_median +0.0010 +0.0008 131665 131797 131654 131757
Render<RightTriangle, Transparent, PartiallyLit>_stddev -0.0688 -0.0128 81 75 72 71
Render<RightTriangle, Transparent, PartiallyLit>_cv -0.0697 -0.0138 0 0 0 0
Render<TransparentSquare, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, FullyLit>_mean -0.0300 -0.0300 143323 139021 143300 139000
Render<TransparentSquare, Solid, FullyLit>_median -0.0300 -0.0301 143321 139014 143310 138990
Render<TransparentSquare, Solid, FullyLit>_stddev +0.0008 -0.0820 43 43 43 39
Render<TransparentSquare, Solid, FullyLit>_cv +0.0318 -0.0536 0 0 0 0
Render<TransparentSquare, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, FullyDark>_mean -0.0100 -0.0100 134939 133588 134914 133565
Render<TransparentSquare, Solid, FullyDark>_median -0.0106 -0.0108 134964 133526 134948 133497
Render<TransparentSquare, Solid, FullyDark>_stddev +1.7508 +1.8682 99 273 96 276
Render<TransparentSquare, Solid, FullyDark>_cv +1.7786 +1.8972 0 0 0 0
Render<TransparentSquare, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, PartiallyLit>_mean -0.0460 -0.0460 152043 145043 152016 145020
Render<TransparentSquare, Solid, PartiallyLit>_median -0.0463 -0.0461 152012 144978 151964 144962
Render<TransparentSquare, Solid, PartiallyLit>_stddev -0.4453 -0.4334 267 148 266 151
Render<TransparentSquare, Solid, PartiallyLit>_cv -0.4185 -0.4060 0 0 0 0
Render<TransparentSquare, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, FullyLit>_mean -0.0846 -0.0846 181333 165997 181304 165969
Render<TransparentSquare, Transparent, FullyLit>_median -0.0840 -0.0839 181184 165972 181147 165945
Render<TransparentSquare, Transparent, FullyLit>_stddev -0.5808 -0.5755 319 134 320 136
Render<TransparentSquare, Transparent, FullyLit>_cv -0.5421 -0.5362 0 0 0 0
Render<TransparentSquare, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, FullyDark>_mean -0.0250 -0.0250 142232 138672 142208 138648
Render<TransparentSquare, Transparent, FullyDark>_median -0.0245 -0.0245 142144 138663 142128 138639
Render<TransparentSquare, Transparent, FullyDark>_stddev +0.1011 +0.0806 288 317 290 313
Render<TransparentSquare, Transparent, FullyDark>_cv +0.1294 +0.1084 0 0 0 0
Render<TransparentSquare, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, PartiallyLit>_mean +0.0105 +0.0105 205439 207589 205397 207556
Render<TransparentSquare, Transparent, PartiallyLit>_median +0.0106 +0.0107 205402 207575 205355 207558
Render<TransparentSquare, Transparent, PartiallyLit>_stddev -0.4410 -0.3876 182 102 167 102
Render<TransparentSquare, Transparent, PartiallyLit>_cv -0.4468 -0.3940 0 0 0 0
Render<Square, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, FullyLit>_mean -0.0010 -0.0010 11109 11098 11107 11096
Render<Square, Solid, FullyLit>_median -0.0010 -0.0010 11109 11097 11107 11095
Render<Square, Solid, FullyLit>_stddev -0.2265 +0.2791 3 2 2 2
Render<Square, Solid, FullyLit>_cv -0.2257 +0.2804 0 0 0 0
Render<Square, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, FullyDark>_mean +0.0904 +0.0904 8513 9283 8512 9282
Render<Square, Solid, FullyDark>_median +0.0902 +0.0902 8521 9290 8519 9288
Render<Square, Solid, FullyDark>_stddev -0.1884 -0.1616 21 17 21 18
Render<Square, Solid, FullyDark>_cv -0.2557 -0.2311 0 0 0 0
Render<Square, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, PartiallyLit>_mean +0.0038 +0.0038 163661 164289 163632 164259
Render<Square, Solid, PartiallyLit>_median +0.0038 +0.0040 163665 164290 163621 164269
Render<Square, Solid, PartiallyLit>_stddev +0.1746 +0.4412 34 40 28 40
Render<Square, Solid, PartiallyLit>_cv +0.1701 +0.4356 0 0 0 0
Render<Square, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, FullyLit>_mean -0.0029 -0.0029 197906 197340 197876 197304
Render<Square, Transparent, FullyLit>_median -0.0030 -0.0029 197929 197339 197872 197307
Render<Square, Transparent, FullyLit>_stddev -0.5965 -0.7554 61 25 62 15
Render<Square, Transparent, FullyLit>_cv -0.5953 -0.7547 0 0 0 0
Render<Square, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, FullyDark>_mean -0.0163 -0.0163 125659 123607 125641 123588
Render<Square, Transparent, FullyDark>_median -0.0163 -0.0163 125651 123609 125629 123579
Render<Square, Transparent, FullyDark>_stddev -0.7943 -0.8033 180 37 181 36
Render<Square, Transparent, FullyDark>_cv -0.7909 -0.8000 0 0 0 0
Render<Square, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, PartiallyLit>_mean +0.0182 +0.0182 278103 283157 278043 283107
Render<Square, Transparent, PartiallyLit>_median +0.0184 +0.0184 278086 283190 278017 283120
Render<Square, Transparent, PartiallyLit>_stddev +1.6051 +1.5303 81 210 82 209
Render<Square, Transparent, PartiallyLit>_cv +1.5586 +1.4850 0 0 0 0
Render<LeftTrapezoid, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, FullyLit>_mean -0.0068 -0.0068 3299 3276 3298 3276
Render<LeftTrapezoid, Solid, FullyLit>_median -0.0068 -0.0068 3299 3276 3298 3276
Render<LeftTrapezoid, Solid, FullyLit>_stddev -0.4844 -0.6856 1 0 1 0
Render<LeftTrapezoid, Solid, FullyLit>_cv -0.4809 -0.6834 0 0 0 0
Render<LeftTrapezoid, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, FullyDark>_mean +0.3996 +0.3997 5163 7227 5162 7226
Render<LeftTrapezoid, Solid, FullyDark>_median +0.3973 +0.3974 5174 7230 5173 7229
Render<LeftTrapezoid, Solid, FullyDark>_stddev -0.7835 -0.7789 89 19 89 20
Render<LeftTrapezoid, Solid, FullyDark>_cv -0.8453 -0.8420 0 0 0 0
Render<LeftTrapezoid, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, PartiallyLit>_mean -0.1228 -0.1228 50053 43907 50044 43900
Render<LeftTrapezoid, Solid, PartiallyLit>_median -0.1228 -0.1228 50062 43916 50054 43906
Render<LeftTrapezoid, Solid, PartiallyLit>_stddev +1.3916 +1.3800 63 150 64 151
Render<LeftTrapezoid, Solid, PartiallyLit>_cv +1.7263 +1.7131 0 0 0 0
Render<LeftTrapezoid, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, FullyLit>_mean -0.1584 -0.1583 62677 52751 62665 52743
Render<LeftTrapezoid, Transparent, FullyLit>_median -0.1585 -0.1585 62670 52736 62656 52728
Render<LeftTrapezoid, Transparent, FullyLit>_stddev +1.1429 +1.4086 26 55 23 55
Render<LeftTrapezoid, Transparent, FullyLit>_cv +1.5461 +1.8617 0 0 0 0
Render<LeftTrapezoid, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, FullyDark>_mean -0.1929 -0.1929 57688 46558 57679 46551
Render<LeftTrapezoid, Transparent, FullyDark>_median -0.1943 -0.1944 57681 46473 57672 46459
Render<LeftTrapezoid, Transparent, FullyDark>_stddev +2.8190 +2.7914 62 237 63 238
Render<LeftTrapezoid, Transparent, FullyDark>_cv +3.7319 +3.6978 0 0 0 0
Render<LeftTrapezoid, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, PartiallyLit>_mean -0.0054 -0.0054 70694 70313 70682 70301
Render<LeftTrapezoid, Transparent, PartiallyLit>_median -0.0050 -0.0048 70671 70319 70650 70311
Render<LeftTrapezoid, Transparent, PartiallyLit>_stddev -0.7448 -0.7617 163 42 168 40
Render<LeftTrapezoid, Transparent, PartiallyLit>_cv -0.7434 -0.7604 0 0 0 0
Render<RightTrapezoid, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, FullyLit>_mean +0.0123 +0.0123 2985 3022 2984 3021
Render<RightTrapezoid, Solid, FullyLit>_median +0.0123 +0.0123 2985 3021 2984 3021
Render<RightTrapezoid, Solid, FullyLit>_stddev -0.4207 -0.4667 1 0 1 0
Render<RightTrapezoid, Solid, FullyLit>_cv -0.4277 -0.4731 0 0 0 0
Render<RightTrapezoid, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, FullyDark>_mean +0.1105 +0.1105 4894 5435 4893 5434
Render<RightTrapezoid, Solid, FullyDark>_median +0.1083 +0.1082 4902 5433 4901 5432
Render<RightTrapezoid, Solid, FullyDark>_stddev -0.1973 -0.1947 45 37 45 37
Render<RightTrapezoid, Solid, FullyDark>_cv -0.2772 -0.2748 0 0 0 0
Render<RightTrapezoid, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, PartiallyLit>_mean -0.0169 -0.0169 48201 47386 48192 47379
Render<RightTrapezoid, Solid, PartiallyLit>_median -0.0172 -0.0170 48184 47355 48170 47351
Render<RightTrapezoid, Solid, PartiallyLit>_stddev +0.6070 +0.5204 48 78 50 76
Render<RightTrapezoid, Solid, PartiallyLit>_cv +0.6346 +0.5465 0 0 0 0
Render<RightTrapezoid, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, FullyLit>_mean -0.0023 -0.0023 48751 48639 48742 48632
Render<RightTrapezoid, Transparent, FullyLit>_median -0.0020 -0.0018 48751 48654 48738 48651
Render<RightTrapezoid, Transparent, FullyLit>_stddev +2.4354 +2.4427 10 35 11 36
Render<RightTrapezoid, Transparent, FullyLit>_cv +2.4433 +2.4505 0 0 0 0
Render<RightTrapezoid, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, FullyDark>_mean -0.2247 -0.2247 40942 31742 40936 31736
Render<RightTrapezoid, Transparent, FullyDark>_median -0.2241 -0.2240 40904 31739 40895 31734
Render<RightTrapezoid, Transparent, FullyDark>_stddev -0.3455 -0.3546 165 108 167 108
Render<RightTrapezoid, Transparent, FullyDark>_cv -0.1558 -0.1676 0 0 0 0
Render<RightTrapezoid, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, PartiallyLit>_mean -0.0908 -0.0908 74269 67523 74256 67512
Render<RightTrapezoid, Transparent, PartiallyLit>_median -0.0898 -0.0897 74196 67536 74176 67523
Render<RightTrapezoid, Transparent, PartiallyLit>_stddev -0.6590 -0.6568 147 50 146 50
Render<RightTrapezoid, Transparent, PartiallyLit>_cv -0.6250 -0.6225 0 0 0 0
BM_RenderBlackTile_pvalue 0.0539 0.0539 U Test, Repetitions: 10 vs 10
BM_RenderBlackTile_mean -0.0188 -0.0188 125 123 125 123
BM_RenderBlackTile_median -0.0263 -0.0264 126 122 125 122
BM_RenderBlackTile_stddev +1.0907 +1.0966 1 3 1 3
BM_RenderBlackTile_cv +1.1307 +1.1368 0 0 0 0
OVERALL_GEOMEAN -0.0207 -0.0207 0 0 0 0
```
8 months ago
|
|
|
std::span<const std::array<uint8_t, LightTableSize>, NumLightingLevels> lightTables,
|
|
|
|
|
const uint8_t *fullyLitLightTable, const uint8_t *fullyDarkLightTable)
|
|
|
|
|
: outBuffer(outBuffer)
|
|
|
|
|
, outPitch(outPitch)
|
|
|
|
|
, lightmapBuffer(lightmapBuffer)
|
|
|
|
|
, lightmapPitch(lightmapPitch)
|
|
|
|
|
, lightTables(lightTables)
|
Make `dun_render` a standalone library
Does not make `dun_render_benchmark` standalone yet as that will require
more untangling.
Benchmark is neutral:
```
Benchmark Time CPU Time Old Time New CPU Old CPU New
----------------------------------------------------------------------------------------------------------------------------------------------------------
Render<LeftTriangle, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, FullyLit>_mean +0.0119 +0.0120 8377 8477 8375 8475
Render<LeftTriangle, Solid, FullyLit>_median +0.0119 +0.0119 8376 8477 8375 8475
Render<LeftTriangle, Solid, FullyLit>_stddev -0.0884 -0.2462 2 1 1 1
Render<LeftTriangle, Solid, FullyLit>_cv -0.0992 -0.2551 0 0 0 0
Render<LeftTriangle, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, FullyDark>_mean +0.0910 +0.0910 21174 23100 21170 23097
Render<LeftTriangle, Solid, FullyDark>_median +0.0869 +0.0869 21183 23023 21179 23019
Render<LeftTriangle, Solid, FullyDark>_stddev -0.1528 -0.1593 267 226 268 225
Render<LeftTriangle, Solid, FullyDark>_cv -0.2234 -0.2294 0 0 0 0
Render<LeftTriangle, Solid, PartiallyLit>_pvalue 0.0013 0.0013 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, PartiallyLit>_mean +0.0065 +0.0065 81168 81698 81151 81680
Render<LeftTriangle, Solid, PartiallyLit>_median +0.0075 +0.0073 81143 81748 81136 81730
Render<LeftTriangle, Solid, PartiallyLit>_stddev +0.8663 +0.8787 167 311 164 307
Render<LeftTriangle, Solid, PartiallyLit>_cv +0.8542 +0.8665 0 0 0 0
Render<LeftTriangle, Transparent, FullyLit>_pvalue 0.0028 0.0017 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, FullyLit>_mean -0.0239 -0.0239 94989 92719 94973 92703
Render<LeftTriangle, Transparent, FullyLit>_median -0.0122 -0.0123 93867 92717 93856 92704
Render<LeftTriangle, Transparent, FullyLit>_stddev -0.9920 -0.9955 2370 19 2368 11
Render<LeftTriangle, Transparent, FullyLit>_cv -0.9918 -0.9954 0 0 0 0
Render<LeftTriangle, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, FullyDark>_mean -0.0841 -0.0841 76234 69821 76220 69809
Render<LeftTriangle, Transparent, FullyDark>_median -0.0831 -0.0832 76209 69877 76202 69864
Render<LeftTriangle, Transparent, FullyDark>_stddev -0.4486 -0.4538 441 243 440 241
Render<LeftTriangle, Transparent, FullyDark>_cv -0.3979 -0.4037 0 0 0 0
Render<LeftTriangle, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, PartiallyLit>_mean +0.0022 +0.0021 128812 129091 128792 129067
Render<LeftTriangle, Transparent, PartiallyLit>_median +0.0023 +0.0023 128820 129115 128805 129096
Render<LeftTriangle, Transparent, PartiallyLit>_stddev +0.8757 +0.6866 50 93 53 90
Render<LeftTriangle, Transparent, PartiallyLit>_cv +0.8716 +0.6830 0 0 0 0
Render<RightTriangle, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, FullyLit>_mean +0.0057 +0.0057 8521 8570 8520 8569
Render<RightTriangle, Solid, FullyLit>_median +0.0057 +0.0057 8522 8570 8520 8568
Render<RightTriangle, Solid, FullyLit>_stddev -0.1826 -0.0420 1 1 1 1
Render<RightTriangle, Solid, FullyLit>_cv -0.1872 -0.0475 0 0 0 0
Render<RightTriangle, Solid, FullyDark>_pvalue 0.0006 0.0006 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, FullyDark>_mean -0.0303 -0.0303 22678 21991 22675 21987
Render<RightTriangle, Solid, FullyDark>_median -0.0360 -0.0359 22704 21888 22699 21883
Render<RightTriangle, Solid, FullyDark>_stddev +0.4759 +0.4648 195 288 196 287
Render<RightTriangle, Solid, FullyDark>_cv +0.5220 +0.5106 0 0 0 0
Render<RightTriangle, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, PartiallyLit>_mean +0.0338 +0.0338 83355 86170 83341 86157
Render<RightTriangle, Solid, PartiallyLit>_median +0.0347 +0.0348 83248 86140 83230 86126
Render<RightTriangle, Solid, PartiallyLit>_stddev +0.3670 +0.3423 238 326 240 322
Render<RightTriangle, Solid, PartiallyLit>_cv +0.3224 +0.2985 0 0 0 0
Render<RightTriangle, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, FullyLit>_mean -0.0617 -0.0616 102726 96392 102706 96375
Render<RightTriangle, Transparent, FullyLit>_median -0.0598 -0.0597 102521 96394 102498 96375
Render<RightTriangle, Transparent, FullyLit>_stddev -0.9516 -0.9548 456 22 461 21
Render<RightTriangle, Transparent, FullyLit>_cv -0.9485 -0.9518 0 0 0 0
Render<RightTriangle, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, FullyDark>_mean -0.1377 -0.1377 84505 72865 84492 72853
Render<RightTriangle, Transparent, FullyDark>_median -0.1374 -0.1374 84339 72748 84323 72740
Render<RightTriangle, Transparent, FullyDark>_stddev -0.2760 -0.2867 526 381 528 377
Render<RightTriangle, Transparent, FullyDark>_cv -0.1604 -0.1727 0 0 0 0
Render<RightTriangle, Transparent, PartiallyLit>_pvalue 0.0036 0.0017 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, PartiallyLit>_mean +0.0010 +0.0010 131672 131808 131649 131784
Render<RightTriangle, Transparent, PartiallyLit>_median +0.0010 +0.0008 131665 131797 131654 131757
Render<RightTriangle, Transparent, PartiallyLit>_stddev -0.0688 -0.0128 81 75 72 71
Render<RightTriangle, Transparent, PartiallyLit>_cv -0.0697 -0.0138 0 0 0 0
Render<TransparentSquare, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, FullyLit>_mean -0.0300 -0.0300 143323 139021 143300 139000
Render<TransparentSquare, Solid, FullyLit>_median -0.0300 -0.0301 143321 139014 143310 138990
Render<TransparentSquare, Solid, FullyLit>_stddev +0.0008 -0.0820 43 43 43 39
Render<TransparentSquare, Solid, FullyLit>_cv +0.0318 -0.0536 0 0 0 0
Render<TransparentSquare, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, FullyDark>_mean -0.0100 -0.0100 134939 133588 134914 133565
Render<TransparentSquare, Solid, FullyDark>_median -0.0106 -0.0108 134964 133526 134948 133497
Render<TransparentSquare, Solid, FullyDark>_stddev +1.7508 +1.8682 99 273 96 276
Render<TransparentSquare, Solid, FullyDark>_cv +1.7786 +1.8972 0 0 0 0
Render<TransparentSquare, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, PartiallyLit>_mean -0.0460 -0.0460 152043 145043 152016 145020
Render<TransparentSquare, Solid, PartiallyLit>_median -0.0463 -0.0461 152012 144978 151964 144962
Render<TransparentSquare, Solid, PartiallyLit>_stddev -0.4453 -0.4334 267 148 266 151
Render<TransparentSquare, Solid, PartiallyLit>_cv -0.4185 -0.4060 0 0 0 0
Render<TransparentSquare, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, FullyLit>_mean -0.0846 -0.0846 181333 165997 181304 165969
Render<TransparentSquare, Transparent, FullyLit>_median -0.0840 -0.0839 181184 165972 181147 165945
Render<TransparentSquare, Transparent, FullyLit>_stddev -0.5808 -0.5755 319 134 320 136
Render<TransparentSquare, Transparent, FullyLit>_cv -0.5421 -0.5362 0 0 0 0
Render<TransparentSquare, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, FullyDark>_mean -0.0250 -0.0250 142232 138672 142208 138648
Render<TransparentSquare, Transparent, FullyDark>_median -0.0245 -0.0245 142144 138663 142128 138639
Render<TransparentSquare, Transparent, FullyDark>_stddev +0.1011 +0.0806 288 317 290 313
Render<TransparentSquare, Transparent, FullyDark>_cv +0.1294 +0.1084 0 0 0 0
Render<TransparentSquare, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, PartiallyLit>_mean +0.0105 +0.0105 205439 207589 205397 207556
Render<TransparentSquare, Transparent, PartiallyLit>_median +0.0106 +0.0107 205402 207575 205355 207558
Render<TransparentSquare, Transparent, PartiallyLit>_stddev -0.4410 -0.3876 182 102 167 102
Render<TransparentSquare, Transparent, PartiallyLit>_cv -0.4468 -0.3940 0 0 0 0
Render<Square, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, FullyLit>_mean -0.0010 -0.0010 11109 11098 11107 11096
Render<Square, Solid, FullyLit>_median -0.0010 -0.0010 11109 11097 11107 11095
Render<Square, Solid, FullyLit>_stddev -0.2265 +0.2791 3 2 2 2
Render<Square, Solid, FullyLit>_cv -0.2257 +0.2804 0 0 0 0
Render<Square, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, FullyDark>_mean +0.0904 +0.0904 8513 9283 8512 9282
Render<Square, Solid, FullyDark>_median +0.0902 +0.0902 8521 9290 8519 9288
Render<Square, Solid, FullyDark>_stddev -0.1884 -0.1616 21 17 21 18
Render<Square, Solid, FullyDark>_cv -0.2557 -0.2311 0 0 0 0
Render<Square, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, PartiallyLit>_mean +0.0038 +0.0038 163661 164289 163632 164259
Render<Square, Solid, PartiallyLit>_median +0.0038 +0.0040 163665 164290 163621 164269
Render<Square, Solid, PartiallyLit>_stddev +0.1746 +0.4412 34 40 28 40
Render<Square, Solid, PartiallyLit>_cv +0.1701 +0.4356 0 0 0 0
Render<Square, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, FullyLit>_mean -0.0029 -0.0029 197906 197340 197876 197304
Render<Square, Transparent, FullyLit>_median -0.0030 -0.0029 197929 197339 197872 197307
Render<Square, Transparent, FullyLit>_stddev -0.5965 -0.7554 61 25 62 15
Render<Square, Transparent, FullyLit>_cv -0.5953 -0.7547 0 0 0 0
Render<Square, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, FullyDark>_mean -0.0163 -0.0163 125659 123607 125641 123588
Render<Square, Transparent, FullyDark>_median -0.0163 -0.0163 125651 123609 125629 123579
Render<Square, Transparent, FullyDark>_stddev -0.7943 -0.8033 180 37 181 36
Render<Square, Transparent, FullyDark>_cv -0.7909 -0.8000 0 0 0 0
Render<Square, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, PartiallyLit>_mean +0.0182 +0.0182 278103 283157 278043 283107
Render<Square, Transparent, PartiallyLit>_median +0.0184 +0.0184 278086 283190 278017 283120
Render<Square, Transparent, PartiallyLit>_stddev +1.6051 +1.5303 81 210 82 209
Render<Square, Transparent, PartiallyLit>_cv +1.5586 +1.4850 0 0 0 0
Render<LeftTrapezoid, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, FullyLit>_mean -0.0068 -0.0068 3299 3276 3298 3276
Render<LeftTrapezoid, Solid, FullyLit>_median -0.0068 -0.0068 3299 3276 3298 3276
Render<LeftTrapezoid, Solid, FullyLit>_stddev -0.4844 -0.6856 1 0 1 0
Render<LeftTrapezoid, Solid, FullyLit>_cv -0.4809 -0.6834 0 0 0 0
Render<LeftTrapezoid, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, FullyDark>_mean +0.3996 +0.3997 5163 7227 5162 7226
Render<LeftTrapezoid, Solid, FullyDark>_median +0.3973 +0.3974 5174 7230 5173 7229
Render<LeftTrapezoid, Solid, FullyDark>_stddev -0.7835 -0.7789 89 19 89 20
Render<LeftTrapezoid, Solid, FullyDark>_cv -0.8453 -0.8420 0 0 0 0
Render<LeftTrapezoid, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, PartiallyLit>_mean -0.1228 -0.1228 50053 43907 50044 43900
Render<LeftTrapezoid, Solid, PartiallyLit>_median -0.1228 -0.1228 50062 43916 50054 43906
Render<LeftTrapezoid, Solid, PartiallyLit>_stddev +1.3916 +1.3800 63 150 64 151
Render<LeftTrapezoid, Solid, PartiallyLit>_cv +1.7263 +1.7131 0 0 0 0
Render<LeftTrapezoid, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, FullyLit>_mean -0.1584 -0.1583 62677 52751 62665 52743
Render<LeftTrapezoid, Transparent, FullyLit>_median -0.1585 -0.1585 62670 52736 62656 52728
Render<LeftTrapezoid, Transparent, FullyLit>_stddev +1.1429 +1.4086 26 55 23 55
Render<LeftTrapezoid, Transparent, FullyLit>_cv +1.5461 +1.8617 0 0 0 0
Render<LeftTrapezoid, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, FullyDark>_mean -0.1929 -0.1929 57688 46558 57679 46551
Render<LeftTrapezoid, Transparent, FullyDark>_median -0.1943 -0.1944 57681 46473 57672 46459
Render<LeftTrapezoid, Transparent, FullyDark>_stddev +2.8190 +2.7914 62 237 63 238
Render<LeftTrapezoid, Transparent, FullyDark>_cv +3.7319 +3.6978 0 0 0 0
Render<LeftTrapezoid, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, PartiallyLit>_mean -0.0054 -0.0054 70694 70313 70682 70301
Render<LeftTrapezoid, Transparent, PartiallyLit>_median -0.0050 -0.0048 70671 70319 70650 70311
Render<LeftTrapezoid, Transparent, PartiallyLit>_stddev -0.7448 -0.7617 163 42 168 40
Render<LeftTrapezoid, Transparent, PartiallyLit>_cv -0.7434 -0.7604 0 0 0 0
Render<RightTrapezoid, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, FullyLit>_mean +0.0123 +0.0123 2985 3022 2984 3021
Render<RightTrapezoid, Solid, FullyLit>_median +0.0123 +0.0123 2985 3021 2984 3021
Render<RightTrapezoid, Solid, FullyLit>_stddev -0.4207 -0.4667 1 0 1 0
Render<RightTrapezoid, Solid, FullyLit>_cv -0.4277 -0.4731 0 0 0 0
Render<RightTrapezoid, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, FullyDark>_mean +0.1105 +0.1105 4894 5435 4893 5434
Render<RightTrapezoid, Solid, FullyDark>_median +0.1083 +0.1082 4902 5433 4901 5432
Render<RightTrapezoid, Solid, FullyDark>_stddev -0.1973 -0.1947 45 37 45 37
Render<RightTrapezoid, Solid, FullyDark>_cv -0.2772 -0.2748 0 0 0 0
Render<RightTrapezoid, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, PartiallyLit>_mean -0.0169 -0.0169 48201 47386 48192 47379
Render<RightTrapezoid, Solid, PartiallyLit>_median -0.0172 -0.0170 48184 47355 48170 47351
Render<RightTrapezoid, Solid, PartiallyLit>_stddev +0.6070 +0.5204 48 78 50 76
Render<RightTrapezoid, Solid, PartiallyLit>_cv +0.6346 +0.5465 0 0 0 0
Render<RightTrapezoid, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, FullyLit>_mean -0.0023 -0.0023 48751 48639 48742 48632
Render<RightTrapezoid, Transparent, FullyLit>_median -0.0020 -0.0018 48751 48654 48738 48651
Render<RightTrapezoid, Transparent, FullyLit>_stddev +2.4354 +2.4427 10 35 11 36
Render<RightTrapezoid, Transparent, FullyLit>_cv +2.4433 +2.4505 0 0 0 0
Render<RightTrapezoid, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, FullyDark>_mean -0.2247 -0.2247 40942 31742 40936 31736
Render<RightTrapezoid, Transparent, FullyDark>_median -0.2241 -0.2240 40904 31739 40895 31734
Render<RightTrapezoid, Transparent, FullyDark>_stddev -0.3455 -0.3546 165 108 167 108
Render<RightTrapezoid, Transparent, FullyDark>_cv -0.1558 -0.1676 0 0 0 0
Render<RightTrapezoid, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, PartiallyLit>_mean -0.0908 -0.0908 74269 67523 74256 67512
Render<RightTrapezoid, Transparent, PartiallyLit>_median -0.0898 -0.0897 74196 67536 74176 67523
Render<RightTrapezoid, Transparent, PartiallyLit>_stddev -0.6590 -0.6568 147 50 146 50
Render<RightTrapezoid, Transparent, PartiallyLit>_cv -0.6250 -0.6225 0 0 0 0
BM_RenderBlackTile_pvalue 0.0539 0.0539 U Test, Repetitions: 10 vs 10
BM_RenderBlackTile_mean -0.0188 -0.0188 125 123 125 123
BM_RenderBlackTile_median -0.0263 -0.0264 126 122 125 122
BM_RenderBlackTile_stddev +1.0907 +1.0966 1 3 1 3
BM_RenderBlackTile_cv +1.1307 +1.1368 0 0 0 0
OVERALL_GEOMEAN -0.0207 -0.0207 0 0 0 0
```
8 months ago
|
|
|
, fullyLitLightTable_(fullyLitLightTable)
|
|
|
|
|
, fullyDarkLightTable_(fullyDarkLightTable)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Lightmap Lightmap::build(bool perPixelLighting, Point tilePosition, Point targetBufferPosition,
|
|
|
|
|
int viewportWidth, int viewportHeight, int rows, int columns,
|
|
|
|
|
const uint8_t *outBuffer, uint16_t outPitch,
|
|
|
|
|
std::span<const std::array<uint8_t, LightTableSize>, NumLightingLevels> lightTables,
|
Make `dun_render` a standalone library
Does not make `dun_render_benchmark` standalone yet as that will require
more untangling.
Benchmark is neutral:
```
Benchmark Time CPU Time Old Time New CPU Old CPU New
----------------------------------------------------------------------------------------------------------------------------------------------------------
Render<LeftTriangle, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, FullyLit>_mean +0.0119 +0.0120 8377 8477 8375 8475
Render<LeftTriangle, Solid, FullyLit>_median +0.0119 +0.0119 8376 8477 8375 8475
Render<LeftTriangle, Solid, FullyLit>_stddev -0.0884 -0.2462 2 1 1 1
Render<LeftTriangle, Solid, FullyLit>_cv -0.0992 -0.2551 0 0 0 0
Render<LeftTriangle, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, FullyDark>_mean +0.0910 +0.0910 21174 23100 21170 23097
Render<LeftTriangle, Solid, FullyDark>_median +0.0869 +0.0869 21183 23023 21179 23019
Render<LeftTriangle, Solid, FullyDark>_stddev -0.1528 -0.1593 267 226 268 225
Render<LeftTriangle, Solid, FullyDark>_cv -0.2234 -0.2294 0 0 0 0
Render<LeftTriangle, Solid, PartiallyLit>_pvalue 0.0013 0.0013 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, PartiallyLit>_mean +0.0065 +0.0065 81168 81698 81151 81680
Render<LeftTriangle, Solid, PartiallyLit>_median +0.0075 +0.0073 81143 81748 81136 81730
Render<LeftTriangle, Solid, PartiallyLit>_stddev +0.8663 +0.8787 167 311 164 307
Render<LeftTriangle, Solid, PartiallyLit>_cv +0.8542 +0.8665 0 0 0 0
Render<LeftTriangle, Transparent, FullyLit>_pvalue 0.0028 0.0017 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, FullyLit>_mean -0.0239 -0.0239 94989 92719 94973 92703
Render<LeftTriangle, Transparent, FullyLit>_median -0.0122 -0.0123 93867 92717 93856 92704
Render<LeftTriangle, Transparent, FullyLit>_stddev -0.9920 -0.9955 2370 19 2368 11
Render<LeftTriangle, Transparent, FullyLit>_cv -0.9918 -0.9954 0 0 0 0
Render<LeftTriangle, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, FullyDark>_mean -0.0841 -0.0841 76234 69821 76220 69809
Render<LeftTriangle, Transparent, FullyDark>_median -0.0831 -0.0832 76209 69877 76202 69864
Render<LeftTriangle, Transparent, FullyDark>_stddev -0.4486 -0.4538 441 243 440 241
Render<LeftTriangle, Transparent, FullyDark>_cv -0.3979 -0.4037 0 0 0 0
Render<LeftTriangle, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, PartiallyLit>_mean +0.0022 +0.0021 128812 129091 128792 129067
Render<LeftTriangle, Transparent, PartiallyLit>_median +0.0023 +0.0023 128820 129115 128805 129096
Render<LeftTriangle, Transparent, PartiallyLit>_stddev +0.8757 +0.6866 50 93 53 90
Render<LeftTriangle, Transparent, PartiallyLit>_cv +0.8716 +0.6830 0 0 0 0
Render<RightTriangle, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, FullyLit>_mean +0.0057 +0.0057 8521 8570 8520 8569
Render<RightTriangle, Solid, FullyLit>_median +0.0057 +0.0057 8522 8570 8520 8568
Render<RightTriangle, Solid, FullyLit>_stddev -0.1826 -0.0420 1 1 1 1
Render<RightTriangle, Solid, FullyLit>_cv -0.1872 -0.0475 0 0 0 0
Render<RightTriangle, Solid, FullyDark>_pvalue 0.0006 0.0006 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, FullyDark>_mean -0.0303 -0.0303 22678 21991 22675 21987
Render<RightTriangle, Solid, FullyDark>_median -0.0360 -0.0359 22704 21888 22699 21883
Render<RightTriangle, Solid, FullyDark>_stddev +0.4759 +0.4648 195 288 196 287
Render<RightTriangle, Solid, FullyDark>_cv +0.5220 +0.5106 0 0 0 0
Render<RightTriangle, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, PartiallyLit>_mean +0.0338 +0.0338 83355 86170 83341 86157
Render<RightTriangle, Solid, PartiallyLit>_median +0.0347 +0.0348 83248 86140 83230 86126
Render<RightTriangle, Solid, PartiallyLit>_stddev +0.3670 +0.3423 238 326 240 322
Render<RightTriangle, Solid, PartiallyLit>_cv +0.3224 +0.2985 0 0 0 0
Render<RightTriangle, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, FullyLit>_mean -0.0617 -0.0616 102726 96392 102706 96375
Render<RightTriangle, Transparent, FullyLit>_median -0.0598 -0.0597 102521 96394 102498 96375
Render<RightTriangle, Transparent, FullyLit>_stddev -0.9516 -0.9548 456 22 461 21
Render<RightTriangle, Transparent, FullyLit>_cv -0.9485 -0.9518 0 0 0 0
Render<RightTriangle, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, FullyDark>_mean -0.1377 -0.1377 84505 72865 84492 72853
Render<RightTriangle, Transparent, FullyDark>_median -0.1374 -0.1374 84339 72748 84323 72740
Render<RightTriangle, Transparent, FullyDark>_stddev -0.2760 -0.2867 526 381 528 377
Render<RightTriangle, Transparent, FullyDark>_cv -0.1604 -0.1727 0 0 0 0
Render<RightTriangle, Transparent, PartiallyLit>_pvalue 0.0036 0.0017 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, PartiallyLit>_mean +0.0010 +0.0010 131672 131808 131649 131784
Render<RightTriangle, Transparent, PartiallyLit>_median +0.0010 +0.0008 131665 131797 131654 131757
Render<RightTriangle, Transparent, PartiallyLit>_stddev -0.0688 -0.0128 81 75 72 71
Render<RightTriangle, Transparent, PartiallyLit>_cv -0.0697 -0.0138 0 0 0 0
Render<TransparentSquare, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, FullyLit>_mean -0.0300 -0.0300 143323 139021 143300 139000
Render<TransparentSquare, Solid, FullyLit>_median -0.0300 -0.0301 143321 139014 143310 138990
Render<TransparentSquare, Solid, FullyLit>_stddev +0.0008 -0.0820 43 43 43 39
Render<TransparentSquare, Solid, FullyLit>_cv +0.0318 -0.0536 0 0 0 0
Render<TransparentSquare, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, FullyDark>_mean -0.0100 -0.0100 134939 133588 134914 133565
Render<TransparentSquare, Solid, FullyDark>_median -0.0106 -0.0108 134964 133526 134948 133497
Render<TransparentSquare, Solid, FullyDark>_stddev +1.7508 +1.8682 99 273 96 276
Render<TransparentSquare, Solid, FullyDark>_cv +1.7786 +1.8972 0 0 0 0
Render<TransparentSquare, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, PartiallyLit>_mean -0.0460 -0.0460 152043 145043 152016 145020
Render<TransparentSquare, Solid, PartiallyLit>_median -0.0463 -0.0461 152012 144978 151964 144962
Render<TransparentSquare, Solid, PartiallyLit>_stddev -0.4453 -0.4334 267 148 266 151
Render<TransparentSquare, Solid, PartiallyLit>_cv -0.4185 -0.4060 0 0 0 0
Render<TransparentSquare, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, FullyLit>_mean -0.0846 -0.0846 181333 165997 181304 165969
Render<TransparentSquare, Transparent, FullyLit>_median -0.0840 -0.0839 181184 165972 181147 165945
Render<TransparentSquare, Transparent, FullyLit>_stddev -0.5808 -0.5755 319 134 320 136
Render<TransparentSquare, Transparent, FullyLit>_cv -0.5421 -0.5362 0 0 0 0
Render<TransparentSquare, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, FullyDark>_mean -0.0250 -0.0250 142232 138672 142208 138648
Render<TransparentSquare, Transparent, FullyDark>_median -0.0245 -0.0245 142144 138663 142128 138639
Render<TransparentSquare, Transparent, FullyDark>_stddev +0.1011 +0.0806 288 317 290 313
Render<TransparentSquare, Transparent, FullyDark>_cv +0.1294 +0.1084 0 0 0 0
Render<TransparentSquare, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, PartiallyLit>_mean +0.0105 +0.0105 205439 207589 205397 207556
Render<TransparentSquare, Transparent, PartiallyLit>_median +0.0106 +0.0107 205402 207575 205355 207558
Render<TransparentSquare, Transparent, PartiallyLit>_stddev -0.4410 -0.3876 182 102 167 102
Render<TransparentSquare, Transparent, PartiallyLit>_cv -0.4468 -0.3940 0 0 0 0
Render<Square, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, FullyLit>_mean -0.0010 -0.0010 11109 11098 11107 11096
Render<Square, Solid, FullyLit>_median -0.0010 -0.0010 11109 11097 11107 11095
Render<Square, Solid, FullyLit>_stddev -0.2265 +0.2791 3 2 2 2
Render<Square, Solid, FullyLit>_cv -0.2257 +0.2804 0 0 0 0
Render<Square, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, FullyDark>_mean +0.0904 +0.0904 8513 9283 8512 9282
Render<Square, Solid, FullyDark>_median +0.0902 +0.0902 8521 9290 8519 9288
Render<Square, Solid, FullyDark>_stddev -0.1884 -0.1616 21 17 21 18
Render<Square, Solid, FullyDark>_cv -0.2557 -0.2311 0 0 0 0
Render<Square, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, PartiallyLit>_mean +0.0038 +0.0038 163661 164289 163632 164259
Render<Square, Solid, PartiallyLit>_median +0.0038 +0.0040 163665 164290 163621 164269
Render<Square, Solid, PartiallyLit>_stddev +0.1746 +0.4412 34 40 28 40
Render<Square, Solid, PartiallyLit>_cv +0.1701 +0.4356 0 0 0 0
Render<Square, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, FullyLit>_mean -0.0029 -0.0029 197906 197340 197876 197304
Render<Square, Transparent, FullyLit>_median -0.0030 -0.0029 197929 197339 197872 197307
Render<Square, Transparent, FullyLit>_stddev -0.5965 -0.7554 61 25 62 15
Render<Square, Transparent, FullyLit>_cv -0.5953 -0.7547 0 0 0 0
Render<Square, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, FullyDark>_mean -0.0163 -0.0163 125659 123607 125641 123588
Render<Square, Transparent, FullyDark>_median -0.0163 -0.0163 125651 123609 125629 123579
Render<Square, Transparent, FullyDark>_stddev -0.7943 -0.8033 180 37 181 36
Render<Square, Transparent, FullyDark>_cv -0.7909 -0.8000 0 0 0 0
Render<Square, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, PartiallyLit>_mean +0.0182 +0.0182 278103 283157 278043 283107
Render<Square, Transparent, PartiallyLit>_median +0.0184 +0.0184 278086 283190 278017 283120
Render<Square, Transparent, PartiallyLit>_stddev +1.6051 +1.5303 81 210 82 209
Render<Square, Transparent, PartiallyLit>_cv +1.5586 +1.4850 0 0 0 0
Render<LeftTrapezoid, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, FullyLit>_mean -0.0068 -0.0068 3299 3276 3298 3276
Render<LeftTrapezoid, Solid, FullyLit>_median -0.0068 -0.0068 3299 3276 3298 3276
Render<LeftTrapezoid, Solid, FullyLit>_stddev -0.4844 -0.6856 1 0 1 0
Render<LeftTrapezoid, Solid, FullyLit>_cv -0.4809 -0.6834 0 0 0 0
Render<LeftTrapezoid, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, FullyDark>_mean +0.3996 +0.3997 5163 7227 5162 7226
Render<LeftTrapezoid, Solid, FullyDark>_median +0.3973 +0.3974 5174 7230 5173 7229
Render<LeftTrapezoid, Solid, FullyDark>_stddev -0.7835 -0.7789 89 19 89 20
Render<LeftTrapezoid, Solid, FullyDark>_cv -0.8453 -0.8420 0 0 0 0
Render<LeftTrapezoid, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, PartiallyLit>_mean -0.1228 -0.1228 50053 43907 50044 43900
Render<LeftTrapezoid, Solid, PartiallyLit>_median -0.1228 -0.1228 50062 43916 50054 43906
Render<LeftTrapezoid, Solid, PartiallyLit>_stddev +1.3916 +1.3800 63 150 64 151
Render<LeftTrapezoid, Solid, PartiallyLit>_cv +1.7263 +1.7131 0 0 0 0
Render<LeftTrapezoid, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, FullyLit>_mean -0.1584 -0.1583 62677 52751 62665 52743
Render<LeftTrapezoid, Transparent, FullyLit>_median -0.1585 -0.1585 62670 52736 62656 52728
Render<LeftTrapezoid, Transparent, FullyLit>_stddev +1.1429 +1.4086 26 55 23 55
Render<LeftTrapezoid, Transparent, FullyLit>_cv +1.5461 +1.8617 0 0 0 0
Render<LeftTrapezoid, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, FullyDark>_mean -0.1929 -0.1929 57688 46558 57679 46551
Render<LeftTrapezoid, Transparent, FullyDark>_median -0.1943 -0.1944 57681 46473 57672 46459
Render<LeftTrapezoid, Transparent, FullyDark>_stddev +2.8190 +2.7914 62 237 63 238
Render<LeftTrapezoid, Transparent, FullyDark>_cv +3.7319 +3.6978 0 0 0 0
Render<LeftTrapezoid, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, PartiallyLit>_mean -0.0054 -0.0054 70694 70313 70682 70301
Render<LeftTrapezoid, Transparent, PartiallyLit>_median -0.0050 -0.0048 70671 70319 70650 70311
Render<LeftTrapezoid, Transparent, PartiallyLit>_stddev -0.7448 -0.7617 163 42 168 40
Render<LeftTrapezoid, Transparent, PartiallyLit>_cv -0.7434 -0.7604 0 0 0 0
Render<RightTrapezoid, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, FullyLit>_mean +0.0123 +0.0123 2985 3022 2984 3021
Render<RightTrapezoid, Solid, FullyLit>_median +0.0123 +0.0123 2985 3021 2984 3021
Render<RightTrapezoid, Solid, FullyLit>_stddev -0.4207 -0.4667 1 0 1 0
Render<RightTrapezoid, Solid, FullyLit>_cv -0.4277 -0.4731 0 0 0 0
Render<RightTrapezoid, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, FullyDark>_mean +0.1105 +0.1105 4894 5435 4893 5434
Render<RightTrapezoid, Solid, FullyDark>_median +0.1083 +0.1082 4902 5433 4901 5432
Render<RightTrapezoid, Solid, FullyDark>_stddev -0.1973 -0.1947 45 37 45 37
Render<RightTrapezoid, Solid, FullyDark>_cv -0.2772 -0.2748 0 0 0 0
Render<RightTrapezoid, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, PartiallyLit>_mean -0.0169 -0.0169 48201 47386 48192 47379
Render<RightTrapezoid, Solid, PartiallyLit>_median -0.0172 -0.0170 48184 47355 48170 47351
Render<RightTrapezoid, Solid, PartiallyLit>_stddev +0.6070 +0.5204 48 78 50 76
Render<RightTrapezoid, Solid, PartiallyLit>_cv +0.6346 +0.5465 0 0 0 0
Render<RightTrapezoid, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, FullyLit>_mean -0.0023 -0.0023 48751 48639 48742 48632
Render<RightTrapezoid, Transparent, FullyLit>_median -0.0020 -0.0018 48751 48654 48738 48651
Render<RightTrapezoid, Transparent, FullyLit>_stddev +2.4354 +2.4427 10 35 11 36
Render<RightTrapezoid, Transparent, FullyLit>_cv +2.4433 +2.4505 0 0 0 0
Render<RightTrapezoid, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, FullyDark>_mean -0.2247 -0.2247 40942 31742 40936 31736
Render<RightTrapezoid, Transparent, FullyDark>_median -0.2241 -0.2240 40904 31739 40895 31734
Render<RightTrapezoid, Transparent, FullyDark>_stddev -0.3455 -0.3546 165 108 167 108
Render<RightTrapezoid, Transparent, FullyDark>_cv -0.1558 -0.1676 0 0 0 0
Render<RightTrapezoid, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, PartiallyLit>_mean -0.0908 -0.0908 74269 67523 74256 67512
Render<RightTrapezoid, Transparent, PartiallyLit>_median -0.0898 -0.0897 74196 67536 74176 67523
Render<RightTrapezoid, Transparent, PartiallyLit>_stddev -0.6590 -0.6568 147 50 146 50
Render<RightTrapezoid, Transparent, PartiallyLit>_cv -0.6250 -0.6225 0 0 0 0
BM_RenderBlackTile_pvalue 0.0539 0.0539 U Test, Repetitions: 10 vs 10
BM_RenderBlackTile_mean -0.0188 -0.0188 125 123 125 123
BM_RenderBlackTile_median -0.0263 -0.0264 126 122 125 122
BM_RenderBlackTile_stddev +1.0907 +1.0966 1 3 1 3
BM_RenderBlackTile_cv +1.1307 +1.1368 0 0 0 0
OVERALL_GEOMEAN -0.0207 -0.0207 0 0 0 0
```
8 months ago
|
|
|
const uint8_t *fullyLitLightTable, const uint8_t *fullyDarkLightTable,
|
|
|
|
|
const uint8_t tileLights[MAXDUNX][MAXDUNY],
|
|
|
|
|
uint_fast8_t microTileLen)
|
|
|
|
|
{
|
|
|
|
|
if (perPixelLighting) {
|
|
|
|
|
BuildLightmap(tilePosition, targetBufferPosition, viewportWidth, viewportHeight, rows, columns, tileLights, microTileLen);
|
|
|
|
|
}
|
Make `dun_render` a standalone library
Does not make `dun_render_benchmark` standalone yet as that will require
more untangling.
Benchmark is neutral:
```
Benchmark Time CPU Time Old Time New CPU Old CPU New
----------------------------------------------------------------------------------------------------------------------------------------------------------
Render<LeftTriangle, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, FullyLit>_mean +0.0119 +0.0120 8377 8477 8375 8475
Render<LeftTriangle, Solid, FullyLit>_median +0.0119 +0.0119 8376 8477 8375 8475
Render<LeftTriangle, Solid, FullyLit>_stddev -0.0884 -0.2462 2 1 1 1
Render<LeftTriangle, Solid, FullyLit>_cv -0.0992 -0.2551 0 0 0 0
Render<LeftTriangle, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, FullyDark>_mean +0.0910 +0.0910 21174 23100 21170 23097
Render<LeftTriangle, Solid, FullyDark>_median +0.0869 +0.0869 21183 23023 21179 23019
Render<LeftTriangle, Solid, FullyDark>_stddev -0.1528 -0.1593 267 226 268 225
Render<LeftTriangle, Solid, FullyDark>_cv -0.2234 -0.2294 0 0 0 0
Render<LeftTriangle, Solid, PartiallyLit>_pvalue 0.0013 0.0013 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, PartiallyLit>_mean +0.0065 +0.0065 81168 81698 81151 81680
Render<LeftTriangle, Solid, PartiallyLit>_median +0.0075 +0.0073 81143 81748 81136 81730
Render<LeftTriangle, Solid, PartiallyLit>_stddev +0.8663 +0.8787 167 311 164 307
Render<LeftTriangle, Solid, PartiallyLit>_cv +0.8542 +0.8665 0 0 0 0
Render<LeftTriangle, Transparent, FullyLit>_pvalue 0.0028 0.0017 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, FullyLit>_mean -0.0239 -0.0239 94989 92719 94973 92703
Render<LeftTriangle, Transparent, FullyLit>_median -0.0122 -0.0123 93867 92717 93856 92704
Render<LeftTriangle, Transparent, FullyLit>_stddev -0.9920 -0.9955 2370 19 2368 11
Render<LeftTriangle, Transparent, FullyLit>_cv -0.9918 -0.9954 0 0 0 0
Render<LeftTriangle, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, FullyDark>_mean -0.0841 -0.0841 76234 69821 76220 69809
Render<LeftTriangle, Transparent, FullyDark>_median -0.0831 -0.0832 76209 69877 76202 69864
Render<LeftTriangle, Transparent, FullyDark>_stddev -0.4486 -0.4538 441 243 440 241
Render<LeftTriangle, Transparent, FullyDark>_cv -0.3979 -0.4037 0 0 0 0
Render<LeftTriangle, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, PartiallyLit>_mean +0.0022 +0.0021 128812 129091 128792 129067
Render<LeftTriangle, Transparent, PartiallyLit>_median +0.0023 +0.0023 128820 129115 128805 129096
Render<LeftTriangle, Transparent, PartiallyLit>_stddev +0.8757 +0.6866 50 93 53 90
Render<LeftTriangle, Transparent, PartiallyLit>_cv +0.8716 +0.6830 0 0 0 0
Render<RightTriangle, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, FullyLit>_mean +0.0057 +0.0057 8521 8570 8520 8569
Render<RightTriangle, Solid, FullyLit>_median +0.0057 +0.0057 8522 8570 8520 8568
Render<RightTriangle, Solid, FullyLit>_stddev -0.1826 -0.0420 1 1 1 1
Render<RightTriangle, Solid, FullyLit>_cv -0.1872 -0.0475 0 0 0 0
Render<RightTriangle, Solid, FullyDark>_pvalue 0.0006 0.0006 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, FullyDark>_mean -0.0303 -0.0303 22678 21991 22675 21987
Render<RightTriangle, Solid, FullyDark>_median -0.0360 -0.0359 22704 21888 22699 21883
Render<RightTriangle, Solid, FullyDark>_stddev +0.4759 +0.4648 195 288 196 287
Render<RightTriangle, Solid, FullyDark>_cv +0.5220 +0.5106 0 0 0 0
Render<RightTriangle, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, PartiallyLit>_mean +0.0338 +0.0338 83355 86170 83341 86157
Render<RightTriangle, Solid, PartiallyLit>_median +0.0347 +0.0348 83248 86140 83230 86126
Render<RightTriangle, Solid, PartiallyLit>_stddev +0.3670 +0.3423 238 326 240 322
Render<RightTriangle, Solid, PartiallyLit>_cv +0.3224 +0.2985 0 0 0 0
Render<RightTriangle, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, FullyLit>_mean -0.0617 -0.0616 102726 96392 102706 96375
Render<RightTriangle, Transparent, FullyLit>_median -0.0598 -0.0597 102521 96394 102498 96375
Render<RightTriangle, Transparent, FullyLit>_stddev -0.9516 -0.9548 456 22 461 21
Render<RightTriangle, Transparent, FullyLit>_cv -0.9485 -0.9518 0 0 0 0
Render<RightTriangle, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, FullyDark>_mean -0.1377 -0.1377 84505 72865 84492 72853
Render<RightTriangle, Transparent, FullyDark>_median -0.1374 -0.1374 84339 72748 84323 72740
Render<RightTriangle, Transparent, FullyDark>_stddev -0.2760 -0.2867 526 381 528 377
Render<RightTriangle, Transparent, FullyDark>_cv -0.1604 -0.1727 0 0 0 0
Render<RightTriangle, Transparent, PartiallyLit>_pvalue 0.0036 0.0017 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, PartiallyLit>_mean +0.0010 +0.0010 131672 131808 131649 131784
Render<RightTriangle, Transparent, PartiallyLit>_median +0.0010 +0.0008 131665 131797 131654 131757
Render<RightTriangle, Transparent, PartiallyLit>_stddev -0.0688 -0.0128 81 75 72 71
Render<RightTriangle, Transparent, PartiallyLit>_cv -0.0697 -0.0138 0 0 0 0
Render<TransparentSquare, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, FullyLit>_mean -0.0300 -0.0300 143323 139021 143300 139000
Render<TransparentSquare, Solid, FullyLit>_median -0.0300 -0.0301 143321 139014 143310 138990
Render<TransparentSquare, Solid, FullyLit>_stddev +0.0008 -0.0820 43 43 43 39
Render<TransparentSquare, Solid, FullyLit>_cv +0.0318 -0.0536 0 0 0 0
Render<TransparentSquare, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, FullyDark>_mean -0.0100 -0.0100 134939 133588 134914 133565
Render<TransparentSquare, Solid, FullyDark>_median -0.0106 -0.0108 134964 133526 134948 133497
Render<TransparentSquare, Solid, FullyDark>_stddev +1.7508 +1.8682 99 273 96 276
Render<TransparentSquare, Solid, FullyDark>_cv +1.7786 +1.8972 0 0 0 0
Render<TransparentSquare, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, PartiallyLit>_mean -0.0460 -0.0460 152043 145043 152016 145020
Render<TransparentSquare, Solid, PartiallyLit>_median -0.0463 -0.0461 152012 144978 151964 144962
Render<TransparentSquare, Solid, PartiallyLit>_stddev -0.4453 -0.4334 267 148 266 151
Render<TransparentSquare, Solid, PartiallyLit>_cv -0.4185 -0.4060 0 0 0 0
Render<TransparentSquare, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, FullyLit>_mean -0.0846 -0.0846 181333 165997 181304 165969
Render<TransparentSquare, Transparent, FullyLit>_median -0.0840 -0.0839 181184 165972 181147 165945
Render<TransparentSquare, Transparent, FullyLit>_stddev -0.5808 -0.5755 319 134 320 136
Render<TransparentSquare, Transparent, FullyLit>_cv -0.5421 -0.5362 0 0 0 0
Render<TransparentSquare, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, FullyDark>_mean -0.0250 -0.0250 142232 138672 142208 138648
Render<TransparentSquare, Transparent, FullyDark>_median -0.0245 -0.0245 142144 138663 142128 138639
Render<TransparentSquare, Transparent, FullyDark>_stddev +0.1011 +0.0806 288 317 290 313
Render<TransparentSquare, Transparent, FullyDark>_cv +0.1294 +0.1084 0 0 0 0
Render<TransparentSquare, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, PartiallyLit>_mean +0.0105 +0.0105 205439 207589 205397 207556
Render<TransparentSquare, Transparent, PartiallyLit>_median +0.0106 +0.0107 205402 207575 205355 207558
Render<TransparentSquare, Transparent, PartiallyLit>_stddev -0.4410 -0.3876 182 102 167 102
Render<TransparentSquare, Transparent, PartiallyLit>_cv -0.4468 -0.3940 0 0 0 0
Render<Square, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, FullyLit>_mean -0.0010 -0.0010 11109 11098 11107 11096
Render<Square, Solid, FullyLit>_median -0.0010 -0.0010 11109 11097 11107 11095
Render<Square, Solid, FullyLit>_stddev -0.2265 +0.2791 3 2 2 2
Render<Square, Solid, FullyLit>_cv -0.2257 +0.2804 0 0 0 0
Render<Square, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, FullyDark>_mean +0.0904 +0.0904 8513 9283 8512 9282
Render<Square, Solid, FullyDark>_median +0.0902 +0.0902 8521 9290 8519 9288
Render<Square, Solid, FullyDark>_stddev -0.1884 -0.1616 21 17 21 18
Render<Square, Solid, FullyDark>_cv -0.2557 -0.2311 0 0 0 0
Render<Square, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, PartiallyLit>_mean +0.0038 +0.0038 163661 164289 163632 164259
Render<Square, Solid, PartiallyLit>_median +0.0038 +0.0040 163665 164290 163621 164269
Render<Square, Solid, PartiallyLit>_stddev +0.1746 +0.4412 34 40 28 40
Render<Square, Solid, PartiallyLit>_cv +0.1701 +0.4356 0 0 0 0
Render<Square, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, FullyLit>_mean -0.0029 -0.0029 197906 197340 197876 197304
Render<Square, Transparent, FullyLit>_median -0.0030 -0.0029 197929 197339 197872 197307
Render<Square, Transparent, FullyLit>_stddev -0.5965 -0.7554 61 25 62 15
Render<Square, Transparent, FullyLit>_cv -0.5953 -0.7547 0 0 0 0
Render<Square, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, FullyDark>_mean -0.0163 -0.0163 125659 123607 125641 123588
Render<Square, Transparent, FullyDark>_median -0.0163 -0.0163 125651 123609 125629 123579
Render<Square, Transparent, FullyDark>_stddev -0.7943 -0.8033 180 37 181 36
Render<Square, Transparent, FullyDark>_cv -0.7909 -0.8000 0 0 0 0
Render<Square, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, PartiallyLit>_mean +0.0182 +0.0182 278103 283157 278043 283107
Render<Square, Transparent, PartiallyLit>_median +0.0184 +0.0184 278086 283190 278017 283120
Render<Square, Transparent, PartiallyLit>_stddev +1.6051 +1.5303 81 210 82 209
Render<Square, Transparent, PartiallyLit>_cv +1.5586 +1.4850 0 0 0 0
Render<LeftTrapezoid, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, FullyLit>_mean -0.0068 -0.0068 3299 3276 3298 3276
Render<LeftTrapezoid, Solid, FullyLit>_median -0.0068 -0.0068 3299 3276 3298 3276
Render<LeftTrapezoid, Solid, FullyLit>_stddev -0.4844 -0.6856 1 0 1 0
Render<LeftTrapezoid, Solid, FullyLit>_cv -0.4809 -0.6834 0 0 0 0
Render<LeftTrapezoid, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, FullyDark>_mean +0.3996 +0.3997 5163 7227 5162 7226
Render<LeftTrapezoid, Solid, FullyDark>_median +0.3973 +0.3974 5174 7230 5173 7229
Render<LeftTrapezoid, Solid, FullyDark>_stddev -0.7835 -0.7789 89 19 89 20
Render<LeftTrapezoid, Solid, FullyDark>_cv -0.8453 -0.8420 0 0 0 0
Render<LeftTrapezoid, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, PartiallyLit>_mean -0.1228 -0.1228 50053 43907 50044 43900
Render<LeftTrapezoid, Solid, PartiallyLit>_median -0.1228 -0.1228 50062 43916 50054 43906
Render<LeftTrapezoid, Solid, PartiallyLit>_stddev +1.3916 +1.3800 63 150 64 151
Render<LeftTrapezoid, Solid, PartiallyLit>_cv +1.7263 +1.7131 0 0 0 0
Render<LeftTrapezoid, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, FullyLit>_mean -0.1584 -0.1583 62677 52751 62665 52743
Render<LeftTrapezoid, Transparent, FullyLit>_median -0.1585 -0.1585 62670 52736 62656 52728
Render<LeftTrapezoid, Transparent, FullyLit>_stddev +1.1429 +1.4086 26 55 23 55
Render<LeftTrapezoid, Transparent, FullyLit>_cv +1.5461 +1.8617 0 0 0 0
Render<LeftTrapezoid, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, FullyDark>_mean -0.1929 -0.1929 57688 46558 57679 46551
Render<LeftTrapezoid, Transparent, FullyDark>_median -0.1943 -0.1944 57681 46473 57672 46459
Render<LeftTrapezoid, Transparent, FullyDark>_stddev +2.8190 +2.7914 62 237 63 238
Render<LeftTrapezoid, Transparent, FullyDark>_cv +3.7319 +3.6978 0 0 0 0
Render<LeftTrapezoid, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, PartiallyLit>_mean -0.0054 -0.0054 70694 70313 70682 70301
Render<LeftTrapezoid, Transparent, PartiallyLit>_median -0.0050 -0.0048 70671 70319 70650 70311
Render<LeftTrapezoid, Transparent, PartiallyLit>_stddev -0.7448 -0.7617 163 42 168 40
Render<LeftTrapezoid, Transparent, PartiallyLit>_cv -0.7434 -0.7604 0 0 0 0
Render<RightTrapezoid, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, FullyLit>_mean +0.0123 +0.0123 2985 3022 2984 3021
Render<RightTrapezoid, Solid, FullyLit>_median +0.0123 +0.0123 2985 3021 2984 3021
Render<RightTrapezoid, Solid, FullyLit>_stddev -0.4207 -0.4667 1 0 1 0
Render<RightTrapezoid, Solid, FullyLit>_cv -0.4277 -0.4731 0 0 0 0
Render<RightTrapezoid, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, FullyDark>_mean +0.1105 +0.1105 4894 5435 4893 5434
Render<RightTrapezoid, Solid, FullyDark>_median +0.1083 +0.1082 4902 5433 4901 5432
Render<RightTrapezoid, Solid, FullyDark>_stddev -0.1973 -0.1947 45 37 45 37
Render<RightTrapezoid, Solid, FullyDark>_cv -0.2772 -0.2748 0 0 0 0
Render<RightTrapezoid, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, PartiallyLit>_mean -0.0169 -0.0169 48201 47386 48192 47379
Render<RightTrapezoid, Solid, PartiallyLit>_median -0.0172 -0.0170 48184 47355 48170 47351
Render<RightTrapezoid, Solid, PartiallyLit>_stddev +0.6070 +0.5204 48 78 50 76
Render<RightTrapezoid, Solid, PartiallyLit>_cv +0.6346 +0.5465 0 0 0 0
Render<RightTrapezoid, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, FullyLit>_mean -0.0023 -0.0023 48751 48639 48742 48632
Render<RightTrapezoid, Transparent, FullyLit>_median -0.0020 -0.0018 48751 48654 48738 48651
Render<RightTrapezoid, Transparent, FullyLit>_stddev +2.4354 +2.4427 10 35 11 36
Render<RightTrapezoid, Transparent, FullyLit>_cv +2.4433 +2.4505 0 0 0 0
Render<RightTrapezoid, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, FullyDark>_mean -0.2247 -0.2247 40942 31742 40936 31736
Render<RightTrapezoid, Transparent, FullyDark>_median -0.2241 -0.2240 40904 31739 40895 31734
Render<RightTrapezoid, Transparent, FullyDark>_stddev -0.3455 -0.3546 165 108 167 108
Render<RightTrapezoid, Transparent, FullyDark>_cv -0.1558 -0.1676 0 0 0 0
Render<RightTrapezoid, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, PartiallyLit>_mean -0.0908 -0.0908 74269 67523 74256 67512
Render<RightTrapezoid, Transparent, PartiallyLit>_median -0.0898 -0.0897 74196 67536 74176 67523
Render<RightTrapezoid, Transparent, PartiallyLit>_stddev -0.6590 -0.6568 147 50 146 50
Render<RightTrapezoid, Transparent, PartiallyLit>_cv -0.6250 -0.6225 0 0 0 0
BM_RenderBlackTile_pvalue 0.0539 0.0539 U Test, Repetitions: 10 vs 10
BM_RenderBlackTile_mean -0.0188 -0.0188 125 123 125 123
BM_RenderBlackTile_median -0.0263 -0.0264 126 122 125 122
BM_RenderBlackTile_stddev +1.0907 +1.0966 1 3 1 3
BM_RenderBlackTile_cv +1.1307 +1.1368 0 0 0 0
OVERALL_GEOMEAN -0.0207 -0.0207 0 0 0 0
```
8 months ago
|
|
|
return Lightmap(outBuffer, outPitch, LightmapBuffer, viewportWidth, lightTables, fullyLitLightTable, fullyDarkLightTable);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Lightmap Lightmap::bleedUp(bool perPixelLighting, const Lightmap &source, Point targetBufferPosition, std::span<uint8_t> lightmapBuffer)
|
|
|
|
|
{
|
|
|
|
|
assert(lightmapBuffer.size() >= TILE_WIDTH * TILE_HEIGHT);
|
|
|
|
|
|
|
|
|
|
if (!perPixelLighting) return source;
|
|
|
|
|
|
|
|
|
|
const int sourceHeight = static_cast<int>(source.lightmapBuffer.size() / source.lightmapPitch);
|
|
|
|
|
const int clipLeft = std::max(0, -targetBufferPosition.x);
|
|
|
|
|
const int clipTop = std::max(0, -(targetBufferPosition.y - TILE_HEIGHT + 1));
|
|
|
|
|
const int clipRight = std::max(0, targetBufferPosition.x + TILE_WIDTH - source.lightmapPitch);
|
|
|
|
|
const int clipBottom = std::max(0, targetBufferPosition.y - sourceHeight + 1);
|
|
|
|
|
|
|
|
|
|
// Nothing we can do if the tile is completely outside the bounds of the lightmap
|
|
|
|
|
if (clipLeft + clipRight >= TILE_WIDTH)
|
|
|
|
|
return source;
|
|
|
|
|
if (clipTop + clipBottom >= TILE_HEIGHT)
|
|
|
|
|
return source;
|
|
|
|
|
|
|
|
|
|
const uint16_t lightmapPitch = std::max(0, TILE_WIDTH - clipLeft - clipRight);
|
|
|
|
|
const uint16_t lightmapHeight = TILE_HEIGHT - clipTop - clipBottom;
|
|
|
|
|
|
|
|
|
|
// Find the left edge of the last row in the tile
|
|
|
|
|
const int outOffset = std::max(0, (targetBufferPosition.y - clipBottom) * source.outPitch + targetBufferPosition.x + clipLeft);
|
|
|
|
|
const uint8_t *outLoc = source.outBuffer + outOffset;
|
|
|
|
|
const uint8_t *outBuffer = outLoc - (lightmapHeight - 1) * source.outPitch;
|
|
|
|
|
|
|
|
|
|
// Start copying bytes from the bottom row of the tile
|
|
|
|
|
const uint8_t *src = source.getLightingAt(outLoc);
|
|
|
|
|
uint8_t *dst = lightmapBuffer.data() + (lightmapHeight - 1) * lightmapPitch;
|
|
|
|
|
|
|
|
|
|
int rowCount = clipBottom;
|
|
|
|
|
while (src >= source.lightmapBuffer.data() && dst >= lightmapBuffer.data()) {
|
|
|
|
|
const int bleed = std::max(0, (rowCount - TILE_HEIGHT / 2) * 2);
|
|
|
|
|
const int lightOffset = std::max(bleed, clipLeft) - clipLeft;
|
|
|
|
|
const int lightLength = std::max(0, TILE_WIDTH - clipLeft - std::max(bleed, clipRight) - lightOffset);
|
|
|
|
|
|
|
|
|
|
// Bleed pixels up by copying data from the row below this one
|
|
|
|
|
if (rowCount > clipBottom && lightLength < lightmapPitch)
|
|
|
|
|
memcpy(dst, dst + lightmapPitch, lightmapPitch);
|
|
|
|
|
|
|
|
|
|
// Copy data from the source lightmap between the top edge of the base diamond
|
|
|
|
|
assert(dst + lightOffset + lightLength <= lightmapBuffer.data() + TILE_WIDTH * TILE_HEIGHT);
|
|
|
|
|
assert(src + lightOffset + lightLength <= source.lightmapBuffer.data() + source.lightmapBuffer.size());
|
|
|
|
|
memcpy(dst + lightOffset, src + lightOffset, lightLength);
|
|
|
|
|
|
|
|
|
|
src -= source.lightmapPitch;
|
|
|
|
|
dst -= lightmapPitch;
|
|
|
|
|
rowCount++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return Lightmap(outBuffer, source.outPitch,
|
|
|
|
|
lightmapBuffer, lightmapPitch,
|
Make `dun_render` a standalone library
Does not make `dun_render_benchmark` standalone yet as that will require
more untangling.
Benchmark is neutral:
```
Benchmark Time CPU Time Old Time New CPU Old CPU New
----------------------------------------------------------------------------------------------------------------------------------------------------------
Render<LeftTriangle, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, FullyLit>_mean +0.0119 +0.0120 8377 8477 8375 8475
Render<LeftTriangle, Solid, FullyLit>_median +0.0119 +0.0119 8376 8477 8375 8475
Render<LeftTriangle, Solid, FullyLit>_stddev -0.0884 -0.2462 2 1 1 1
Render<LeftTriangle, Solid, FullyLit>_cv -0.0992 -0.2551 0 0 0 0
Render<LeftTriangle, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, FullyDark>_mean +0.0910 +0.0910 21174 23100 21170 23097
Render<LeftTriangle, Solid, FullyDark>_median +0.0869 +0.0869 21183 23023 21179 23019
Render<LeftTriangle, Solid, FullyDark>_stddev -0.1528 -0.1593 267 226 268 225
Render<LeftTriangle, Solid, FullyDark>_cv -0.2234 -0.2294 0 0 0 0
Render<LeftTriangle, Solid, PartiallyLit>_pvalue 0.0013 0.0013 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Solid, PartiallyLit>_mean +0.0065 +0.0065 81168 81698 81151 81680
Render<LeftTriangle, Solid, PartiallyLit>_median +0.0075 +0.0073 81143 81748 81136 81730
Render<LeftTriangle, Solid, PartiallyLit>_stddev +0.8663 +0.8787 167 311 164 307
Render<LeftTriangle, Solid, PartiallyLit>_cv +0.8542 +0.8665 0 0 0 0
Render<LeftTriangle, Transparent, FullyLit>_pvalue 0.0028 0.0017 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, FullyLit>_mean -0.0239 -0.0239 94989 92719 94973 92703
Render<LeftTriangle, Transparent, FullyLit>_median -0.0122 -0.0123 93867 92717 93856 92704
Render<LeftTriangle, Transparent, FullyLit>_stddev -0.9920 -0.9955 2370 19 2368 11
Render<LeftTriangle, Transparent, FullyLit>_cv -0.9918 -0.9954 0 0 0 0
Render<LeftTriangle, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, FullyDark>_mean -0.0841 -0.0841 76234 69821 76220 69809
Render<LeftTriangle, Transparent, FullyDark>_median -0.0831 -0.0832 76209 69877 76202 69864
Render<LeftTriangle, Transparent, FullyDark>_stddev -0.4486 -0.4538 441 243 440 241
Render<LeftTriangle, Transparent, FullyDark>_cv -0.3979 -0.4037 0 0 0 0
Render<LeftTriangle, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTriangle, Transparent, PartiallyLit>_mean +0.0022 +0.0021 128812 129091 128792 129067
Render<LeftTriangle, Transparent, PartiallyLit>_median +0.0023 +0.0023 128820 129115 128805 129096
Render<LeftTriangle, Transparent, PartiallyLit>_stddev +0.8757 +0.6866 50 93 53 90
Render<LeftTriangle, Transparent, PartiallyLit>_cv +0.8716 +0.6830 0 0 0 0
Render<RightTriangle, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, FullyLit>_mean +0.0057 +0.0057 8521 8570 8520 8569
Render<RightTriangle, Solid, FullyLit>_median +0.0057 +0.0057 8522 8570 8520 8568
Render<RightTriangle, Solid, FullyLit>_stddev -0.1826 -0.0420 1 1 1 1
Render<RightTriangle, Solid, FullyLit>_cv -0.1872 -0.0475 0 0 0 0
Render<RightTriangle, Solid, FullyDark>_pvalue 0.0006 0.0006 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, FullyDark>_mean -0.0303 -0.0303 22678 21991 22675 21987
Render<RightTriangle, Solid, FullyDark>_median -0.0360 -0.0359 22704 21888 22699 21883
Render<RightTriangle, Solid, FullyDark>_stddev +0.4759 +0.4648 195 288 196 287
Render<RightTriangle, Solid, FullyDark>_cv +0.5220 +0.5106 0 0 0 0
Render<RightTriangle, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Solid, PartiallyLit>_mean +0.0338 +0.0338 83355 86170 83341 86157
Render<RightTriangle, Solid, PartiallyLit>_median +0.0347 +0.0348 83248 86140 83230 86126
Render<RightTriangle, Solid, PartiallyLit>_stddev +0.3670 +0.3423 238 326 240 322
Render<RightTriangle, Solid, PartiallyLit>_cv +0.3224 +0.2985 0 0 0 0
Render<RightTriangle, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, FullyLit>_mean -0.0617 -0.0616 102726 96392 102706 96375
Render<RightTriangle, Transparent, FullyLit>_median -0.0598 -0.0597 102521 96394 102498 96375
Render<RightTriangle, Transparent, FullyLit>_stddev -0.9516 -0.9548 456 22 461 21
Render<RightTriangle, Transparent, FullyLit>_cv -0.9485 -0.9518 0 0 0 0
Render<RightTriangle, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, FullyDark>_mean -0.1377 -0.1377 84505 72865 84492 72853
Render<RightTriangle, Transparent, FullyDark>_median -0.1374 -0.1374 84339 72748 84323 72740
Render<RightTriangle, Transparent, FullyDark>_stddev -0.2760 -0.2867 526 381 528 377
Render<RightTriangle, Transparent, FullyDark>_cv -0.1604 -0.1727 0 0 0 0
Render<RightTriangle, Transparent, PartiallyLit>_pvalue 0.0036 0.0017 U Test, Repetitions: 10 vs 10
Render<RightTriangle, Transparent, PartiallyLit>_mean +0.0010 +0.0010 131672 131808 131649 131784
Render<RightTriangle, Transparent, PartiallyLit>_median +0.0010 +0.0008 131665 131797 131654 131757
Render<RightTriangle, Transparent, PartiallyLit>_stddev -0.0688 -0.0128 81 75 72 71
Render<RightTriangle, Transparent, PartiallyLit>_cv -0.0697 -0.0138 0 0 0 0
Render<TransparentSquare, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, FullyLit>_mean -0.0300 -0.0300 143323 139021 143300 139000
Render<TransparentSquare, Solid, FullyLit>_median -0.0300 -0.0301 143321 139014 143310 138990
Render<TransparentSquare, Solid, FullyLit>_stddev +0.0008 -0.0820 43 43 43 39
Render<TransparentSquare, Solid, FullyLit>_cv +0.0318 -0.0536 0 0 0 0
Render<TransparentSquare, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, FullyDark>_mean -0.0100 -0.0100 134939 133588 134914 133565
Render<TransparentSquare, Solid, FullyDark>_median -0.0106 -0.0108 134964 133526 134948 133497
Render<TransparentSquare, Solid, FullyDark>_stddev +1.7508 +1.8682 99 273 96 276
Render<TransparentSquare, Solid, FullyDark>_cv +1.7786 +1.8972 0 0 0 0
Render<TransparentSquare, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Solid, PartiallyLit>_mean -0.0460 -0.0460 152043 145043 152016 145020
Render<TransparentSquare, Solid, PartiallyLit>_median -0.0463 -0.0461 152012 144978 151964 144962
Render<TransparentSquare, Solid, PartiallyLit>_stddev -0.4453 -0.4334 267 148 266 151
Render<TransparentSquare, Solid, PartiallyLit>_cv -0.4185 -0.4060 0 0 0 0
Render<TransparentSquare, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, FullyLit>_mean -0.0846 -0.0846 181333 165997 181304 165969
Render<TransparentSquare, Transparent, FullyLit>_median -0.0840 -0.0839 181184 165972 181147 165945
Render<TransparentSquare, Transparent, FullyLit>_stddev -0.5808 -0.5755 319 134 320 136
Render<TransparentSquare, Transparent, FullyLit>_cv -0.5421 -0.5362 0 0 0 0
Render<TransparentSquare, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, FullyDark>_mean -0.0250 -0.0250 142232 138672 142208 138648
Render<TransparentSquare, Transparent, FullyDark>_median -0.0245 -0.0245 142144 138663 142128 138639
Render<TransparentSquare, Transparent, FullyDark>_stddev +0.1011 +0.0806 288 317 290 313
Render<TransparentSquare, Transparent, FullyDark>_cv +0.1294 +0.1084 0 0 0 0
Render<TransparentSquare, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<TransparentSquare, Transparent, PartiallyLit>_mean +0.0105 +0.0105 205439 207589 205397 207556
Render<TransparentSquare, Transparent, PartiallyLit>_median +0.0106 +0.0107 205402 207575 205355 207558
Render<TransparentSquare, Transparent, PartiallyLit>_stddev -0.4410 -0.3876 182 102 167 102
Render<TransparentSquare, Transparent, PartiallyLit>_cv -0.4468 -0.3940 0 0 0 0
Render<Square, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, FullyLit>_mean -0.0010 -0.0010 11109 11098 11107 11096
Render<Square, Solid, FullyLit>_median -0.0010 -0.0010 11109 11097 11107 11095
Render<Square, Solid, FullyLit>_stddev -0.2265 +0.2791 3 2 2 2
Render<Square, Solid, FullyLit>_cv -0.2257 +0.2804 0 0 0 0
Render<Square, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, FullyDark>_mean +0.0904 +0.0904 8513 9283 8512 9282
Render<Square, Solid, FullyDark>_median +0.0902 +0.0902 8521 9290 8519 9288
Render<Square, Solid, FullyDark>_stddev -0.1884 -0.1616 21 17 21 18
Render<Square, Solid, FullyDark>_cv -0.2557 -0.2311 0 0 0 0
Render<Square, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Solid, PartiallyLit>_mean +0.0038 +0.0038 163661 164289 163632 164259
Render<Square, Solid, PartiallyLit>_median +0.0038 +0.0040 163665 164290 163621 164269
Render<Square, Solid, PartiallyLit>_stddev +0.1746 +0.4412 34 40 28 40
Render<Square, Solid, PartiallyLit>_cv +0.1701 +0.4356 0 0 0 0
Render<Square, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, FullyLit>_mean -0.0029 -0.0029 197906 197340 197876 197304
Render<Square, Transparent, FullyLit>_median -0.0030 -0.0029 197929 197339 197872 197307
Render<Square, Transparent, FullyLit>_stddev -0.5965 -0.7554 61 25 62 15
Render<Square, Transparent, FullyLit>_cv -0.5953 -0.7547 0 0 0 0
Render<Square, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, FullyDark>_mean -0.0163 -0.0163 125659 123607 125641 123588
Render<Square, Transparent, FullyDark>_median -0.0163 -0.0163 125651 123609 125629 123579
Render<Square, Transparent, FullyDark>_stddev -0.7943 -0.8033 180 37 181 36
Render<Square, Transparent, FullyDark>_cv -0.7909 -0.8000 0 0 0 0
Render<Square, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<Square, Transparent, PartiallyLit>_mean +0.0182 +0.0182 278103 283157 278043 283107
Render<Square, Transparent, PartiallyLit>_median +0.0184 +0.0184 278086 283190 278017 283120
Render<Square, Transparent, PartiallyLit>_stddev +1.6051 +1.5303 81 210 82 209
Render<Square, Transparent, PartiallyLit>_cv +1.5586 +1.4850 0 0 0 0
Render<LeftTrapezoid, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, FullyLit>_mean -0.0068 -0.0068 3299 3276 3298 3276
Render<LeftTrapezoid, Solid, FullyLit>_median -0.0068 -0.0068 3299 3276 3298 3276
Render<LeftTrapezoid, Solid, FullyLit>_stddev -0.4844 -0.6856 1 0 1 0
Render<LeftTrapezoid, Solid, FullyLit>_cv -0.4809 -0.6834 0 0 0 0
Render<LeftTrapezoid, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, FullyDark>_mean +0.3996 +0.3997 5163 7227 5162 7226
Render<LeftTrapezoid, Solid, FullyDark>_median +0.3973 +0.3974 5174 7230 5173 7229
Render<LeftTrapezoid, Solid, FullyDark>_stddev -0.7835 -0.7789 89 19 89 20
Render<LeftTrapezoid, Solid, FullyDark>_cv -0.8453 -0.8420 0 0 0 0
Render<LeftTrapezoid, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Solid, PartiallyLit>_mean -0.1228 -0.1228 50053 43907 50044 43900
Render<LeftTrapezoid, Solid, PartiallyLit>_median -0.1228 -0.1228 50062 43916 50054 43906
Render<LeftTrapezoid, Solid, PartiallyLit>_stddev +1.3916 +1.3800 63 150 64 151
Render<LeftTrapezoid, Solid, PartiallyLit>_cv +1.7263 +1.7131 0 0 0 0
Render<LeftTrapezoid, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, FullyLit>_mean -0.1584 -0.1583 62677 52751 62665 52743
Render<LeftTrapezoid, Transparent, FullyLit>_median -0.1585 -0.1585 62670 52736 62656 52728
Render<LeftTrapezoid, Transparent, FullyLit>_stddev +1.1429 +1.4086 26 55 23 55
Render<LeftTrapezoid, Transparent, FullyLit>_cv +1.5461 +1.8617 0 0 0 0
Render<LeftTrapezoid, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, FullyDark>_mean -0.1929 -0.1929 57688 46558 57679 46551
Render<LeftTrapezoid, Transparent, FullyDark>_median -0.1943 -0.1944 57681 46473 57672 46459
Render<LeftTrapezoid, Transparent, FullyDark>_stddev +2.8190 +2.7914 62 237 63 238
Render<LeftTrapezoid, Transparent, FullyDark>_cv +3.7319 +3.6978 0 0 0 0
Render<LeftTrapezoid, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<LeftTrapezoid, Transparent, PartiallyLit>_mean -0.0054 -0.0054 70694 70313 70682 70301
Render<LeftTrapezoid, Transparent, PartiallyLit>_median -0.0050 -0.0048 70671 70319 70650 70311
Render<LeftTrapezoid, Transparent, PartiallyLit>_stddev -0.7448 -0.7617 163 42 168 40
Render<LeftTrapezoid, Transparent, PartiallyLit>_cv -0.7434 -0.7604 0 0 0 0
Render<RightTrapezoid, Solid, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, FullyLit>_mean +0.0123 +0.0123 2985 3022 2984 3021
Render<RightTrapezoid, Solid, FullyLit>_median +0.0123 +0.0123 2985 3021 2984 3021
Render<RightTrapezoid, Solid, FullyLit>_stddev -0.4207 -0.4667 1 0 1 0
Render<RightTrapezoid, Solid, FullyLit>_cv -0.4277 -0.4731 0 0 0 0
Render<RightTrapezoid, Solid, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, FullyDark>_mean +0.1105 +0.1105 4894 5435 4893 5434
Render<RightTrapezoid, Solid, FullyDark>_median +0.1083 +0.1082 4902 5433 4901 5432
Render<RightTrapezoid, Solid, FullyDark>_stddev -0.1973 -0.1947 45 37 45 37
Render<RightTrapezoid, Solid, FullyDark>_cv -0.2772 -0.2748 0 0 0 0
Render<RightTrapezoid, Solid, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Solid, PartiallyLit>_mean -0.0169 -0.0169 48201 47386 48192 47379
Render<RightTrapezoid, Solid, PartiallyLit>_median -0.0172 -0.0170 48184 47355 48170 47351
Render<RightTrapezoid, Solid, PartiallyLit>_stddev +0.6070 +0.5204 48 78 50 76
Render<RightTrapezoid, Solid, PartiallyLit>_cv +0.6346 +0.5465 0 0 0 0
Render<RightTrapezoid, Transparent, FullyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, FullyLit>_mean -0.0023 -0.0023 48751 48639 48742 48632
Render<RightTrapezoid, Transparent, FullyLit>_median -0.0020 -0.0018 48751 48654 48738 48651
Render<RightTrapezoid, Transparent, FullyLit>_stddev +2.4354 +2.4427 10 35 11 36
Render<RightTrapezoid, Transparent, FullyLit>_cv +2.4433 +2.4505 0 0 0 0
Render<RightTrapezoid, Transparent, FullyDark>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, FullyDark>_mean -0.2247 -0.2247 40942 31742 40936 31736
Render<RightTrapezoid, Transparent, FullyDark>_median -0.2241 -0.2240 40904 31739 40895 31734
Render<RightTrapezoid, Transparent, FullyDark>_stddev -0.3455 -0.3546 165 108 167 108
Render<RightTrapezoid, Transparent, FullyDark>_cv -0.1558 -0.1676 0 0 0 0
Render<RightTrapezoid, Transparent, PartiallyLit>_pvalue 0.0002 0.0002 U Test, Repetitions: 10 vs 10
Render<RightTrapezoid, Transparent, PartiallyLit>_mean -0.0908 -0.0908 74269 67523 74256 67512
Render<RightTrapezoid, Transparent, PartiallyLit>_median -0.0898 -0.0897 74196 67536 74176 67523
Render<RightTrapezoid, Transparent, PartiallyLit>_stddev -0.6590 -0.6568 147 50 146 50
Render<RightTrapezoid, Transparent, PartiallyLit>_cv -0.6250 -0.6225 0 0 0 0
BM_RenderBlackTile_pvalue 0.0539 0.0539 U Test, Repetitions: 10 vs 10
BM_RenderBlackTile_mean -0.0188 -0.0188 125 123 125 123
BM_RenderBlackTile_median -0.0263 -0.0264 126 122 125 122
BM_RenderBlackTile_stddev +1.0907 +1.0966 1 3 1 3
BM_RenderBlackTile_cv +1.1307 +1.1368 0 0 0 0
OVERALL_GEOMEAN -0.0207 -0.0207 0 0 0 0
```
8 months ago
|
|
|
source.lightTables, source.fullyLitLightTable_, source.fullyDarkLightTable_);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace devilution
|