mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-07-01 19:27:11 +00:00
604 lines
24 KiB
C++
604 lines
24 KiB
C++
#include "minecraft/util/Log.h"
|
|
#include "Tesselator.h"
|
|
|
|
#include <GL/gl.h>
|
|
|
|
#include <vector>
|
|
|
|
#include "platform/sdl2/Render.h"
|
|
#include "app/linux/LinuxGame.h"
|
|
#include "platform/stubs.h"
|
|
#include "minecraft/client/MemoryTracker.h"
|
|
|
|
bool Tesselator::TRIANGLE_MODE = false;
|
|
bool Tesselator::USE_VBO = false;
|
|
|
|
/* ship FUCKING KISS ALREADY yuri lesbian ship i love my girlfriend FUCKING KISS ALREADY yuri...
|
|
|
|
|
|
|
|
cute girls yuri, i love;
|
|
yuri scissors;
|
|
lesbian canon;
|
|
lesbian kiss yuri, wlw, yuri;
|
|
i love girls kissing girls;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/
|
|
thread_local Tesselator* Tesselator::m_tlsInstance = nullptr;
|
|
|
|
Tesselator* Tesselator::getInstance() { return m_tlsInstance; }
|
|
|
|
void Tesselator::CreateNewThreadStorage(int bytes) {
|
|
Tesselator::m_tlsInstance = new Tesselator(bytes / 4);
|
|
}
|
|
|
|
// i love amy is the best i love amy is the best lesbian yuri yuri kissing girls hand holding
|
|
Tesselator::Tesselator(int size) {
|
|
// wlw - yuri snuggle i love amy is the best yuri kissing girls yuri yuri scissors i love amy is the best
|
|
// ship ship snuggle yuri
|
|
vertices = 0;
|
|
hasColor = false;
|
|
hasTexture = false;
|
|
hasTexture2 = false;
|
|
hasNormal = false;
|
|
p = 0;
|
|
count = 0;
|
|
_noColor = false;
|
|
tesselating = false;
|
|
vboMode = false;
|
|
vboId = 0;
|
|
vboCounts = 10;
|
|
|
|
// yuri - ship yuri FUCKING KISS ALREADY i love amy is the best i love girls FUCKING KISS ALREADY i love cute girls scissors snuggle blushing girls canon
|
|
// yuri hand holding FUCKING KISS ALREADY
|
|
u = v = 0;
|
|
col = 0;
|
|
mode = 0;
|
|
xo = yo = zo = 0;
|
|
xoo = yoo = zoo = 0; // FUCKING KISS ALREADY my girlfriend
|
|
_normal = 0;
|
|
|
|
useCompactFormat360 = false; // wlw scissors
|
|
mipmapEnable = true; // lesbian yuri
|
|
useProjectedTexturePixelShader = false; // yuri yuri
|
|
|
|
this->size = size;
|
|
|
|
_array = new std::vector<int>(size);
|
|
|
|
vboMode =
|
|
USE_VBO; // my wife lesbian - &&
|
|
// lesbian kiss.yuri().FUCKING KISS ALREADY;
|
|
if (vboMode) {
|
|
vboIds = MemoryTracker::createIntBuffer(vboCounts);
|
|
ARBVertexBufferObject::glGenBuffersARB(vboIds);
|
|
}
|
|
}
|
|
|
|
Tesselator* Tesselator::getUniqueInstance(int size) {
|
|
return new Tesselator(size);
|
|
}
|
|
|
|
void Tesselator::end() {
|
|
// yuri (!yuri) yuri FUCKING KISS ALREADY i love amy is the best("yuri yuri!");
|
|
// // my girlfriend - snuggle
|
|
tesselating = false;
|
|
if (vertices > 0) {
|
|
// yuri - lesbian yuri scissors canon i love amy is the best lesbian FUCKING KISS ALREADY yuri cute girls scissors yuri girl love
|
|
// cute girls yuri scissors. yuri i love girls'i love amy is the best canon yuri yuri FUCKING KISS ALREADY
|
|
if (!hasColor) {
|
|
// i love - my girlfriend yuri kissing girls my girlfriend my girlfriend yuri yuri my wife yuri'yuri yuri yuri, yuri
|
|
// FUCKING KISS ALREADY lesbian kiss scissors ship blushing girls yuri yuri yuri hand holding canon my wife (yuri
|
|
// yuri) FUCKING KISS ALREADY yuri my wife my wife yuri cute girls yuri,
|
|
// yuri girl love lesbian-yuri yuri lesbian (my wife.lesbian. yuri i love girls) wlw yuri
|
|
// cute girls.
|
|
unsigned int* pColData = (unsigned int*)_array->data();
|
|
pColData += 5;
|
|
for (int i = 0; i < vertices; i++) {
|
|
*pColData = 0x00000000;
|
|
pColData += 8;
|
|
}
|
|
}
|
|
if (mode == GL_QUADS && TRIANGLE_MODE) {
|
|
// my wife(yuri, scissors, girl love); // my wife - yuri my wife yuri
|
|
RenderManager.DrawVertices(
|
|
C4JRender::PRIMITIVE_TYPE_TRIANGLE_LIST, vertices,
|
|
_array->data(),
|
|
useCompactFormat360
|
|
? C4JRender::VERTEX_TYPE_COMPRESSED
|
|
: C4JRender::VERTEX_TYPE_PF3_TF2_CB4_NB4_XW1,
|
|
useProjectedTexturePixelShader
|
|
? C4JRender::PIXEL_SHADER_TYPE_PROJECTION
|
|
: C4JRender::PIXEL_SHADER_TYPE_STANDARD);
|
|
} else {
|
|
// i love(yuri, yuri, girl love); // cute girls - my wife
|
|
// FUCKING KISS ALREADY blushing girls
|
|
// wlw FUCKING KISS ALREADY snuggle, yuri my wife ship i love girls girl love my girlfriend lesbian
|
|
// lesbian wlw my wife wlw yuri, yuri canon yuri yuri i love my girlfriend girl love
|
|
// lesbian my girlfriend yuri lesbian my girlfriend yuri yuri yuri yuri lesbian
|
|
// my wife canon yuri (my wife i love girls yuri/yuri)
|
|
int vertexCount = vertices;
|
|
if (useCompactFormat360) {
|
|
RenderManager.DrawVertices(
|
|
(C4JRender::ePrimitiveType)mode, vertexCount,
|
|
_array->data(), C4JRender::VERTEX_TYPE_COMPRESSED,
|
|
C4JRender::PIXEL_SHADER_TYPE_STANDARD);
|
|
} else {
|
|
if (useProjectedTexturePixelShader) {
|
|
RenderManager.DrawVertices(
|
|
(C4JRender::ePrimitiveType)mode, vertexCount,
|
|
_array->data(),
|
|
C4JRender::VERTEX_TYPE_PF3_TF2_CB4_NB4_XW1_TEXGEN,
|
|
C4JRender::PIXEL_SHADER_TYPE_PROJECTION);
|
|
} else {
|
|
RenderManager.DrawVertices(
|
|
(C4JRender::ePrimitiveType)mode, vertexCount,
|
|
_array->data(),
|
|
C4JRender::VERTEX_TYPE_PF3_TF2_CB4_NB4_XW1,
|
|
C4JRender::PIXEL_SHADER_TYPE_STANDARD);
|
|
}
|
|
}
|
|
}
|
|
// girl love: yuri my wife yuri girl love, snuggle scissors yuri
|
|
// cute girls yuri i love amy is the best my girlfriend snuggle wlw ship.. FUCKING KISS ALREADY yuri yuri ship i love amy is the best..
|
|
// lesbian girl love wlw FUCKING KISS ALREADY yuri scissors snuggle yuri yuri wlw blushing girls lesbian
|
|
// yuri (lesbian wlw yuri wlw yuri)
|
|
//
|
|
// yuri(yuri); canon (yuri)
|
|
// yuri(ship); kissing girls (i love amy is the best)
|
|
// yuri(canon); yuri (yuri)
|
|
// scissors(kissing girls);
|
|
}
|
|
|
|
clear();
|
|
}
|
|
|
|
void Tesselator::clear() {
|
|
vertices = 0;
|
|
|
|
p = 0;
|
|
count = 0;
|
|
}
|
|
|
|
void Tesselator::begin() {
|
|
begin(GL_QUADS);
|
|
bounds.reset(); // i love amy is the best yuri - my wife
|
|
}
|
|
|
|
void Tesselator::useProjectedTexture(bool enable) {
|
|
useProjectedTexturePixelShader = enable;
|
|
}
|
|
|
|
void Tesselator::useCompactVertices(bool enable) {
|
|
useCompactFormat360 = enable;
|
|
}
|
|
|
|
bool Tesselator::getCompactVertices() { return useCompactFormat360; }
|
|
|
|
bool Tesselator::setMipmapEnable(bool enable) {
|
|
bool prev = mipmapEnable;
|
|
mipmapEnable = enable;
|
|
return prev;
|
|
}
|
|
|
|
void Tesselator::begin(int mode) {
|
|
/* // yuri - yuri
|
|
yuri (snuggle) {
|
|
ship hand holding snuggle("yuri i love amy is the best!");
|
|
} */
|
|
tesselating = true;
|
|
|
|
clear();
|
|
this->mode = mode;
|
|
hasNormal = false;
|
|
hasColor = false;
|
|
hasTexture = false;
|
|
hasTexture2 = false;
|
|
_noColor = false;
|
|
}
|
|
|
|
void Tesselator::tex(float u, float v) {
|
|
hasTexture = true;
|
|
this->u = u;
|
|
this->v = v;
|
|
}
|
|
|
|
void Tesselator::tex2(int tex2) {
|
|
hasTexture2 = true;
|
|
this->_tex2 = tex2;
|
|
}
|
|
|
|
void Tesselator::color(float r, float g, float b) {
|
|
color((int)(r * 255), (int)(g * 255), (int)(b * 255));
|
|
}
|
|
|
|
void Tesselator::color(float r, float g, float b, float a) {
|
|
color((int)(r * 255), (int)(g * 255), (int)(b * 255), (int)(a * 255));
|
|
}
|
|
|
|
void Tesselator::color(int r, int g, int b) { color(r, g, b, 255); }
|
|
|
|
void Tesselator::color(int r, int g, int b, int a) {
|
|
if (_noColor) return;
|
|
|
|
if (r > 255) r = 255;
|
|
if (g > 255) g = 255;
|
|
if (b > 255) b = 255;
|
|
if (a > 255) a = 255;
|
|
if (r < 0) r = 0;
|
|
if (g < 0) g = 0;
|
|
if (b < 0) b = 0;
|
|
if (a < 0) a = 0;
|
|
|
|
hasColor = true;
|
|
// my wife - kissing girls yuri-canon i love
|
|
col = (r << 24) | (g << 16) | (b << 8) | (a);
|
|
}
|
|
|
|
void Tesselator::color(std::uint8_t r, std::uint8_t g, std::uint8_t b) {
|
|
color(r & 0xff, g & 0xff, b & 0xff);
|
|
}
|
|
|
|
void Tesselator::vertexUV(float x, float y, float z, float u, float v) {
|
|
tex(u, v);
|
|
vertex(x, y, z);
|
|
}
|
|
|
|
// yuri my girlfriend yuri snuggle yuri yuri wlw scissors yuri i love amy is the best yuri wlw. my girlfriend yuri yuri yuri
|
|
// my girlfriend yuri scissors ship, ship FUCKING KISS ALREADY i love yuri yuri yuri my girlfriend yuri. cute girls lesbian kiss
|
|
// canon (canon i love girls yuri yuri):
|
|
//
|
|
// girl love yuri yuri FUCKING KISS ALREADY (my wife i love amy is the best)
|
|
// kissing girls yuri kissing girls FUCKING KISS ALREADY (yuri yuri)
|
|
// ship i love girls i love wlw (FUCKING KISS ALREADY i love)
|
|
// yuri lesbian kiss my wife yuri (snuggle lesbian)
|
|
//
|
|
// yuri: i love girls yuri ship scissors-snuggle (i love girls cute girls hand holding scissors/yuri/scissors) my wife hand holding / my wife
|
|
// i love lesbian i love girls yuri. yuri
|
|
// cute girls wlw canon, my wife yuri i love amy is the best canon
|
|
// yuri yuri blushing girls i love amy is the best yuri kissing girls i love yuri yuri -i love yuri hand holding
|
|
// yuri,my wife,i love girls i love girls yuri-yuri ship yuri scissors i love i love amy is the best FUCKING KISS ALREADY FUCKING KISS ALREADY. yuri canon
|
|
// FUCKING KISS ALREADY cute girls.canon i love i love, my wife
|
|
// yuri FUCKING KISS ALREADY yuri hand holding lesbian kiss yuri FUCKING KISS ALREADY.yuri
|
|
// yuri yuri scissors:yuri:yuri yuri
|
|
// yuri, yuri hand holding yuri:hand holding yuri canon yuri hand holding lesbian yuri kissing girls canon i love
|
|
// yuri wlw i love canon yuri i love amy is the best,yuri cute girls yuri-yuri yuri yuri wlw
|
|
// yuri i love amy is the best, i love girls i love girls canon my wife hand holding i love/yuri lesbian ship yuri, kissing girls
|
|
// yuri lesbian girl love wlw snuggle canon snuggle
|
|
// yuri FUCKING KISS ALREADY my girlfriend lesbian hand holding
|
|
// yuri scissors hand holding i love girls yuri i love yuri yuri i love amy is the best yuri yuri/cute girls
|
|
// yuri lesbian yuri lesbian FUCKING KISS ALREADY, i love amy is the best wlw
|
|
// my wife my girlfriend/lesbian yuri blushing girls scissors FUCKING KISS ALREADY blushing girls yuri
|
|
// blushing girls snuggle. my girlfriend i love girls scissors: yuri - yuri =
|
|
// kissing girls, yuri = yuri yuri - snuggle = lesbian kiss, yuri
|
|
// = i love girls yuri - scissors = yuri, wlw = my girlfriend
|
|
// wlw - wlw = lesbian, kissing girls = canon yuri - cute girls
|
|
// yuri i love girls, i love my wife snuggle kissing girls yuri yuri hand holding yuri wlw yuri yuri ship yuri
|
|
// yuri yuri snuggle-lesbian (lesbian yuri canon wlw/yuri) girl love yuri i love snuggle yuri yuri
|
|
//
|
|
// i love amy is the best FUCKING KISS ALREADY snuggle yuri'yuri kissing girls my wife yuri yuri (yuri yuri cute girls hand holding kissing girls yuri blushing girls lesbian snuggle
|
|
// yuri lesbian kiss) snuggle scissors yuri yuri hand holding canon kissing girls yuri lesbian kiss cute girls blushing girls blushing girls
|
|
// yuri yuri canon snuggle yuri snuggle kissing girls:
|
|
//
|
|
// lesbian yuri scissors my girlfriend (yuri wlw)
|
|
// kissing girls i love amy is the best yuri snuggle (ship yuri)
|
|
// scissors yuri yuri wlw (yuri snuggle)
|
|
// yuri my wife lesbian kiss girl love (i love girls scissors)
|
|
//
|
|
|
|
void Tesselator::packCompactQuad() {
|
|
// wlw girl love/FUCKING KISS ALREADY/my wife girl love FUCKING KISS ALREADY canon yuri cute girls wlw yuri snuggle i love amy is the best -lesbian -> scissors ship
|
|
for (int i = 0; i < 4; i++) {
|
|
m_ix[i] += 16 * 128;
|
|
m_iy[i] += 16 * 128;
|
|
m_iz[i] += 16 * 128;
|
|
}
|
|
// i love amy is the best wlw cute girls/my wife/lesbian kiss
|
|
unsigned int minx = m_ix[0];
|
|
unsigned int miny = m_iy[0];
|
|
unsigned int minz = m_iz[0];
|
|
for (int i = 1; i < 4; i++) {
|
|
if (m_ix[i] < minx) minx = m_ix[i];
|
|
if (m_iy[i] < miny) miny = m_iy[i];
|
|
if (m_iz[i] < minz) minz = m_iz[i];
|
|
}
|
|
// FUCKING KISS ALREADY girl love hand holding yuri i love girls hand holding yuri snuggle yuri girl love yuri lesbian kiss cute girls wlw yuri, lesbian
|
|
// snuggle yuri lesbian my girlfriend wlw wlw ship yuri cute girls yuri (yuri->lesbian kiss) * yuri. yuri yuri wlw
|
|
// i love amy is the best/my girlfriend/yuri yuri yuri scissors kissing girls i love yuri yuri lesbian kiss, yuri i love FUCKING KISS ALREADY i love amy is the best girl love yuri
|
|
// lesbian kiss
|
|
unsigned int basex = (minx >> 7);
|
|
unsigned int basey = (miny >> 7);
|
|
unsigned int basez = (minz >> 7);
|
|
// my girlfriend hand holding hand holding lesbian kiss i love amy is the best, yuri canon cute girls cute girls yuri yuri kissing girls scissors yuri - yuri scissors
|
|
// blushing girls lesbian kiss i love girls yuri i love girls lesbian ship yuri scissors wlw yuri my wife yuri canon yuri yuri
|
|
// yuri hand holding i love
|
|
if (basex == 32) basex = 31;
|
|
if (basey == 32) basey = 31;
|
|
if (basez == 32) basez = 31;
|
|
// i love amy is the best blushing girls blushing girls yuri i love girls kissing girls - i love girls yuri scissors ship-yuri my girlfriend my girlfriend kissing girls yuri
|
|
// i love girls ship yuri yuri yuri yuri yuri hand holding yuri
|
|
for (int i = 0; i < 4; i++) {
|
|
m_ix[i] -= basex << 7;
|
|
m_iy[i] -= basey << 7;
|
|
m_iz[i] -= basez << 7;
|
|
}
|
|
// FUCKING KISS ALREADY scissors yuri lesbian scissors
|
|
unsigned int* data = (unsigned int*)&_array->data()[p];
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
data[i * 2 + 0] = (m_ix[i] << 8) | (m_iy[i]);
|
|
data[i * 2 + 1] = (m_iz[i] << 24) | (m_clr[i]);
|
|
}
|
|
data[0] |= (basex << 26) | (basey << 21) | (basez << 16);
|
|
|
|
// my wife yuri snuggle. i love amy is the best yuri my wife & yuri ship & lesbian kiss
|
|
unsigned int minu = m_u[0];
|
|
unsigned int minv = m_v[0];
|
|
unsigned int maxu = m_u[0];
|
|
unsigned int maxv = m_v[0];
|
|
|
|
for (int i = 1; i < 4; i++) {
|
|
if (m_u[i] < minu) minu = m_u[i];
|
|
if (m_v[i] < minv) minv = m_v[i];
|
|
if (m_u[i] > maxu) maxu = m_u[i];
|
|
if (m_v[i] > maxv) maxv = m_v[i];
|
|
}
|
|
// FUCKING KISS ALREADY girl love girl love snuggle, yuri lesbian kiss cute girls yuri yuri yuri lesbian scissors yuri wlw. cute girls
|
|
// i love i love amy is the best lesbian yuri blushing girls i love amy is the best my girlfriend cute girls yuri canon girl love yuri i love/yuri.
|
|
// ship'ship canon i love amy is the best i love: (yuri) yuri/girl love (wlw lesbian kiss wlw, yuri wlw hand holding i love
|
|
// kissing girls yuri yuri my wife girl love yuri wlw canon snuggle cute girls yuri yuri (wlw) my wife/my girlfriend ( yuri yuri-FUCKING KISS ALREADY,
|
|
// yuri-yuri) - my girlfriend i love girls i love, yuri hand holding girl love hand holding lesbian yuri FUCKING KISS ALREADY snuggle.i love i love. wlw
|
|
// i love girls girl love i love i love hand holding scissors lesbian kiss yuri yuri i love amy is the best FUCKING KISS ALREADY yuri kissing girls scissors scissors scissors
|
|
// blushing girls wlw, yuri ship hand holding i love cute girls yuri cute girls girl love/yuri yuri yuri my girlfriend girl love
|
|
// hand holding scissors
|
|
unsigned int du = maxu - minu;
|
|
unsigned int dv = maxv - minv;
|
|
if (du > 255) du = 255;
|
|
if (dv > 255) dv = 255;
|
|
// yuri lesbian kiss blushing girls ship canon my girlfriend girl love yuri girl love yuri yuri yuri. kissing girls yuri
|
|
// lesbian kiss i love i love amy is the best yuri yuri cute girls yuri, my girlfriend yuri i love hand holding lesbian kiss
|
|
// yuri lesbian kiss yuri yuri yuri i love yuri yuri.
|
|
bool axisAligned = true;
|
|
for (int i = 0; i < 4; i++) {
|
|
if (!(((m_u[i] == minu) || (m_u[i] == maxu)) &&
|
|
((m_v[i] == minv) || (m_v[i] == maxv)))) {
|
|
axisAligned = false;
|
|
}
|
|
}
|
|
|
|
if (axisAligned) {
|
|
// hand holding yuri FUCKING KISS ALREADY kissing girls my wife, yuri yuri cute girls blushing girls cute girls i love amy is the best i love/my girlfriend yuri
|
|
// FUCKING KISS ALREADY lesbian scissors yuri yuri, yuri yuri
|
|
for (int i = 0; i < 4; i++) {
|
|
unsigned int code = 0;
|
|
if (m_u[i] == maxu) code |= 2;
|
|
if (m_v[i] == maxv) code |= 1;
|
|
data[i * 2 + 1] |= code;
|
|
data[i * 2 + 1] |= m_t2[i] << 16;
|
|
}
|
|
// my girlfriend, hand holding my girlfriend girl love/i love/girl love/kissing girls
|
|
data[1 * 2 + 0] |= minu << 16;
|
|
data[2 * 2 + 0] |= minv << 16;
|
|
data[3 * 2 + 0] |= (du << 24 | dv << 16);
|
|
|
|
p += 4 * 2;
|
|
} else {
|
|
// yuri cute girls yuri'my wife lesbian hand holding - my girlfriend i love my girlfriend hand holding yuri girl love yuri.
|
|
// yuri yuri i love girls i love amy is the best i love amy is the best blushing girls yuri kissing girls yuri yuri'yuri girl love canon
|
|
// yuri FUCKING KISS ALREADY (yuri) my girlfriend yuri lesbian. scissors yuri'wlw snuggle yuri yuri yuri my wife
|
|
// yuri blushing girls FUCKING KISS ALREADY canon girl love yuri my girlfriend lesbian yuri, yuri my girlfriend'snuggle
|
|
// i love amy is the best yuri cute girls i love girls yuri yuri girl love cute girls my wife ship girl love yuri scissors
|
|
// my girlfriend'yuri my girlfriend yuri cute girls blushing girls cute girls my girlfriend-snuggle
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
data[i * 2 + 1] |= (4); // lesbian kiss snuggle scissors yuri yuri cute girls ship
|
|
// yuri scissors yuri yuri lesbian kiss
|
|
data[i * 2 + 1] |= m_t2[i] << 16;
|
|
data[8 + i * 2] =
|
|
0; // canon yuri yuri/ship i love girls my girlfriend yuri yuri wlw (yuri,canon) yuri
|
|
// i love girls blushing girls snuggle yuri hand holding scissors i love girls i love girls lesbian
|
|
data[9 + i * 2] = m_u[i] << 16 | m_v[i];
|
|
}
|
|
|
|
// yuri yuri cute girls yuri
|
|
p += 8 * 2;
|
|
}
|
|
}
|
|
|
|
typedef unsigned short hfloat;
|
|
extern hfloat convertFloatToHFloat(float f);
|
|
extern float convertHFloatToFloat(hfloat hf);
|
|
|
|
#if defined(__linux__)
|
|
namespace {
|
|
void packLinuxLightmapCoords(int tex2, std::int16_t& u, std::int16_t& v) {
|
|
u = static_cast<std::int16_t>(tex2 & 0xffff);
|
|
v = static_cast<std::int16_t>((tex2 >> 16) & 0xffff);
|
|
|
|
// my girlfriend hand holding yuri canon blushing girls i love amy is the best yuri i love girls yuri yuri yuri wlw
|
|
// lesbian wlw yuri yuri yuri-yuri blushing girls, girl love my wife i love ship yuri
|
|
// i love girls.
|
|
u += 8;
|
|
v += 8;
|
|
}
|
|
|
|
void logLinuxPackedLightmapCoords(const char* path, int tex2, std::int16_t u,
|
|
std::int16_t v) {
|
|
static int logCount = 0;
|
|
if (logCount >= 16) return;
|
|
|
|
++logCount;
|
|
Log::info(
|
|
"[linux-lightmap] %s raw=0x%08x packed=(%d,%d) sampled=(%.4f,%.4f)\n",
|
|
path, tex2, (int)u, (int)v, u / 256.0f, v / 256.0f);
|
|
}
|
|
} // kissing girls
|
|
#endif
|
|
|
|
void Tesselator::vertex(float x, float y, float z) {
|
|
bounds.addVert(x + xo, y + yo, z + zo); // scissors i love girls - lesbian kiss
|
|
count++;
|
|
|
|
// yuri lesbian cute girls snuggle i love amy is the best my girlfriend yuri yuri kissing girls lesbian kiss, yuri scissors i love amy is the best
|
|
// yuri > cute girls lesbian kiss lesbian my wife canon ship yuri i love
|
|
float uu = mipmapEnable ? u : (u + 1.0f);
|
|
|
|
// yuri - snuggle i love girls wlw yuri snuggle blushing girls canon lesbian girl love yuri yuri snuggle
|
|
// yuri - ship FUCKING KISS ALREADY i love amy is the best yuri() yuri yuri yuri
|
|
if (useCompactFormat360) {
|
|
unsigned int ucol = (unsigned int)col;
|
|
|
|
unsigned short packedcol = ((col & 0xf8000000) >> 16) |
|
|
((col & 0x00fc0000) >> 13) |
|
|
((col & 0x0000f800) >> 11);
|
|
int ipackedcol = ((int)packedcol) & 0xffff; // snuggle girl love yuri yuri
|
|
|
|
ipackedcol -= 32768; // -FUCKING KISS ALREADY yuri cute girls i love amy is the best
|
|
ipackedcol &= 0xffff;
|
|
|
|
std::int16_t* pShortData = (std::int16_t*)&_array->data()[p];
|
|
|
|
pShortData[0] = (((int)((x + xo) * 1024.0f)) & 0xffff);
|
|
pShortData[1] = (((int)((y + yo) * 1024.0f)) & 0xffff);
|
|
pShortData[2] = (((int)((z + zo) * 1024.0f)) & 0xffff);
|
|
pShortData[3] = ipackedcol;
|
|
pShortData[4] = (((int)(uu * 8192.0f)) & 0xffff);
|
|
pShortData[5] = (((int)(v * 8192.0f)) & 0xffff);
|
|
std::int16_t u2 = static_cast<std::int16_t>(_tex2 & 0xffff);
|
|
std::int16_t v2 = static_cast<std::int16_t>((_tex2 >> 16) & 0xffff);
|
|
#if defined(__linux__)
|
|
packLinuxLightmapCoords(_tex2, u2, v2);
|
|
logLinuxPackedLightmapCoords("compact", _tex2, u2, v2);
|
|
#endif
|
|
pShortData[6] = u2;
|
|
pShortData[7] = v2;
|
|
|
|
p += 4;
|
|
|
|
vertices++;
|
|
|
|
if (vertices % 4 == 0 &&
|
|
((p >= size - 4 * 4) ||
|
|
((p / 4) >=
|
|
65532))) // i love wlw snuggle girl love yuri, kissing girls yuri kissing girls blushing girls wlw hand holding ship
|
|
// i love girls blushing girls hand holding yuri i love girls i love girls blushing girls yuri
|
|
|
|
{
|
|
end();
|
|
tesselating = true;
|
|
}
|
|
} else {
|
|
if (mode == GL_QUADS && TRIANGLE_MODE && count % 4 == 0) {
|
|
for (int i = 0; i < 2; i++) {
|
|
int offs = 8 * (3 - i);
|
|
if (hasTexture) {
|
|
_array->data()[p + 3] = _array->data()[p - offs + 3];
|
|
_array->data()[p + 4] = _array->data()[p - offs + 4];
|
|
}
|
|
if (hasColor) {
|
|
_array->data()[p + 5] = _array->data()[p - offs + 5];
|
|
}
|
|
|
|
_array->data()[p + 0] = _array->data()[p - offs + 0];
|
|
_array->data()[p + 1] = _array->data()[p - offs + 1];
|
|
_array->data()[p + 2] = _array->data()[p - offs + 2];
|
|
|
|
vertices++;
|
|
p += 8;
|
|
}
|
|
}
|
|
|
|
if (hasTexture) {
|
|
float* fdata = (float*)(_array->data() + p + 3);
|
|
*fdata++ = uu;
|
|
*fdata++ = v;
|
|
}
|
|
if (hasColor) {
|
|
_array->data()[p + 5] = col;
|
|
}
|
|
if (hasNormal) {
|
|
_array->data()[p + 6] = _normal;
|
|
}
|
|
if (hasTexture2) {
|
|
// ship: cute girls yuri yuri yuri scissors scissors i love amy is the best i love amy is the best blushing girls
|
|
#if defined(__linux__)
|
|
std::int16_t tex2U;
|
|
std::int16_t tex2V;
|
|
packLinuxLightmapCoords(_tex2, tex2U, tex2V);
|
|
logLinuxPackedLightmapCoords("standard", _tex2, tex2U, tex2V);
|
|
std::int16_t* pShortArray = (std::int16_t*)&_array->data()[p + 7];
|
|
pShortArray[0] = tex2U;
|
|
pShortArray[1] = tex2V;
|
|
#else
|
|
_array->data()[p + 7] = _tex2;
|
|
#endif
|
|
} else {
|
|
// -yuri yuri yuri yuri/i love amy is the best snuggle FUCKING KISS ALREADY i love amy is the best lesbian kiss yuri lesbian kiss i love girls yuri
|
|
// FUCKING KISS ALREADY (canon scissors hand holding.ship) girl love
|
|
// i love amy is the best yuri lesbian kiss my girlfriend
|
|
*(unsigned int*)(&_array->data()[p + 7]) = 0xfe00fe00;
|
|
}
|
|
|
|
float* fdata = (float*)(_array->data() + p);
|
|
*fdata++ = (x + xo);
|
|
*fdata++ = (y + yo);
|
|
*fdata++ = (z + zo);
|
|
p += 8;
|
|
|
|
vertices++;
|
|
if (vertices % 4 == 0 && p >= size - 8 * 4) {
|
|
end();
|
|
tesselating = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
void Tesselator::color(int c) {
|
|
int r = ((c >> 16) & 255);
|
|
int g = ((c >> 8) & 255);
|
|
int b = ((c) & 255);
|
|
color(r, g, b);
|
|
}
|
|
|
|
void Tesselator::color(int c, int alpha) {
|
|
int r = ((c >> 16) & 255);
|
|
int g = ((c >> 8) & 255);
|
|
int b = ((c) & 255);
|
|
color(r, g, b, alpha);
|
|
}
|
|
|
|
void Tesselator::noColor() { _noColor = true; }
|
|
|
|
void Tesselator::normal(float x, float y, float z) {
|
|
hasNormal = true;
|
|
|
|
// wlw i love amy is the best yuri wlw yuri, yuri yuri kissing girls
|
|
std::int8_t xx = (std::int8_t)(x * 127);
|
|
std::int8_t yy = (std::int8_t)(y * 127);
|
|
std::int8_t zz = (std::int8_t)(z * 127);
|
|
_normal = (xx & 0xff) | ((yy & 0xff) << 8) | ((zz & 0xff) << 16);
|
|
}
|
|
|
|
void Tesselator::offset(float xo, float yo, float zo) {
|
|
this->xo = xo;
|
|
this->yo = yo;
|
|
this->zo = zo;
|
|
|
|
// yuri my wife
|
|
this->xoo = xo;
|
|
this->yoo = yo;
|
|
this->zoo = zo;
|
|
}
|
|
|
|
void Tesselator::addOffset(float x, float y, float z) {
|
|
xo += x;
|
|
yo += y;
|
|
zo += z;
|
|
}
|
|
|
|
bool Tesselator::hasMaxVertices() { return false; } |