Minor correction for a window path

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@14906 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
samuncle
2014-01-04 20:29:02 +00:00
parent c18248220a
commit aedb68a88a
8 changed files with 73 additions and 6 deletions

View File

@@ -151,6 +151,25 @@ void ColorLevelsProvider::OnSetConstants(IMaterialRendererServices *srv, int use
}
}
//-------------------------------------
void SkyboxProvider::OnSetConstants(IMaterialRendererServices *srv, int)
{
const float time = irr_driver->getDevice()->getTimer()->getTime() / 1000.0f;
srv->setVertexShaderConstant("time", &time, 1);
vector3df sun_pos = m_sunpos;
srv->setVertexShaderConstant("sun_pos", &sun_pos.X, 3);
if (!firstdone)
{
s32 tex = 0;
srv->setPixelShaderConstant("tex", &tex, 1);
s32 glow_tex = 1;
srv->setPixelShaderConstant("glow_tex", &glow_tex, 1);
firstdone = true;
}
}
//-------------------------------------
void SplattingProvider::OnSetConstants(IMaterialRendererServices *srv, int)

View File

@@ -156,6 +156,23 @@ private:
//
class SkyboxProvider: public CallBase
{
public:
virtual void OnSetConstants(video::IMaterialRendererServices *srv, int);
void setSunPosition(const core::vector3df &in)
{
m_sunpos = in;
//m_sunpos.normalize();
}
private:
core::vector3df m_sunpos;
};
//
class SplattingProvider: public CallBase
{
public:

View File

@@ -1,4 +1,4 @@
#include "graphics\glwrap.hpp"
#include "graphics/glwrap.hpp"
#include <fstream>
#include <string>
@@ -176,4 +176,4 @@ void bindUniformToTextureUnit(GLuint location, GLuint texid, unsigned textureUni
glActiveTexture(GL_TEXTURE0 + textureUnit);
glBindTexture(GL_TEXTURE_2D, texid);
glUniform1i(location, textureUnit);
}
}

View File

@@ -1397,8 +1397,14 @@ void IrrDriver::displayFPS()
{
gui::IGUIFont* font = GUIEngine::getFont();
irr_driver->getVideoDriver()->draw2DRectangle(video::SColor(150, 96, 74, 196),core::rect< s32 >(75,0,900,50),NULL);
if(UserConfigParams::m_artist_debug_mode)
{
irr_driver->getVideoDriver()->draw2DRectangle(video::SColor(150, 96, 74, 196),core::rect< s32 >(75,0,1100,50),NULL);
}
else
{
irr_driver->getVideoDriver()->draw2DRectangle(video::SColor(150, 96, 74, 196),core::rect< s32 >(75,0,900,50),NULL);
}
// We will let pass some time to let things settle before trusting FPS counter
// even if we also ignore fps = 1, which tends to happen in first checks
const int NO_TRUST_COUNT = 200;
@@ -2148,6 +2154,7 @@ scene::ISceneNode *IrrDriver::addLight(const core::vector3df &pos, float energy,
m_suncam->updateAbsolutePosition();
((WaterShaderProvider *) m_shaders->m_callbacks[ES_WATER])->setSunPosition(pos);
((SkyboxProvider *) m_shaders->m_callbacks[ES_SKYBOX])->setSunPosition(pos);
}
return light;

View File

@@ -217,6 +217,11 @@ Material::Material(const XMLNode *node, int index, bool deprecated)
{
m_graphical_effect = GE_SPHERE_MAP;
}
else if (s == "skybox")
{
printf("[sam] Coucou\n");
m_graphical_effect = GE_SKYBOX;
}
else if (s == "splatting")
{
m_graphical_effect = GE_SPLATTING;
@@ -801,6 +806,19 @@ void Material::setMaterialProperties(video::SMaterial *m, scene::IMeshBuffer* m
m->SpecularColor.set(0,0,0,0);
modes++;
}
if(m_graphical_effect == GE_SKYBOX && irr_driver->isGLSL())
{
printf("[sam] Hello world :)\n");
ITexture* tex = irr_driver->getTexture("cloud_mask.png");
m->setTexture(1, tex);
if(m->getTexture(1) == NULL)
{
printf("[sam] Error :( \n");
}
m->MaterialType = irr_driver->getShader(ES_SKYBOX);
}
if (m_graphical_effect == GE_SPLATTING)
{
if (irr_driver->supportsSplatting())

View File

@@ -54,6 +54,7 @@ public:
GE_WATER_SHADER,
GE_SPHERE_MAP,
GE_SPLATTING,
GE_SKYBOX,
GE_NORMAL_MAP,
GE_CAUSTICS};

View File

@@ -34,6 +34,7 @@ Shaders::Shaders()
m_callbacks[ES_NORMAL_MAP_LIGHTMAP] = new NormalMapProvider(true);
m_callbacks[ES_NORMAL_MAP] = new NormalMapProvider(false);
m_callbacks[ES_SKYBOX] = new SkyboxProvider();
m_callbacks[ES_SPLATTING] = new SplattingProvider();
m_callbacks[ES_WATER] = new WaterShaderProvider();
m_callbacks[ES_GRASS] = new GrassShaderProvider();
@@ -94,8 +95,11 @@ void Shaders::loadShaders()
m_shaders[ES_NORMAL_MAP_LIGHTMAP] = glslmat(dir + "normalmap.vert", dir + "normalmap.frag",
m_callbacks[ES_NORMAL_MAP_LIGHTMAP], EMT_SOLID_2_LAYER);
m_shaders[ES_SPLATTING] = glsl(dir + "objectpass.vert", dir + "splatting.frag",
m_callbacks[ES_SPLATTING]);
m_shaders[ES_SKYBOX] = glslmat(dir + "skybox.vert", dir + "skybox.frag",
m_callbacks[ES_SKYBOX], EMT_TRANSPARENT_ALPHA_CHANNEL);
m_shaders[ES_SPLATTING] = glslmat(dir + "objectpass.vert", dir + "splatting.frag",
m_callbacks[ES_SPLATTING], EMT_SOLID);
m_shaders[ES_WATER] = glslmat(dir + "water.vert", dir + "water.frag",
m_callbacks[ES_WATER], EMT_TRANSPARENT_ALPHA_CHANNEL);

View File

@@ -25,6 +25,7 @@ using namespace irr;
#define FOREACH_SHADER(ACT) \
ACT(ES_NORMAL_MAP) \
ACT(ES_NORMAL_MAP_LIGHTMAP) \
ACT(ES_SKYBOX) \
ACT(ES_SPLATTING) \
ACT(ES_WATER) \
ACT(ES_WATER_SURFACE) \