Rayview now uses the shader manager.
This commit is contained in:
parent
edee3ac0c9
commit
766b20f3f8
5 changed files with 14 additions and 11 deletions
|
@ -172,8 +172,8 @@ void Raycaster::sprite_casting(sf::RenderTarget &target) {
|
||||||
// float level = sqrt(rec.first);
|
// float level = sqrt(rec.first);
|
||||||
float level = lights[sprite_pos.location.y][sprite_pos.location.x] * PERCENT;
|
float level = lights[sprite_pos.location.y][sprite_pos.location.x] * PERCENT;
|
||||||
if(rec.second == aiming_at) level += 0.2;
|
if(rec.second == aiming_at) level += 0.2;
|
||||||
$brightness.setUniform("darkness", level);
|
$brightness->setUniform("darkness", level);
|
||||||
target.draw(*sf_sprite, &$brightness);
|
target.draw(*sf_sprite, $brightness.get());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -393,8 +393,7 @@ void Raycaster::update_level(GameLevel level) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Raycaster::init_shaders() {
|
void Raycaster::init_shaders() {
|
||||||
// dbc::check(sf::Shader::isAvailable(), "no shaders?!");
|
std::string the_fucking_name{"rayview_sprites"};
|
||||||
bool good = $brightness.loadFromFile("assets/shaders/modal.frag", sf::Shader::Type::Fragment);
|
$brightness = shaders::get_shared(the_fucking_name);
|
||||||
dbc::check(good, "shader could not be loaded");
|
$brightness->setUniform("source", sf::Shader::CurrentTexture);
|
||||||
$brightness.setUniform("source", sf::Shader::CurrentTexture);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ using RGBA = uint32_t;
|
||||||
struct Raycaster {
|
struct Raycaster {
|
||||||
int $pitch=0;
|
int $pitch=0;
|
||||||
sf::Clock $clock;
|
sf::Clock $clock;
|
||||||
sf::Shader $brightness;
|
std::shared_ptr<sf::Shader> $brightness = nullptr;
|
||||||
double $pos_x = 0;
|
double $pos_x = 0;
|
||||||
double $pos_y = 0;
|
double $pos_y = 0;
|
||||||
|
|
||||||
|
|
11
shaders.cpp
11
shaders.cpp
|
@ -12,7 +12,6 @@ namespace shaders {
|
||||||
static ShaderManager SMGR;
|
static ShaderManager SMGR;
|
||||||
static bool initialized = false;
|
static bool initialized = false;
|
||||||
|
|
||||||
|
|
||||||
bool load_shader(std::string name, nlohmann::json& settings) {
|
bool load_shader(std::string name, nlohmann::json& settings) {
|
||||||
std::string file_name = settings["file_name"];
|
std::string file_name = settings["file_name"];
|
||||||
auto ptr = std::make_shared<sf::Shader>();
|
auto ptr = std::make_shared<sf::Shader>();
|
||||||
|
@ -23,6 +22,7 @@ namespace shaders {
|
||||||
|
|
||||||
void init() {
|
void init() {
|
||||||
if(!initialized) {
|
if(!initialized) {
|
||||||
|
dbc::check(sf::Shader::isAvailable(), "no shaders?!");
|
||||||
initialized = true;
|
initialized = true;
|
||||||
Config config("assets/shaders.json");
|
Config config("assets/shaders.json");
|
||||||
bool good = load_shader("ERROR", config["ERROR"]);
|
bool good = load_shader("ERROR", config["ERROR"]);
|
||||||
|
@ -43,13 +43,16 @@ namespace shaders {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sf::Shader* get(std::string name) {
|
std::shared_ptr<sf::Shader> get_shared(std::string& name) {
|
||||||
dbc::check(initialized, "you forgot to shaders::init()");
|
dbc::check(initialized, "you forgot to shaders::init()");
|
||||||
dbc::check(SMGR.shaders.contains(name),
|
dbc::check(SMGR.shaders.contains(name),
|
||||||
fmt::format("shader name '{}' not in assets/shaders.json", name));
|
fmt::format("shader name '{}' not in assets/shaders.json", name));
|
||||||
|
|
||||||
auto& rec = SMGR.shaders.at(name);
|
auto& rec = SMGR.shaders.at(name);
|
||||||
return rec.ptr.get();
|
return rec.ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
sf::Shader* get(std::string name) {
|
||||||
|
return get_shared(name).get();
|
||||||
}
|
}
|
||||||
|
|
||||||
void reload() {
|
void reload() {
|
||||||
|
|
|
@ -19,6 +19,7 @@ namespace shaders {
|
||||||
std::unordered_map<std::string, Record> shaders;
|
std::unordered_map<std::string, Record> shaders;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::shared_ptr<sf::Shader> get_shared(std::string& name);
|
||||||
void init();
|
void init();
|
||||||
bool load_shader(std::string& name, nlohmann::json& settings);
|
bool load_shader(std::string& name, nlohmann::json& settings);
|
||||||
sf::Shader* get(std::string name);
|
sf::Shader* get(std::string name);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue