For bloom (I assume by "glow" you mean the outline around items?): the problem is we end up with snow and sheep being glowing because they are white, but the effect should only come from reflective, very bright surfaces. If we had HDR rendering, then using a luminosity threshold to trigger the effect would be ok, but as we don't, we end up with "just white" objects that are glowing. The specular area is usually where we want the bloom to happen, hence the suggestion on using it. (+ we should give the artist an option to specify the specular exponent - could be in the alpha channel of the diffuse texture, for non-transparent objects).
If you plan to do HDR, so that the effect could be better handled (i.e only bloom when the luminosity is above 1.0, which would happen for reflective objects = high specular), then that would be ok. In any case, the artist needs a way to control what should be overly bright, and we should avoid making white objects too bright.
What do you think?

On the include of glext.h: that's indeed a better solution.

Some more notes: I had to remove "const" in "mipviz.frag" as I had this compilation error on Intel driver:

[IrrDriver Temp Logger] Level 3: GLSL shader failed to compile
[IrrDriver Temp Logger] Level 3: ERROR: 0:20: 'const 4-component vector of float' : cannot declare arrays of this qualifier
ERROR: 0:20: 'const' :  non-matching types (using implicit conversion) for const initializer
ERROR: 0:39: '=' :  cannot convert from 'float' to '4-component vector of float'

And I crash when starting a race in the call to glClear() (weird):

>    supertuxkart_d.exe!irr::video:
:COpenGLDriver::clearBuffers(bool backBuffer, bool zBuffer, bool stencilBuffer, irr::video::SColor color) Line 891    C++
     supertuxkart_d.exe!irr::video::COpenGLDriver::setRenderTarget(irr::video::ITexture * texture, bool clearBackBuffer, bool clearZBuffer, irr::video::SColor color) Line 4176    C++
     supertuxkart_d.exe!screenQuad::render(irr::video::ITexture * rt) Line 66    C++
     supertuxkart_d.exe!QuadGraph::makeMiniMap(const irr::core::dimension2d<unsigned int> & origdimension, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & name, const irr::video::SColor & fill_color) Line 1058    C++
     supertuxkart_d.exe!Track::loadQuadGraph(unsigned int mode_id, const bool reverse) Line 496    C++
     supertuxkart_d.exe!Track::loadTrackModel(bool reverse_track, unsigned int mode_id) Line 1398    C++
     supertuxkart_d.exe!World::init() Line 157    C++
     supertuxkart_d.exe!WorldWithRank::init() Line 30    C++

2013/6/28 Lauri Kasanen <>
On Thu, 27 Jun 2013 23:21:52 +0200
Lionel Fuentes <> wrote:

> Ah and I forgot: I needed to add this to glwrap.hpp:
> #define GL_VERTEX_PROGRAM_POINT_SIZE    0x8642
> #endif

I'd really rather not start adding each token as we go, due to one
platform. I've added a windows-only include of the shipped glext.h
(under irrlicht), but I can't test that. Does it work for you?

(Talking about the rebased and cleaned-up-history branch wk1_historic -
ought to be nicer to review as well.)

- Lauri