mirror of
https://github.com/GabsPuNs/Project-Zenith-Main.git
synced 2026-05-24 19:54:38 +00:00
TU24
This commit is contained in:
@@ -876,11 +876,6 @@ void GameRenderer::updateLightTexture(float a)
|
||||
|
||||
Level *level = player->level;
|
||||
|
||||
int dimColor = level->dimension->getBlockLightColour();
|
||||
float dimB = (float)((dimColor >> 16) & 0xFF) / 255.0f;
|
||||
float dimG = (float)((dimColor >> 8) & 0xFF) / 255.0f;
|
||||
float dimR = (float)(dimColor & 0xFF) / 255.0f;
|
||||
|
||||
const float skyDarken1 = level->getSkyDarken(1.0f);
|
||||
const float skyWeight = skyDarken1 * 0.65f + 0.35f;
|
||||
const float darken = skyDarken1 * 0.95f + 0.05f;
|
||||
@@ -892,10 +887,6 @@ void GameRenderer::updateLightTexture(float a)
|
||||
const __m256 vSkyWeight = _mm256_set1_ps(skyWeight);
|
||||
const __m256 vBlockMult = _mm256_set1_ps(blockMult);
|
||||
|
||||
const __m256 vDimR = _mm256_set1_ps(dimR);
|
||||
const __m256 vDimG = _mm256_set1_ps(dimG);
|
||||
const __m256 vDimB = _mm256_set1_ps(dimB);
|
||||
|
||||
const bool skyFlash = level->skyFlashTime < 0;
|
||||
const bool isEnd = level->dimension->id == 1;
|
||||
|
||||
@@ -906,7 +897,8 @@ void GameRenderer::updateLightTexture(float a)
|
||||
for (int i = 0; i < 256; i += 8)
|
||||
{
|
||||
alignas(32) float sRamp[8], bRamp[8];
|
||||
for(int k=0; k<8; ++k) {
|
||||
for(int k=0; k<8; ++k)
|
||||
{
|
||||
sRamp[k] = level->dimension->brightnessRamp[(i + k) / 16];
|
||||
bRamp[k] = level->dimension->brightnessRamp[(i + k) % 16];
|
||||
}
|
||||
@@ -925,13 +917,9 @@ void GameRenderer::updateLightTexture(float a)
|
||||
__m256 vGb_base = _mm256_mul_ps(vBlock, _mm256_add_ps(_mm256_mul_ps(_mm256_add_ps(_mm256_mul_ps(vBlock, _mm256_set1_ps(0.6f)), _mm256_set1_ps(0.4f)), _mm256_set1_ps(0.6f)), _mm256_set1_ps(0.4f)));
|
||||
__m256 vBb_base = _mm256_mul_ps(vBlock, _mm256_add_ps(_mm256_mul_ps(_mm256_mul_ps(vBlock, vBlock), _mm256_set1_ps(0.6f)), _mm256_set1_ps(0.4f)));
|
||||
|
||||
__m256 vRb = _mm256_mul_ps(vRb_base, vDimR);
|
||||
__m256 vGb = _mm256_mul_ps(vGb_base, vDimG);
|
||||
__m256 vBb = _mm256_mul_ps(vBb_base, vDimB);
|
||||
|
||||
__m256 vR = _mm256_add_ps(vRs, vRb);
|
||||
__m256 vG = _mm256_add_ps(vGs, vGb);
|
||||
__m256 vB = _mm256_add_ps(vBs, vBb);
|
||||
__m256 vR = _mm256_add_ps(vRs, vRb_base);
|
||||
__m256 vG = _mm256_add_ps(vGs, vGb_base);
|
||||
__m256 vB = _mm256_add_ps(vBs, vBb_base);
|
||||
|
||||
vR = _mm256_add_ps(_mm256_mul_ps(vR, v096), v003);
|
||||
vG = _mm256_add_ps(_mm256_mul_ps(vG, v096), v003);
|
||||
@@ -946,9 +934,9 @@ void GameRenderer::updateLightTexture(float a)
|
||||
|
||||
if (isEnd)
|
||||
{
|
||||
vR = _mm256_add_ps(_mm256_set1_ps(0.22f), _mm256_mul_ps(vRb, _mm256_set1_ps(0.75f)));
|
||||
vG = _mm256_add_ps(_mm256_set1_ps(0.28f), _mm256_mul_ps(vGb, _mm256_set1_ps(0.75f)));
|
||||
vB = _mm256_add_ps(_mm256_set1_ps(0.25f), _mm256_mul_ps(vBb, _mm256_set1_ps(0.75f)));
|
||||
vR = _mm256_add_ps(_mm256_set1_ps(0.22f), _mm256_mul_ps(vRb_base, _mm256_set1_ps(0.75f)));
|
||||
vG = _mm256_add_ps(_mm256_set1_ps(0.28f), _mm256_mul_ps(vGb_base, _mm256_set1_ps(0.75f)));
|
||||
vB = _mm256_add_ps(_mm256_set1_ps(0.25f), _mm256_mul_ps(vBb_base, _mm256_set1_ps(0.75f)));
|
||||
}
|
||||
|
||||
if (hasNV)
|
||||
@@ -997,9 +985,9 @@ void GameRenderer::updateLightTexture(float a)
|
||||
const float gs = sky * skyWeight;
|
||||
const float bs = sky;
|
||||
|
||||
const float rb = block * dimR;
|
||||
const float gb = (block * ((block * 0.6f + 0.4f) * 0.6f + 0.4f)) * dimG;
|
||||
const float bb = (block * ((block * block) * 0.6f + 0.4f)) * dimB;
|
||||
const float rb = block;
|
||||
const float gb = block * ((block * 0.6f + 0.4f) * 0.6f + 0.4f);
|
||||
const float bb = block * ((block * block) * 0.6f + 0.4f);
|
||||
|
||||
float _r = (rs + rb);
|
||||
float _g = (gs + gb);
|
||||
@@ -1640,33 +1628,34 @@ void GameRenderer::renderLevel(float a, int64_t until)
|
||||
// 4J - have changed this fancy rendering option to work with our command buffers. The original used to use frame buffer flags to disable
|
||||
// writing to colour when doing the z-only pass, but that value gets obliterated by our command buffers. Using alpha blend function instead
|
||||
// to achieve the same effect.
|
||||
if (mc->options->ambientOcclusion)
|
||||
{
|
||||
GL11::glShadeModel(GL11::GL_SMOOTH);
|
||||
}
|
||||
|
||||
PIXBeginNamedEvent(0,"Fancy second pass - writing z");
|
||||
glBlendFunc(GL_ZERO, GL_ONE);
|
||||
glEnable(GL_CULL_FACE);
|
||||
levelRenderer->render(cameraEntity, 2, a, updateChunks);
|
||||
PIXEndNamedEvent();
|
||||
|
||||
PIXBeginNamedEvent(0, "Fancy second pass - actual render");
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
levelRenderer->render(cameraEntity, 2, a, updateChunks); // 4J - chanaged, used to be renderSameAsLast but we don't support that anymore
|
||||
PIXEndNamedEvent();
|
||||
|
||||
if (mc->options->fancyGraphics)
|
||||
{
|
||||
if (mc->options->ambientOcclusion)
|
||||
{
|
||||
GL11::glShadeModel(GL11::GL_SMOOTH);
|
||||
}
|
||||
|
||||
glBlendFunc(GL_ZERO, GL_ONE);
|
||||
PIXBeginNamedEvent(0,"Fancy second pass - writing z");
|
||||
int visibleWaterChunks = levelRenderer->render(cameraEntity, 1, a, updateChunks);
|
||||
PIXEndNamedEvent();
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
if (visibleWaterChunks > 0)
|
||||
{
|
||||
PIXBeginNamedEvent(0,"Fancy second pass - actual rendering");
|
||||
levelRenderer->render(cameraEntity, 1, a, updateChunks); // 4J - chanaged, used to be renderSameAsLast but we don't support that anymore
|
||||
PIXEndNamedEvent();
|
||||
}
|
||||
|
||||
GL11::glShadeModel(GL11::GL_FLAT);
|
||||
}
|
||||
|
||||
// @Patoke todo: implement, this is really important for rendering of order independent alpha objects
|
||||
// RenderManager.BeginOrderIndependentAlpha();
|
||||
|
||||
PIXBeginNamedEvent(0, "Second pass level rendering");
|
||||
levelRenderer->render(cameraEntity, 1, a, updateChunks);
|
||||
PIXEndNamedEvent();
|
||||
else
|
||||
{
|
||||
PIXBeginNamedEvent(0,"Second pass level render");
|
||||
levelRenderer->render(cameraEntity, 1, a, updateChunks);
|
||||
PIXEndNamedEvent();
|
||||
}
|
||||
|
||||
// 4J - added - have split out translucent particle rendering so that it happens after the water is rendered, primarily for fireworks
|
||||
PIXBeginNamedEvent(0,"Particle render (translucent)");
|
||||
@@ -1678,8 +1667,6 @@ void GameRenderer::renderLevel(float a, int64_t until)
|
||||
particleEngine->render(cameraEntity, a, ParticleEngine::TRANSLUCENT_LIST);
|
||||
PIXEndNamedEvent();
|
||||
turnOffLightLayer(a); // 4J - brought forward from 1.8.2
|
||||
// @Patoke todo: implement
|
||||
// RenderManager.EndOrderIndependentAlpha();
|
||||
////////////////////////// End of 4J added section
|
||||
|
||||
glDepthMask(true);
|
||||
@@ -2096,7 +2083,7 @@ void GameRenderer::setupClearColor(float a)
|
||||
float sg = static_cast<float>(skyColor->y);
|
||||
float sb = static_cast<float>(skyColor->z);
|
||||
|
||||
Vec3 *fogColor = level->getFogColor(player, a);
|
||||
Vec3 *fogColor = level->getFogColor(a);
|
||||
fr = static_cast<float>(fogColor->x);
|
||||
fg = static_cast<float>(fogColor->y);
|
||||
fb = static_cast<float>(fogColor->z);
|
||||
@@ -2143,7 +2130,7 @@ void GameRenderer::setupClearColor(float a)
|
||||
|
||||
int t = Camera::getBlockAt(mc->level, player, a);
|
||||
|
||||
constexpr float INV_256 = 0.00390625f;
|
||||
const float INV_256 = 0.00390625f;
|
||||
|
||||
if (isInClouds)
|
||||
{
|
||||
@@ -2329,8 +2316,7 @@ void GameRenderer::setupFog(int i, float alpha)
|
||||
glFogf(GL_FOG_END, distance);
|
||||
}
|
||||
|
||||
Biome *biome = mc->level->getBiome(static_cast<int>(player->x), static_cast<int>(player->z));
|
||||
if (biome->isFoggy())
|
||||
if (mc->level->dimension->isFoggyAt(static_cast<int>(player->x), static_cast<int>(player->z)))
|
||||
{
|
||||
glFogf(GL_FOG_START, distance * 0.05f);
|
||||
glFogf(GL_FOG_END, min(distance, 16 * 16 * .75f) * .5f);
|
||||
|
||||
Reference in New Issue
Block a user