mirror of
https://github.com/moparisthebest/minetest
synced 2024-11-16 14:25:19 -05:00
Try to add a bit of topside brightness when not using shaders
This commit is contained in:
parent
ec54e35757
commit
07632b7d69
@ -32,6 +32,16 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "util/directiontables.h"
|
#include "util/directiontables.h"
|
||||||
|
|
||||||
|
float srgb_linear_multiply(float f, float m, float max)
|
||||||
|
{
|
||||||
|
f = f * f; // SRGB -> Linear
|
||||||
|
f *= m;
|
||||||
|
f = sqrt(f); // Linear -> SRGB
|
||||||
|
if(f > max)
|
||||||
|
f = max;
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
MeshMakeData
|
MeshMakeData
|
||||||
*/
|
*/
|
||||||
@ -1071,11 +1081,19 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data):
|
|||||||
for(u32 j = 0; j < p.vertices.size(); j++)
|
for(u32 j = 0; j < p.vertices.size(); j++)
|
||||||
{
|
{
|
||||||
video::SColor &vc = p.vertices[j].Color;
|
video::SColor &vc = p.vertices[j].Color;
|
||||||
|
// Set initial real color and store for later updates
|
||||||
u8 day = vc.getRed();
|
u8 day = vc.getRed();
|
||||||
u8 night = vc.getGreen();
|
u8 night = vc.getGreen();
|
||||||
finalColorBlend(vc, day, night, 1000);
|
finalColorBlend(vc, day, night, 1000);
|
||||||
if(day != night)
|
if(day != night)
|
||||||
m_daynight_diffs[i][j] = std::make_pair(day, night);
|
m_daynight_diffs[i][j] = std::make_pair(day, night);
|
||||||
|
// Brighten topside (no shaders)
|
||||||
|
if(p.vertices[j].Normal.Y > 0.5)
|
||||||
|
{
|
||||||
|
vc.setRed (srgb_linear_multiply(vc.getRed(), 1.3, 255.0));
|
||||||
|
vc.setGreen(srgb_linear_multiply(vc.getGreen(), 1.3, 255.0));
|
||||||
|
vc.setBlue (srgb_linear_multiply(vc.getBlue(), 1.3, 255.0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1229,6 +1247,14 @@ bool MapBlockMesh::animate(bool faraway, float time, int crack, u32 daynight_rat
|
|||||||
u8 night = j->second.second;
|
u8 night = j->second.second;
|
||||||
finalColorBlend(vertices[vertexIndex].Color,
|
finalColorBlend(vertices[vertexIndex].Color,
|
||||||
day, night, daynight_ratio);
|
day, night, daynight_ratio);
|
||||||
|
// Brighten topside (no shaders)
|
||||||
|
if(vertices[vertexIndex].Normal.Y > 0.5)
|
||||||
|
{
|
||||||
|
video::SColor &vc = vertices[vertexIndex].Color;
|
||||||
|
vc.setRed (srgb_linear_multiply(vc.getRed(), 1.3, 255.0));
|
||||||
|
vc.setGreen(srgb_linear_multiply(vc.getGreen(), 1.3, 255.0));
|
||||||
|
vc.setBlue (srgb_linear_multiply(vc.getBlue(), 1.3, 255.0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_last_daynight_ratio = daynight_ratio;
|
m_last_daynight_ratio = daynight_ratio;
|
||||||
|
Loading…
Reference in New Issue
Block a user