Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- GameGlobalShaderConstantSetter(Sky *sky, bool *force_fog_off,
- f32 *fog_range, Client *client):
- m_sky(sky),
- m_force_fog_off(force_fog_off),
- m_fog_range(fog_range),
- m_client(client)
- {}
- ~GameGlobalShaderConstantSetter() {}
- virtual void onSetConstants(video::IMaterialRendererServices *services,
- bool is_highlevel)
- {
- if(!is_highlevel)
- return;
- // Background color
- video::SColor bgcolor = m_sky->getBgColor();
- video::SColorf bgcolorf(bgcolor);
- float bgcolorfa[4] = {
- bgcolorf.r,
- bgcolorf.g,
- bgcolorf.b,
- bgcolorf.a,
- };
- services->setPixelShaderConstant("skyBgColor", bgcolorfa, 4);
- // Fog distance
- float fog_distance = *m_fog_range;
- if(*m_force_fog_off)
- fog_distance = 10000*BS;
- services->setPixelShaderConstant("fogDistance", &fog_distance, 1);
- // Day-night ratio
- u32 daynight_ratio = m_client->getEnv().getDayNightRatio();
- float daynight_ratio_f = (float)daynight_ratio / 1000.0;
- services->setPixelShaderConstant("dayNightRatio", &daynight_ratio_f, 1);
- video::SMaterial texture=m_sky->getMaterial(1);
- services->setPixelShaderConstant("glow", (float*)&texture, 1);
- texture=m_sky->getMaterial(2);
- services->setPixelShaderConstant("color", (float*)&texture, 1);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement