Merge remote-tracking branch 'origin/main'
This commit is contained in:
+2
-2
@@ -7,7 +7,7 @@
|
||||
#include <string>
|
||||
|
||||
inline constexpr int ENGINE_VERSION_MAJOR = 0;
|
||||
inline constexpr int ENGINE_VERSION_MINOR = 22;
|
||||
inline constexpr int ENGINE_VERSION_MINOR = 23;
|
||||
|
||||
#ifdef NDEBUG
|
||||
inline constexpr bool ENGINE_DEBUG_BUILD = false;
|
||||
@@ -15,7 +15,7 @@ inline constexpr bool ENGINE_DEBUG_BUILD = false;
|
||||
inline constexpr bool ENGINE_DEBUG_BUILD = true;
|
||||
#endif // NDEBUG
|
||||
|
||||
inline const std::string ENGINE_VERSION_STRING = "0.22";
|
||||
inline const std::string ENGINE_VERSION_STRING = "0.23";
|
||||
|
||||
inline constexpr blockid_t BLOCK_AIR = 0;
|
||||
inline constexpr itemid_t ITEM_EMPTY = 0;
|
||||
|
||||
@@ -113,6 +113,10 @@ bool WorldRenderer::drawChunk(
|
||||
}
|
||||
|
||||
void WorldRenderer::drawChunks(Chunks* chunks, Camera* camera, Shader* shader) {
|
||||
auto assets = engine->getAssets();
|
||||
auto atlas = assets->get<Atlas>("blocks");
|
||||
|
||||
atlas->getTexture()->bind();
|
||||
renderer->update();
|
||||
|
||||
// [warning] this whole method is not thread-safe for chunks
|
||||
@@ -122,8 +126,8 @@ void WorldRenderer::drawChunks(Chunks* chunks, Camera* camera, Shader* shader) {
|
||||
if (chunks->chunks[i] == nullptr) continue;
|
||||
indices.emplace_back(i);
|
||||
}
|
||||
float px = camera->position.x / (float)CHUNK_W - 0.5f;
|
||||
float pz = camera->position.z / (float)CHUNK_D - 0.5f;
|
||||
float px = camera->position.x / static_cast<float>(CHUNK_W) - 0.5f;
|
||||
float pz = camera->position.z / static_cast<float>(CHUNK_D) - 0.5f;
|
||||
std::sort(indices.begin(), indices.end(), [chunks, px, pz](auto i, auto j) {
|
||||
const auto a = chunks->chunks[i].get();
|
||||
const auto b = chunks->chunks[j].get();
|
||||
@@ -186,21 +190,13 @@ void WorldRenderer::renderLevel(
|
||||
bool pause
|
||||
) {
|
||||
auto assets = engine->getAssets();
|
||||
auto atlas = assets->get<Atlas>("blocks");
|
||||
|
||||
bool culling = engine->getSettings().graphics.frustumCulling.get();
|
||||
float fogFactor = 15.0f / ((float)settings.chunks.loadDistance.get() - 2);
|
||||
|
||||
auto shader = assets->get<Shader>("main");
|
||||
setupWorldShader(shader, camera, settings, fogFactor);
|
||||
|
||||
skybox->bind();
|
||||
atlas->getTexture()->bind();
|
||||
|
||||
drawChunks(level->chunks.get(), camera, shader);
|
||||
|
||||
auto entityShader = assets->get<Shader>("entity");
|
||||
setupWorldShader(entityShader, camera, settings, fogFactor);
|
||||
skybox->bind();
|
||||
|
||||
level->entities->render(
|
||||
assets,
|
||||
@@ -209,11 +205,16 @@ void WorldRenderer::renderLevel(
|
||||
delta,
|
||||
pause
|
||||
);
|
||||
modelBatch->render();
|
||||
|
||||
auto shader = assets->get<Shader>("main");
|
||||
setupWorldShader(shader, camera, settings, fogFactor);
|
||||
|
||||
drawChunks(level->chunks.get(), camera, shader);
|
||||
|
||||
if (!pause) {
|
||||
scripting::on_frontend_render();
|
||||
}
|
||||
modelBatch->render();
|
||||
|
||||
skybox->unbind();
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <voxels/voxel.hpp>
|
||||
|
||||
#include <iostream>
|
||||
#include <algorithm>
|
||||
#define GLM_ENABLE_EXPERIMENTAL
|
||||
#include <glm/gtx/norm.hpp>
|
||||
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ struct CameraSettings {
|
||||
struct GraphicsSettings {
|
||||
/// @brief Fog opacity is calculated as `pow(depth*k, fogCurve)` where k depends on chunksLoadDistance.
|
||||
/// 1.0 is linear, 2.0 is quadratic
|
||||
NumberSetting fogCurve {1.6f, 1.0f, 6.0f};
|
||||
NumberSetting fogCurve {1.0f, 1.0f, 6.0f};
|
||||
/// @brief Lighting gamma
|
||||
NumberSetting gamma {1.0f, 0.4f, 1.0f};
|
||||
/// @brief Enable blocks backlight to prevent complete darkness
|
||||
|
||||
@@ -130,9 +130,12 @@ int Window::initialize(DisplaySettings* settings) {
|
||||
Window::width = settings->width.get();
|
||||
Window::height = settings->height.get();
|
||||
|
||||
std::string title = "VoxelEngine-Cpp v" +
|
||||
std::string title = "VoxelCore v" +
|
||||
std::to_string(ENGINE_VERSION_MAJOR) + "." +
|
||||
std::to_string(ENGINE_VERSION_MINOR);
|
||||
if (ENGINE_DEBUG_BUILD) {
|
||||
title += " [debug]";
|
||||
}
|
||||
|
||||
glfwSetErrorCallback(error_callback);
|
||||
if (glfwInit() == GLFW_FALSE) {
|
||||
|
||||
Reference in New Issue
Block a user