Sprites now have a distance lighting calculation that's the same as the raycaster using a shader.
This commit is contained in:
parent
a19bc47904
commit
3986e6978e
4 changed files with 21 additions and 8 deletions
|
@ -136,7 +136,11 @@ void Raycaster::sprite_casting(sf::RenderTarget &target) {
|
|||
$anim.step(*sf_sprite, texX, texY, texX_end - texX, textureHeight);
|
||||
sf_sprite->setPosition({x, y});
|
||||
|
||||
target.draw(*sf_sprite);
|
||||
$brightness.setUniform("offsetFactor", sf::Glsl::Vec2{0.0f, 0.0f});
|
||||
|
||||
float level = sqrt(rec.first);
|
||||
$brightness.setUniform("darkness", level);
|
||||
target.draw(*sf_sprite, &$brightness);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -351,3 +355,10 @@ void Raycaster::set_level(GameLevel level) {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
void Raycaster::init_shaders() {
|
||||
dbc::check(sf::Shader::isAvailable(), "no shaders?!");
|
||||
bool good = $brightness.loadFromFile("shaders/modal.frag", sf::Shader::Type::Fragment);
|
||||
dbc::check(good, "shader could not be loaded");
|
||||
$brightness.setUniform("source", sf::Shader::CurrentTexture);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue