update ContentGfxCache

This commit is contained in:
MihailRis
2025-07-24 22:51:53 +03:00
parent 4a6ccf4847
commit 799d712447
5 changed files with 69 additions and 35 deletions
+4 -3
View File
@@ -27,9 +27,10 @@ std::unique_ptr<ImageData> BlocksPreview::draw(
){
display::clear();
blockid_t id = def.rt.id;
const UVRegion texfaces[6]{cache.getRegion(id, 0, 0), cache.getRegion(id, 0, 1),
cache.getRegion(id, 0, 2), cache.getRegion(id, 0, 3),
cache.getRegion(id, 0, 4), cache.getRegion(id, 0, 5)};
const UVRegion texfaces[6] {
cache.getRegion(id, 0, 0, true), cache.getRegion(id, 0, 1, true),
cache.getRegion(id, 0, 2, true), cache.getRegion(id, 0, 3, true),
cache.getRegion(id, 0, 4, true), cache.getRegion(id, 0, 5, true)};
glm::vec3 offset(0.1f, 0.5f, 0.1f);
switch (def.defaults.model.type) {
+22 -12
View File
@@ -477,6 +477,7 @@ glm::vec4 BlocksRenderer::pickSoftLight(
void BlocksRenderer::render(
const voxel* voxels, int beginEnds[256][2]
) {
bool denseRender = this->denseRender;
for (const auto drawGroup : *content.drawGroups) {
int begin = beginEnds[drawGroup][0];
if (begin == 0) {
@@ -497,12 +498,12 @@ void BlocksRenderer::render(
continue;
}
const UVRegion texfaces[6] {
cache.getRegion(id, variantId, 0),
cache.getRegion(id, variantId, 1),
cache.getRegion(id, variantId, 2),
cache.getRegion(id, variantId, 3),
cache.getRegion(id, variantId, 4),
cache.getRegion(id, variantId, 5)
cache.getRegion(id, variantId, 0, denseRender),
cache.getRegion(id, variantId, 1, denseRender),
cache.getRegion(id, variantId, 2, denseRender),
cache.getRegion(id, variantId, 3, denseRender),
cache.getRegion(id, variantId, 4, denseRender),
cache.getRegion(id, variantId, 5, denseRender)
};
int x = i % CHUNK_W;
int y = i / (CHUNK_D * CHUNK_W);
@@ -550,6 +551,8 @@ SortingMeshData BlocksRenderer::renderTranslucent(
AABB aabb {};
bool aabbInit = false;
size_t totalSize = 0;
bool denseRender = this->denseRender;
for (const auto drawGroup : *content.drawGroups) {
int begin = beginEnds[drawGroup][0];
if (begin == 0) {
@@ -570,12 +573,12 @@ SortingMeshData BlocksRenderer::renderTranslucent(
continue;
}
const UVRegion texfaces[6] {
cache.getRegion(id, variantId, 0),
cache.getRegion(id, variantId, 1),
cache.getRegion(id, variantId, 2),
cache.getRegion(id, variantId, 3),
cache.getRegion(id, variantId, 4),
cache.getRegion(id, variantId, 5)
cache.getRegion(id, variantId, 0, denseRender),
cache.getRegion(id, variantId, 1, denseRender),
cache.getRegion(id, variantId, 2, denseRender),
cache.getRegion(id, variantId, 3, denseRender),
cache.getRegion(id, variantId, 4, denseRender),
cache.getRegion(id, variantId, 5, denseRender)
};
int x = i % CHUNK_W;
int y = i / (CHUNK_D * CHUNK_W);
@@ -706,9 +709,16 @@ void BlocksRenderer::build(const Chunk* chunk, const Chunks* chunks) {
vertexCount = 0;
vertexOffset = 0;
indexCount = 0;
denseRender = settings.graphics.denseRender.get();
// denseRender = false;
render(voxels, beginEnds);
// denseRender = settings.graphics.denseRender.get();
// if (denseRender) {
// }
}
ChunkMeshData BlocksRenderer::createMesh() {