Merge remote-tracking branch 'origin/master' into new_login
This commit is contained in:
commit
396e3bb54e
@ -24,7 +24,7 @@ script:
|
|||||||
# Build commands
|
# Build commands
|
||||||
- mkdir build
|
- mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- cmake .. -DCMAKE_BUILD_TYPE=Debug
|
- cmake .. -DCMAKE_BUILD_TYPE=Debug -DCHECK_ASSETS=off
|
||||||
- make VERBOSE=1 -j 4
|
- make VERBOSE=1 -j 4
|
||||||
notifications:
|
notifications:
|
||||||
irc:
|
irc:
|
||||||
|
@ -13,6 +13,8 @@ endif()
|
|||||||
|
|
||||||
option(USE_WIIUSE "Support for wiimote input devices" ON)
|
option(USE_WIIUSE "Support for wiimote input devices" ON)
|
||||||
option(USE_FRIBIDI "Support for right-to-left languages" ON)
|
option(USE_FRIBIDI "Support for right-to-left languages" ON)
|
||||||
|
option(CHECK_ASSETS "Check if assets are installed in ../stk-assets" ON)
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
option(USE_CPP2011 "Activate C++ 2011 mode (GCC only)" OFF)
|
option(USE_CPP2011 "Activate C++ 2011 mode (GCC only)" OFF)
|
||||||
endif()
|
endif()
|
||||||
@ -313,6 +315,21 @@ install(FILES ${PROJECT_BINARY_DIR}/supertuxkart.desktop DESTINATION share/appli
|
|||||||
install(FILES data/supertuxkart_32.png data/supertuxkart_128.png DESTINATION share/pixmaps)
|
install(FILES data/supertuxkart_32.png data/supertuxkart_128.png DESTINATION share/pixmaps)
|
||||||
install(FILES data/supertuxkart.appdata DESTINATION share/appdata)
|
install(FILES data/supertuxkart.appdata DESTINATION share/appdata)
|
||||||
|
|
||||||
|
# ==== Checking if data folder exists ====
|
||||||
|
if(NOT IS_DIRECTORY ../data)
|
||||||
|
message( FATAL_ERROR "${CMAKE_CURRENT_SOURCE_DIR}/data folder doesn't exist" )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ==== Checking if stk-assets folder exists ====
|
||||||
|
if(CHECK_ASSETS)
|
||||||
|
if(NOT IS_DIRECTORY ../../stk-assets)
|
||||||
|
set (CUR_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
get_filename_component(PARENT_DIR ${CUR_DIR} PATH)
|
||||||
|
message( FATAL_ERROR "${PARENT_DIR}/stk-assets folder doesn't exist. "
|
||||||
|
"Please download the stk-assets, or disable this test with -DCHECK_ASSETS=off." )
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
set(PREFIX ${CMAKE_INSTALL_PREFIX})
|
set(PREFIX ${CMAKE_INSTALL_PREFIX})
|
||||||
configure_file(data/supertuxkart_desktop.template supertuxkart.desktop)
|
configure_file(data/supertuxkart_desktop.template supertuxkart.desktop)
|
||||||
add_dependencies(supertuxkart supertuxkart.desktop)
|
add_dependencies(supertuxkart supertuxkart.desktop)
|
||||||
|
@ -32,8 +32,7 @@ void main()
|
|||||||
vec3 light_pos = pseudocenter.xyz;
|
vec3 light_pos = pseudocenter.xyz;
|
||||||
vec3 light_col = col.xyz;
|
vec3 light_col = col.xyz;
|
||||||
float d = distance(light_pos, xpos.xyz);
|
float d = distance(light_pos, xpos.xyz);
|
||||||
float att = energy * 200. / (1 + d + 4. * 3.14 * d * d);
|
float att = energy * 200. / (1. + 33. * d + 33. * d * d);
|
||||||
float spec_att = energy * 200. / (1 + d + 4. * 3.14 * d * d);
|
|
||||||
|
|
||||||
// Light Direction
|
// Light Direction
|
||||||
vec3 L = -normalize(xpos.xyz - light_pos);
|
vec3 L = -normalize(xpos.xyz - light_pos);
|
||||||
@ -41,5 +40,5 @@ void main()
|
|||||||
float NdotL = max(0., dot(norm, L));
|
float NdotL = max(0., dot(norm, L));
|
||||||
|
|
||||||
Diffuse = vec4(NdotL * light_col * att, 1.);
|
Diffuse = vec4(NdotL * light_col * att, 1.);
|
||||||
Specular = vec4(getSpecular(norm, eyedir, L, light_col, roughness) * NdotL * spec_att, 1.);
|
Specular = vec4(getSpecular(norm, eyedir, L, light_col, roughness) * NdotL * att, 1.);
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ const float zNear = 1.;
|
|||||||
void main(void)
|
void main(void)
|
||||||
{
|
{
|
||||||
// Beyond that value, light is too attenuated
|
// Beyond that value, light is too attenuated
|
||||||
float r = 500 * Energy;
|
float r = 100 * Energy;
|
||||||
center = Position;
|
center = Position;
|
||||||
energy = Energy;
|
energy = Energy;
|
||||||
vec4 Center = ViewMatrix * vec4(Position, 1.);
|
vec4 Center = ViewMatrix * vec4(Position, 1.);
|
||||||
|
@ -53,7 +53,7 @@ float getShadowFactor(vec3 pos, float bias, int index)
|
|||||||
float sum = 0.;
|
float sum = 0.;
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
sum += texture(shadowtex, vec4(shadowtexcoord + shadowoffset[i] / 2048., float(index), 0.5 * (shadowcoord.z - bias * 0.01) + 0.5));
|
sum += texture(shadowtex, vec4(shadowtexcoord + shadowoffset[i] / 2048., float(index), 0.5 * shadowcoord.z + 0.5));
|
||||||
}
|
}
|
||||||
return sum / 4.;
|
return sum / 4.;
|
||||||
}
|
}
|
||||||
@ -88,8 +88,8 @@ void main() {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
// Shadows
|
// Shadows
|
||||||
float bias = 0.002 * tan(acos(NdotL)); // According to the slope
|
float bias = 0.005 * tan(acos(NdotL)); // According to the slope
|
||||||
bias = clamp(bias, 0.001, 0.014);
|
bias = clamp(bias, 0., 0.01);
|
||||||
float factor;
|
float factor;
|
||||||
if (xpos.z < 5.)
|
if (xpos.z < 5.)
|
||||||
factor = getShadowFactor(xpos.xyz, bias, 0);
|
factor = getShadowFactor(xpos.xyz, bias, 0);
|
||||||
|
@ -22,7 +22,7 @@ out vec4 Spec;
|
|||||||
vec3 DecodeNormal(vec2 n);
|
vec3 DecodeNormal(vec2 n);
|
||||||
vec3 getSpecular(vec3 normal, vec3 eyedir, vec3 lightdir, vec3 color, float roughness);
|
vec3 getSpecular(vec3 normal, vec3 eyedir, vec3 lightdir, vec3 color, float roughness);
|
||||||
|
|
||||||
vec3 getShadowFactor(vec3 pos, float bias)
|
vec3 getShadowFactor(vec3 pos)
|
||||||
{
|
{
|
||||||
vec3 cascadeColor[] = vec3[](
|
vec3 cascadeColor[] = vec3[](
|
||||||
vec3(1., 0., 0.),
|
vec3(1., 0., 0.),
|
||||||
@ -37,7 +37,7 @@ vec3 getShadowFactor(vec3 pos, float bias)
|
|||||||
vec2 shadowtexcoord = shadowcoord.xy * 0.5 + 0.5;
|
vec2 shadowtexcoord = shadowcoord.xy * 0.5 + 0.5;
|
||||||
if (shadowtexcoord.x < 0. || shadowtexcoord.x > 1. || shadowtexcoord.y < 0. || shadowtexcoord.y > 1.)
|
if (shadowtexcoord.x < 0. || shadowtexcoord.x > 1. || shadowtexcoord.y < 0. || shadowtexcoord.y > 1.)
|
||||||
continue;
|
continue;
|
||||||
return cascadeColor[i] * texture(shadowtex, vec4(shadowtexcoord, float(i), 0.5 * (shadowcoord.z + bias * 0.001) + 0.5));
|
return cascadeColor[i] * texture(shadowtex, vec4(shadowtexcoord, float(i), 0.5 * shadowcoord.z + 0.5));
|
||||||
}
|
}
|
||||||
return vec3(1.);
|
return vec3(1.);
|
||||||
}
|
}
|
||||||
@ -61,9 +61,7 @@ void main() {
|
|||||||
vec3 outcol = NdotL * col;
|
vec3 outcol = NdotL * col;
|
||||||
|
|
||||||
// Shadows
|
// Shadows
|
||||||
float bias = 0.002 * tan(acos(NdotL)); // According to the slope
|
vec3 factor = getShadowFactor(xpos.xyz);
|
||||||
bias = clamp(bias, 0.001, 0.014);
|
|
||||||
vec3 factor = getShadowFactor(xpos.xyz, bias);
|
|
||||||
Diff = vec4(factor * NdotL * col, 1.);
|
Diff = vec4(factor * NdotL * col, 1.);
|
||||||
Spec = vec4(factor * Specular, 1.);
|
Spec = vec4(factor * Specular, 1.);
|
||||||
return;
|
return;
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
uniform sampler2D tex;
|
uniform sampler2D tex;
|
||||||
uniform sampler2D logluminancetex;
|
uniform sampler2D logluminancetex;
|
||||||
|
uniform float exposure = .09;
|
||||||
|
uniform float Lwhite = 1.;
|
||||||
|
|
||||||
in vec2 uv;
|
in vec2 uv;
|
||||||
out vec4 FragColor;
|
out vec4 FragColor;
|
||||||
@ -9,8 +11,7 @@ out vec4 FragColor;
|
|||||||
vec3 getCIEYxy(vec3 rgbColor);
|
vec3 getCIEYxy(vec3 rgbColor);
|
||||||
vec3 getRGBFromCIEXxy(vec3 YxyColor);
|
vec3 getRGBFromCIEXxy(vec3 YxyColor);
|
||||||
|
|
||||||
float exposure = .09;
|
|
||||||
float Lwhite = 1.;
|
|
||||||
float delta = .0001;
|
float delta = .0001;
|
||||||
float saturation = 1.;
|
float saturation = 1.;
|
||||||
|
|
||||||
@ -22,10 +23,16 @@ void main()
|
|||||||
|
|
||||||
vec3 Cw = getCIEYxy(col.xyz);
|
vec3 Cw = getCIEYxy(col.xyz);
|
||||||
float Lw = Cw.y;
|
float Lw = Cw.y;
|
||||||
float L = Lw * exposure / avgLw;
|
|
||||||
float Ld = L * (1. + L / (Lwhite * Lwhite));
|
|
||||||
Ld /= (1. + L);
|
|
||||||
|
|
||||||
FragColor = vec4(Ld * pow(col.xyz / Lw, vec3(saturation)), 1.);
|
/* Reinhard, for reference */
|
||||||
|
// float L = Lw * exposure / avgLw;
|
||||||
|
// float Ld = L * (1. + L / (Lwhite * Lwhite));
|
||||||
|
// Ld /= (1. + L);
|
||||||
|
// FragColor = vec4(Ld * pow(col.xyz / Lw, vec3(saturation)), 1.);
|
||||||
|
|
||||||
|
// Uncharted2 tonemap with Auria's custom coefficients
|
||||||
|
vec4 perChannel = (col * (6.9 * col + .5)) / (col * (5.2 * col + 1.7) + 0.06);
|
||||||
|
perChannel = pow(perChannel, vec4(2.2));
|
||||||
|
FragColor = vec4(perChannel.xyz, 1.);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -99,6 +99,8 @@ private:
|
|||||||
Shaders *m_shaders;
|
Shaders *m_shaders;
|
||||||
/** Wind. */
|
/** Wind. */
|
||||||
Wind *m_wind;
|
Wind *m_wind;
|
||||||
|
float m_exposure;
|
||||||
|
float m_lwhite;
|
||||||
/** RTTs. */
|
/** RTTs. */
|
||||||
RTT *m_rtts;
|
RTT *m_rtts;
|
||||||
/** Shadow importance. */
|
/** Shadow importance. */
|
||||||
@ -160,6 +162,26 @@ public:
|
|||||||
return 120;
|
return 120;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float getExposure() const
|
||||||
|
{
|
||||||
|
return m_exposure;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setExposure(float v)
|
||||||
|
{
|
||||||
|
m_exposure = v;
|
||||||
|
}
|
||||||
|
|
||||||
|
float getLwhite() const
|
||||||
|
{
|
||||||
|
return m_lwhite;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setLwhite(float v)
|
||||||
|
{
|
||||||
|
m_lwhite = v;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<VideoMode> m_modes;
|
std::vector<VideoMode> m_modes;
|
||||||
|
|
||||||
|
@ -530,7 +530,7 @@ static void toneMap(GLuint fbo, GLuint rtt)
|
|||||||
glBindVertexArray(FullScreenShader::ToneMapShader::vao);
|
glBindVertexArray(FullScreenShader::ToneMapShader::vao);
|
||||||
setTexture(0, rtt, GL_NEAREST, GL_NEAREST);
|
setTexture(0, rtt, GL_NEAREST, GL_NEAREST);
|
||||||
setTexture(1, irr_driver->getRenderTargetTexture(RTT_LOG_LUMINANCE), GL_NEAREST, GL_NEAREST_MIPMAP_NEAREST);
|
setTexture(1, irr_driver->getRenderTargetTexture(RTT_LOG_LUMINANCE), GL_NEAREST, GL_NEAREST_MIPMAP_NEAREST);
|
||||||
FullScreenShader::ToneMapShader::setUniforms(0, 1);
|
FullScreenShader::ToneMapShader::setUniforms(irr_driver->getExposure(), irr_driver->getLwhite(), 0, 1);
|
||||||
|
|
||||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
||||||
}
|
}
|
||||||
@ -655,7 +655,8 @@ void PostProcessing::render()
|
|||||||
std::swap(in_fbo, out_fbo);
|
std::swap(in_fbo, out_fbo);
|
||||||
|
|
||||||
PROFILER_PUSH_CPU_MARKER("- Godrays", 0xFF, 0x00, 0x00);
|
PROFILER_PUSH_CPU_MARKER("- Godrays", 0xFF, 0x00, 0x00);
|
||||||
if (UserConfigParams::m_light_shaft && m_sunpixels > 30)//World::getWorld()->getTrack()->hasGodRays() && ) // god rays
|
const bool hasgodrays = World::getWorld()->getTrack()->hasGodRays();
|
||||||
|
if (UserConfigParams::m_light_shaft && m_sunpixels > 30 && hasgodrays)
|
||||||
{
|
{
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
// Grab the sky
|
// Grab the sky
|
||||||
|
@ -236,7 +236,7 @@ void IrrDriver::renderGLSL(float dt)
|
|||||||
// Is the lens flare enabled & visible? Check last frame's query.
|
// Is the lens flare enabled & visible? Check last frame's query.
|
||||||
const bool hasflare = World::getWorld()->getTrack()->hasLensFlare();
|
const bool hasflare = World::getWorld()->getTrack()->hasLensFlare();
|
||||||
const bool hasgodrays = World::getWorld()->getTrack()->hasGodRays();
|
const bool hasgodrays = World::getWorld()->getTrack()->hasGodRays();
|
||||||
if (UserConfigParams::m_light_shaft)//hasflare || hasgodrays)
|
if (UserConfigParams::m_light_shaft && hasgodrays)//hasflare || hasgodrays)
|
||||||
{
|
{
|
||||||
irr::video::COpenGLDriver* gl_driver = (irr::video::COpenGLDriver*)m_device->getVideoDriver();
|
irr::video::COpenGLDriver* gl_driver = (irr::video::COpenGLDriver*)m_device->getVideoDriver();
|
||||||
|
|
||||||
@ -665,8 +665,8 @@ void IrrDriver::renderShadows(//ShadowImportanceProvider * const sicb,
|
|||||||
|
|
||||||
irr_driver->setPhase(SHADOW_PASS);
|
irr_driver->setPhase(SHADOW_PASS);
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
glEnable(GL_CULL_FACE);
|
glEnable(GL_POLYGON_OFFSET_FILL);
|
||||||
glCullFace(GL_FRONT);
|
glPolygonOffset(1.5, 0.);
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, m_rtts->getShadowFBO());
|
glBindFramebuffer(GL_FRAMEBUFFER, m_rtts->getShadowFBO());
|
||||||
glViewport(0, 0, 1024, 1024);
|
glViewport(0, 0, 1024, 1024);
|
||||||
glClear(GL_DEPTH_BUFFER_BIT);
|
glClear(GL_DEPTH_BUFFER_BIT);
|
||||||
@ -674,7 +674,7 @@ void IrrDriver::renderShadows(//ShadowImportanceProvider * const sicb,
|
|||||||
|
|
||||||
glBindBufferBase(GL_UNIFORM_BUFFER, 0, SharedObject::ViewProjectionMatrixesUBO);
|
glBindBufferBase(GL_UNIFORM_BUFFER, 0, SharedObject::ViewProjectionMatrixesUBO);
|
||||||
m_scene_manager->drawAll(scene::ESNRP_SOLID);
|
m_scene_manager->drawAll(scene::ESNRP_SOLID);
|
||||||
glCullFace(GL_BACK);
|
glDisable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
|
||||||
|
|
||||||
glViewport(0, 0, UserConfigParams::m_width, UserConfigParams::m_height);
|
glViewport(0, 0, UserConfigParams::m_width, UserConfigParams::m_height);
|
||||||
@ -901,7 +901,7 @@ void IrrDriver::renderLights(const core::aabbox3df& cambox,
|
|||||||
if (!m_lights[i]->isPointLight())
|
if (!m_lights[i]->isPointLight())
|
||||||
{
|
{
|
||||||
m_lights[i]->render();
|
m_lights[i]->render();
|
||||||
if (UserConfigParams::m_shadows)
|
if (UserConfigParams::m_shadows && World::getWorld()->getTrack()->hasShadows())
|
||||||
m_post_processing->renderShadowedSunlight(sun_ortho_matrix, m_rtts->getShadowDepthTex());
|
m_post_processing->renderShadowedSunlight(sun_ortho_matrix, m_rtts->getShadowDepthTex());
|
||||||
else
|
else
|
||||||
m_post_processing->renderSunlight();
|
m_post_processing->renderSunlight();
|
||||||
@ -1391,14 +1391,20 @@ void IrrDriver::generateSkyboxCubemap()
|
|||||||
int sh_w = 16;
|
int sh_w = 16;
|
||||||
int sh_h = 16;
|
int sh_h = 16;
|
||||||
|
|
||||||
|
const video::SColorf& ambientf = irr_driver->getSceneManager()->getAmbientLight();
|
||||||
|
video::SColor ambient = ambientf.toSColor();
|
||||||
|
|
||||||
char *sh_rgba[6];
|
char *sh_rgba[6];
|
||||||
for (unsigned i = 0; i < 6; i++)
|
for (unsigned i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
sh_rgba[i] = new char[sh_w * sh_h * 4];
|
sh_rgba[i] = new char[sh_w * sh_h * 4];
|
||||||
|
|
||||||
for (int j = 0; j < sh_w * sh_h * 4; j++)
|
for (int j = 0; j < sh_w * sh_h * 4; j+=4)
|
||||||
{
|
{
|
||||||
sh_rgba[i][j] = 150;
|
sh_rgba[i][j] = ambient.getBlue();
|
||||||
|
sh_rgba[i][j + 1] = ambient.getGreen();
|
||||||
|
sh_rgba[i][j + 2] = ambient.getRed();
|
||||||
|
sh_rgba[i][j + 3] = 255;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2069,6 +2069,8 @@ namespace FullScreenShader
|
|||||||
GLuint ToneMapShader::Program;
|
GLuint ToneMapShader::Program;
|
||||||
GLuint ToneMapShader::uniform_tex;
|
GLuint ToneMapShader::uniform_tex;
|
||||||
GLuint ToneMapShader::uniform_logluminancetex;
|
GLuint ToneMapShader::uniform_logluminancetex;
|
||||||
|
GLuint ToneMapShader::uniform_exposure;
|
||||||
|
GLuint ToneMapShader::uniform_lwhite;
|
||||||
GLuint ToneMapShader::vao;
|
GLuint ToneMapShader::vao;
|
||||||
|
|
||||||
void ToneMapShader::init()
|
void ToneMapShader::init()
|
||||||
@ -2080,13 +2082,17 @@ namespace FullScreenShader
|
|||||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/tonemap.frag").c_str());
|
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/tonemap.frag").c_str());
|
||||||
uniform_tex = glGetUniformLocation(Program, "tex");
|
uniform_tex = glGetUniformLocation(Program, "tex");
|
||||||
uniform_logluminancetex = glGetUniformLocation(Program, "logluminancetex");
|
uniform_logluminancetex = glGetUniformLocation(Program, "logluminancetex");
|
||||||
|
uniform_exposure = glGetUniformLocation(Program, "exposure");
|
||||||
|
uniform_lwhite = glGetUniformLocation(Program, "Lwhite");
|
||||||
vao = createVAO(Program);
|
vao = createVAO(Program);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToneMapShader::setUniforms(unsigned TU_tex, unsigned TU_loglum)
|
void ToneMapShader::setUniforms(float exposure, float Lwhite, unsigned TU_tex, unsigned TU_loglum)
|
||||||
{
|
{
|
||||||
glUniform1i(uniform_tex, TU_tex);
|
glUniform1i(uniform_tex, TU_tex);
|
||||||
glUniform1i(uniform_logluminancetex, TU_loglum);
|
glUniform1i(uniform_logluminancetex, TU_loglum);
|
||||||
|
glUniform1f(uniform_exposure, exposure);
|
||||||
|
glUniform1f(uniform_lwhite, Lwhite);
|
||||||
}
|
}
|
||||||
|
|
||||||
GLuint DepthOfFieldShader::Program;
|
GLuint DepthOfFieldShader::Program;
|
||||||
|
@ -524,11 +524,11 @@ class ToneMapShader
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static GLuint Program;
|
static GLuint Program;
|
||||||
static GLuint uniform_tex, uniform_logluminancetex;
|
static GLuint uniform_tex, uniform_logluminancetex, uniform_exposure, uniform_lwhite;
|
||||||
static GLuint vao;
|
static GLuint vao;
|
||||||
|
|
||||||
static void init();
|
static void init();
|
||||||
static void setUniforms(unsigned TU_tex, unsigned TU_logluminance);
|
static void setUniforms(float exposure, float Lwhite, unsigned TU_tex, unsigned TU_logluminance);
|
||||||
};
|
};
|
||||||
|
|
||||||
class DepthOfFieldShader
|
class DepthOfFieldShader
|
||||||
|
@ -462,10 +462,12 @@ void STKMeshSceneNode::render()
|
|||||||
glDisable(GL_CULL_FACE);
|
glDisable(GL_CULL_FACE);
|
||||||
|
|
||||||
GLMesh* mesh;
|
GLMesh* mesh;
|
||||||
if (!GeometricMesh[FPSM_DEFAULT].empty())
|
if (!GeometricMesh[FPSM_DEFAULT].empty() || !GeometricMesh[FPSM_NORMAL_MAP].empty())
|
||||||
glUseProgram(MeshShader::ShadowShader::Program);
|
glUseProgram(MeshShader::ShadowShader::Program);
|
||||||
for_in(mesh, GeometricMesh[FPSM_DEFAULT])
|
for_in(mesh, GeometricMesh[FPSM_DEFAULT])
|
||||||
drawShadow(*mesh, AbsoluteTransformation);
|
drawShadow(*mesh, AbsoluteTransformation);
|
||||||
|
for_in(mesh, GeometricMesh[FPSM_NORMAL_MAP])
|
||||||
|
drawShadow(*mesh, AbsoluteTransformation);
|
||||||
|
|
||||||
if (!GeometricMesh[FPSM_ALPHA_REF_TEXTURE].empty())
|
if (!GeometricMesh[FPSM_ALPHA_REF_TEXTURE].empty())
|
||||||
glUseProgram(MeshShader::RefShadowShader::Program);
|
glUseProgram(MeshShader::RefShadowShader::Program);
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "modes/world.hpp"
|
#include "modes/world.hpp"
|
||||||
#include "states_screens/state_manager.hpp"
|
#include "states_screens/state_manager.hpp"
|
||||||
#include "utils/translation.hpp"
|
#include "utils/translation.hpp"
|
||||||
|
#include "graphics/irr_driver.hpp"
|
||||||
|
|
||||||
using namespace GUIEngine;
|
using namespace GUIEngine;
|
||||||
|
|
||||||
@ -47,6 +48,14 @@ DebugSliderDialog::DebugSliderDialog(std::string id, irr::core::stringw msg) :
|
|||||||
|
|
||||||
LabelWidget* message = getWidget<LabelWidget>("title");
|
LabelWidget* message = getWidget<LabelWidget>("title");
|
||||||
message->setText( msg.c_str(), false );
|
message->setText( msg.c_str(), false );
|
||||||
|
|
||||||
|
float val;
|
||||||
|
if (m_id == "lwhite")
|
||||||
|
val = irr_driver->getLwhite() * 10.;
|
||||||
|
if (m_id == "exposure")
|
||||||
|
val = irr_driver->getExposure() * 100.;
|
||||||
|
|
||||||
|
getWidget<SpinnerWidget>("value_slider")->setValue(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------------
|
||||||
@ -73,6 +82,10 @@ GUIEngine::EventPropagation DebugSliderDialog::processEvent(const std::string& e
|
|||||||
{
|
{
|
||||||
int value = getWidget<SpinnerWidget>("value_slider")->getValue();
|
int value = getWidget<SpinnerWidget>("value_slider")->getValue();
|
||||||
Log::info("DebugSlider", "Value for <%s> : %i", m_id.c_str(), value);
|
Log::info("DebugSlider", "Value for <%s> : %i", m_id.c_str(), value);
|
||||||
|
if (m_id == "lwhite")
|
||||||
|
irr_driver->setLwhite(value / 10.);
|
||||||
|
if (m_id == "exposure")
|
||||||
|
irr_driver->setExposure(value / 100.);
|
||||||
return GUIEngine::EVENT_BLOCK;
|
return GUIEngine::EVENT_BLOCK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -356,6 +356,8 @@ void Track::cleanup()
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void Track::loadTrackInfo()
|
void Track::loadTrackInfo()
|
||||||
{
|
{
|
||||||
|
irr_driver->setLwhite(1.);
|
||||||
|
irr_driver->setExposure(0.09);
|
||||||
// Default values
|
// Default values
|
||||||
m_use_fog = false;
|
m_use_fog = false;
|
||||||
m_fog_max = 1.0f;
|
m_fog_max = 1.0f;
|
||||||
|
Loading…
Reference in New Issue
Block a user