forked from Kolyah35/minecraft-pe-0.6.1
50 lines
1.8 KiB
C++
50 lines
1.8 KiB
C++
#include "Lighting.h"
|
|
#include "gles.h"
|
|
#include "../Minecraft.h"
|
|
|
|
void Lighting::turnOff() {
|
|
glDisable(GL_LIGHTING);
|
|
glDisable(GL_LIGHT0);
|
|
glDisable(GL_LIGHT1);
|
|
glDisable(GL_COLOR_MATERIAL);
|
|
}
|
|
|
|
void Lighting::turnOn(Minecraft* minecraft) {
|
|
if (!minecraft->options.getBooleanValue(OPTIONS_NORMAL_LIGHTING)){ // if normal lighting is false, then just dont use the lighting system at all like in vanilla - shredder
|
|
turnOff();
|
|
return;
|
|
}
|
|
glEnable(GL_NORMALIZE);
|
|
// if normal lighting is true then enable GLES/OpenGL states to setup lighting
|
|
glEnable(GL_LIGHTING);
|
|
glEnable(GL_LIGHT0);
|
|
glEnable(GL_LIGHT1);
|
|
glEnable(GL_COLOR_MATERIAL);
|
|
// glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
|
|
|
|
constexpr float a = 0.4f;
|
|
constexpr float d = 0.6f;
|
|
constexpr float s = 0.0f;
|
|
|
|
|
|
//Vec3 l = world::phys::Vec3{0.2, 1.0, -0.7}.normalize();
|
|
constexpr float lightmodel_ambient[] = {a, a, a, 1.0f};
|
|
constexpr float diffuse[] = {d, d, d, 1.0f};
|
|
constexpr float ambient[] = {0.0f, 0.0f, 0.0f, 1.0f};
|
|
constexpr float specular[] = {s, s, s, 1.0f};
|
|
|
|
constexpr float pos0[] = {(float)(0.16169041989141428), (float)(0.8084520874101966), (float)(-0.5659164515496377), 0.0f};
|
|
glLightfv(GL_LIGHT0, GL_POSITION, pos0);
|
|
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
|
|
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
|
|
glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
|
|
|
|
constexpr float pos1[] = {(float)(-0.16169041989141428), (float)(0.8084520874101966), (float)(0.5659164515496377), 0.0f};
|
|
glLightfv(GL_LIGHT1, GL_POSITION, pos1);
|
|
glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
|
|
glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
|
|
glLightfv(GL_LIGHT1, GL_SPECULAR, specular);
|
|
glShadeModel(GL_FLAT);
|
|
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lightmodel_ambient);
|
|
}
|