mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 00:57:44 -04:00
[jak2] Hopefully improve sky performance (#3130)
Switches the slime look up table to be a texture, since I guess intel drivers are terrible and putting the array in the shader makes it extremely slow. Also, a few minor changes: - removed art-groups from the test-zone levels since this causes the compiler to re-decompile the game, and makes the launcher slower. (left it in commented out) - Switched `decompile_code` to false by default in jak 2, in case people run the decompiler and don't want to wait forever - Fixed build warnings
This commit is contained in:
parent
adada4751d
commit
85725401d2
|
@ -86,7 +86,7 @@ void apply_formatting_config(
|
||||||
// circumstance, we do NOT do this sort of thing when formatting normal forms (cond/case pairs
|
// circumstance, we do NOT do this sort of thing when formatting normal forms (cond/case pairs
|
||||||
// are another similar situation)
|
// are another similar situation)
|
||||||
if (curr_node.formatting_config.has_constant_pairs) {
|
if (curr_node.formatting_config.has_constant_pairs) {
|
||||||
for (int i = 0; i < curr_node.refs.size(); i++) {
|
for (int i = 0; i < (int)curr_node.refs.size(); i++) {
|
||||||
auto& child_ref = curr_node.refs.at(i);
|
auto& child_ref = curr_node.refs.at(i);
|
||||||
const auto type = child_ref.metadata.node_type;
|
const auto type = child_ref.metadata.node_type;
|
||||||
if (constant_types.find(type) == constant_types.end() &&
|
if (constant_types.find(type) == constant_types.end() &&
|
||||||
|
@ -107,7 +107,7 @@ void apply_formatting_config(
|
||||||
curr_node.formatting_config.indentation_width = hang_indentation_width(curr_node);
|
curr_node.formatting_config.indentation_width = hang_indentation_width(curr_node);
|
||||||
}
|
}
|
||||||
// iterate through the refs
|
// iterate through the refs
|
||||||
for (int i = 0; i < curr_node.refs.size(); i++) {
|
for (int i = 0; i < (int)curr_node.refs.size(); i++) {
|
||||||
auto& ref = curr_node.refs.at(i);
|
auto& ref = curr_node.refs.at(i);
|
||||||
if (!ref.token) {
|
if (!ref.token) {
|
||||||
// If the child has a pre-defined configuration at that index, we pass it along
|
// If the child has a pre-defined configuration at that index, we pass it along
|
||||||
|
@ -211,7 +211,7 @@ std::vector<std::string> apply_formatting(const FormatterTreeNode& curr_node,
|
||||||
//
|
//
|
||||||
// This means we may combine elements onto the same line in this step.
|
// This means we may combine elements onto the same line in this step.
|
||||||
std::vector<std::string> form_lines = {};
|
std::vector<std::string> form_lines = {};
|
||||||
for (int i = 0; i < curr_node.refs.size(); i++) {
|
for (int i = 0; i < (int)curr_node.refs.size(); i++) {
|
||||||
const auto& ref = curr_node.refs.at(i);
|
const auto& ref = curr_node.refs.at(i);
|
||||||
// Add new line entry
|
// Add new line entry
|
||||||
if (ref.token) {
|
if (ref.token) {
|
||||||
|
@ -227,7 +227,7 @@ std::vector<std::string> apply_formatting(const FormatterTreeNode& curr_node,
|
||||||
// If it's not a token, we have to recursively build up the form
|
// If it's not a token, we have to recursively build up the form
|
||||||
// TODO - add the cursor_pos here
|
// TODO - add the cursor_pos here
|
||||||
const auto& lines = apply_formatting(ref, {}, cursor_pos);
|
const auto& lines = apply_formatting(ref, {}, cursor_pos);
|
||||||
for (int i = 0; i < lines.size(); i++) {
|
for (int i = 0; i < (int)lines.size(); i++) {
|
||||||
const auto& line = lines.at(i);
|
const auto& line = lines.at(i);
|
||||||
form_lines.push_back(fmt::format(
|
form_lines.push_back(fmt::format(
|
||||||
"{}{}", str_util::repeat(ref.formatting_config.parent_mutable_extra_indent, " "),
|
"{}{}", str_util::repeat(ref.formatting_config.parent_mutable_extra_indent, " "),
|
||||||
|
@ -235,12 +235,12 @@ std::vector<std::string> apply_formatting(const FormatterTreeNode& curr_node,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// If we are hanging forms, combine the first two forms onto the same line
|
// If we are hanging forms, combine the first two forms onto the same line
|
||||||
if (i == curr_node.refs.size() - 1 && form_lines.size() > 1 &&
|
if (i == (int)curr_node.refs.size() - 1 && form_lines.size() > 1 &&
|
||||||
(curr_node.formatting_config.hang_forms ||
|
(curr_node.formatting_config.hang_forms ||
|
||||||
curr_node.formatting_config.combine_first_two_lines)) {
|
curr_node.formatting_config.combine_first_two_lines)) {
|
||||||
form_lines.at(0) += fmt::format(" {}", form_lines.at(1));
|
form_lines.at(0) += fmt::format(" {}", form_lines.at(1));
|
||||||
form_lines.erase(form_lines.begin() + 1);
|
form_lines.erase(form_lines.begin() + 1);
|
||||||
} else if ((i + 1) < curr_node.refs.size()) {
|
} else if ((i + 1) < (int)curr_node.refs.size()) {
|
||||||
const auto& next_ref = curr_node.refs.at(i + 1);
|
const auto& next_ref = curr_node.refs.at(i + 1);
|
||||||
// combine the next inline comment or constant pair
|
// combine the next inline comment or constant pair
|
||||||
if ((next_ref.metadata.node_type == "comment" && next_ref.metadata.is_inline) ||
|
if ((next_ref.metadata.node_type == "comment" && next_ref.metadata.is_inline) ||
|
||||||
|
@ -267,7 +267,7 @@ std::vector<std::string> apply_formatting(const FormatterTreeNode& curr_node,
|
||||||
// Consolidate any lines if the configuration requires it
|
// Consolidate any lines if the configuration requires it
|
||||||
if (curr_node.formatting_config.inline_until_index != -1) {
|
if (curr_node.formatting_config.inline_until_index != -1) {
|
||||||
std::vector<std::string> new_form_lines = {};
|
std::vector<std::string> new_form_lines = {};
|
||||||
for (int i = 0; i < form_lines.size(); i++) {
|
for (int i = 0; i < (int)form_lines.size(); i++) {
|
||||||
if (i < curr_node.formatting_config.inline_until_index) {
|
if (i < curr_node.formatting_config.inline_until_index) {
|
||||||
if (new_form_lines.empty()) {
|
if (new_form_lines.empty()) {
|
||||||
new_form_lines.push_back(form_lines.at(i));
|
new_form_lines.push_back(form_lines.at(i));
|
||||||
|
@ -296,7 +296,7 @@ std::vector<std::string> apply_formatting(const FormatterTreeNode& curr_node,
|
||||||
if (inline_form) {
|
if (inline_form) {
|
||||||
form_lines = {fmt::format("{}", fmt::join(form_lines, " "))};
|
form_lines = {fmt::format("{}", fmt::join(form_lines, " "))};
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < form_lines.size(); i++) {
|
for (int i = 0; i < (int)form_lines.size(); i++) {
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
auto& line = form_lines.at(i);
|
auto& line = form_lines.at(i);
|
||||||
line = fmt::format("{}{}",
|
line = fmt::format("{}{}",
|
||||||
|
|
|
@ -39,7 +39,7 @@ bool should_insert_blank_line(const FormatterTreeNode& containing_node,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// If the next form is a comment and is inline, don't insert a comment
|
// If the next form is a comment and is inline, don't insert a comment
|
||||||
if ((index + 1) < containing_node.refs.size() &&
|
if ((index + 1) < (int)containing_node.refs.size() &&
|
||||||
containing_node.refs.at(index + 1).metadata.is_comment &&
|
containing_node.refs.at(index + 1).metadata.is_comment &&
|
||||||
containing_node.refs.at(index + 1).metadata.is_inline) {
|
containing_node.refs.at(index + 1).metadata.is_inline) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -22,13 +22,13 @@ FormFormattingConfig new_binding_rule() {
|
||||||
auto binding_list_config = std::make_shared<FormFormattingConfig>();
|
auto binding_list_config = std::make_shared<FormFormattingConfig>();
|
||||||
binding_list_config->hang_forms = false;
|
binding_list_config->hang_forms = false;
|
||||||
binding_list_config->indentation_width = 1;
|
binding_list_config->indentation_width = 1;
|
||||||
binding_list_config->indentation_width_for_index = [](FormFormattingConfig cfg, int index) {
|
binding_list_config->indentation_width_for_index = [](FormFormattingConfig /*cfg*/, int index) {
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return 4;
|
return 4;
|
||||||
};
|
};
|
||||||
binding_list_config->should_prevent_inlining = [](FormFormattingConfig config, int num_refs) {
|
binding_list_config->should_prevent_inlining = [](FormFormattingConfig /*config*/, int num_refs) {
|
||||||
// Only prevent inlining a binding list, if there are more than 1 bindings
|
// Only prevent inlining a binding list, if there are more than 1 bindings
|
||||||
if (num_refs > 1) {
|
if (num_refs > 1) {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -17,14 +17,14 @@ struct FormFormattingConfig {
|
||||||
2; // 2 for a flow // TODO - also remove this, prefer storing the first node's width in the
|
2; // 2 for a flow // TODO - also remove this, prefer storing the first node's width in the
|
||||||
// metadata on the first pass, that's basically all this does
|
// metadata on the first pass, that's basically all this does
|
||||||
std::function<int(FormFormattingConfig, int)> indentation_width_for_index =
|
std::function<int(FormFormattingConfig, int)> indentation_width_for_index =
|
||||||
[](FormFormattingConfig config, int index) { return config.indentation_width; };
|
[](FormFormattingConfig config, int /*index*/) { return config.indentation_width; };
|
||||||
bool combine_first_two_lines =
|
bool combine_first_two_lines =
|
||||||
false; // NOTE - basically hang, but will probably stick around after hang is gone
|
false; // NOTE - basically hang, but will probably stick around after hang is gone
|
||||||
int inline_until_index = -1;
|
int inline_until_index = -1;
|
||||||
bool has_constant_pairs = false;
|
bool has_constant_pairs = false;
|
||||||
bool prevent_inlining = false;
|
bool prevent_inlining = false;
|
||||||
std::function<bool(FormFormattingConfig, int num_refs)> should_prevent_inlining =
|
std::function<bool(FormFormattingConfig, int num_refs)> should_prevent_inlining =
|
||||||
[](FormFormattingConfig config, int num_refs) { return config.prevent_inlining; };
|
[](FormFormattingConfig config, int /*num_refs*/) { return config.prevent_inlining; };
|
||||||
int parent_mutable_extra_indent = 0;
|
int parent_mutable_extra_indent = 0;
|
||||||
std::unordered_map<int, std::shared_ptr<FormFormattingConfig>> index_configs = {};
|
std::unordered_map<int, std::shared_ptr<FormFormattingConfig>> index_configs = {};
|
||||||
};
|
};
|
||||||
|
|
|
@ -544,8 +544,15 @@ MethodInfo TypeSystem::override_method(Type* type,
|
||||||
throw_typesystem_error("Trying to override a method that has no parent declaration");
|
throw_typesystem_error("Trying to override a method that has no parent declaration");
|
||||||
}
|
}
|
||||||
// use the existing ID.
|
// use the existing ID.
|
||||||
return type->add_method({existing_info.id, existing_info.name, existing_info.type,
|
return type->add_method({existing_info.id,
|
||||||
type->get_name(), existing_info.no_virtual, false, true, docstring});
|
existing_info.name,
|
||||||
|
existing_info.type,
|
||||||
|
type->get_name(),
|
||||||
|
existing_info.no_virtual,
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
docstring,
|
||||||
|
{}});
|
||||||
}
|
}
|
||||||
|
|
||||||
MethodInfo TypeSystem::declare_method(const std::string& type_name,
|
MethodInfo TypeSystem::declare_method(const std::string& type_name,
|
||||||
|
@ -596,8 +603,15 @@ MethodInfo TypeSystem::declare_method(Type* type,
|
||||||
}
|
}
|
||||||
|
|
||||||
// use the existing ID.
|
// use the existing ID.
|
||||||
return type->add_method(
|
return type->add_method({existing_info.id,
|
||||||
{existing_info.id, method_name, ts, type->get_name(), no_virtual, true, false, docstring});
|
method_name,
|
||||||
|
ts,
|
||||||
|
type->get_name(),
|
||||||
|
no_virtual,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
docstring,
|
||||||
|
{}});
|
||||||
} else {
|
} else {
|
||||||
if (got_existing) {
|
if (got_existing) {
|
||||||
// make sure we aren't changing anything.
|
// make sure we aren't changing anything.
|
||||||
|
@ -627,8 +641,15 @@ MethodInfo TypeSystem::declare_method(Type* type,
|
||||||
return existing_info;
|
return existing_info;
|
||||||
} else {
|
} else {
|
||||||
// add a new method!
|
// add a new method!
|
||||||
return type->add_method({get_next_method_id(type), method_name, ts, type->get_name(),
|
return type->add_method({get_next_method_id(type),
|
||||||
no_virtual, false, false, docstring});
|
method_name,
|
||||||
|
ts,
|
||||||
|
type->get_name(),
|
||||||
|
no_virtual,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
docstring,
|
||||||
|
{}});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -736,7 +757,8 @@ MethodInfo TypeSystem::add_new_method(Type* type,
|
||||||
|
|
||||||
return existing;
|
return existing;
|
||||||
} else {
|
} else {
|
||||||
return type->add_new_method({0, "new", ts, type->get_name(), false, false, false, docstring});
|
return type->add_new_method(
|
||||||
|
{0, "new", ts, type->get_name(), false, false, false, docstring, {}});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2089,7 +2111,7 @@ std::optional<std::string> find_best_field_in_structure(const TypeSystem& ts,
|
||||||
if (end_field == -1) {
|
if (end_field == -1) {
|
||||||
end_field = st->fields().size();
|
end_field = st->fields().size();
|
||||||
}
|
}
|
||||||
for (size_t i = start_field; i < end_field; ++i) {
|
for (size_t i = start_field; i < (size_t)end_field; ++i) {
|
||||||
const auto& field = st->fields().at(i);
|
const auto& field = st->fields().at(i);
|
||||||
auto type = ts.lookup_type(field.type());
|
auto type = ts.lookup_type(field.type());
|
||||||
if (field.is_dynamic() || field.offset() > offset || field.user_placed() != want_fixed) {
|
if (field.is_dynamic() || field.offset() > offset || field.user_placed() != want_fixed) {
|
||||||
|
|
|
@ -457,7 +457,7 @@ void declare_method(Type* type,
|
||||||
void declare_state_methods(Type* type,
|
void declare_state_methods(Type* type,
|
||||||
TypeSystem* type_system,
|
TypeSystem* type_system,
|
||||||
const goos::Object& def,
|
const goos::Object& def,
|
||||||
StructureDefResult& struct_def) {
|
StructureDefResult& /*struct_def*/) {
|
||||||
for_each_in_list(def, [&](const goos::Object& _obj) {
|
for_each_in_list(def, [&](const goos::Object& _obj) {
|
||||||
auto obj = &_obj;
|
auto obj = &_obj;
|
||||||
// either state-name or (state-name args...) or (state-name "docstring" args...)
|
// either state-name or (state-name args...) or (state-name "docstring" args...)
|
||||||
|
|
|
@ -36,7 +36,9 @@
|
||||||
|
|
||||||
// All art groups you want to use in your custom level. Will add their models and corresponding textures to the FR3 file.
|
// All art groups you want to use in your custom level. Will add their models and corresponding textures to the FR3 file.
|
||||||
// Note: You will still have to add them to your level's .gd file.
|
// Note: You will still have to add them to your level's .gd file.
|
||||||
"art_groups": ["plat-ag"],
|
// Removed so that the release builds don't have to double-decompile the game
|
||||||
|
// "art_groups": ["plat-ag"],
|
||||||
|
"art_groups": [],
|
||||||
|
|
||||||
// Any textures you want to include in your custom level. This is mainly useful for things such as the zoomer HUD,
|
// Any textures you want to include in your custom level. This is mainly useful for things such as the zoomer HUD,
|
||||||
// which is not in the common level files and has no art group associated with it.
|
// which is not in the common level files and has no art group associated with it.
|
||||||
|
@ -103,16 +105,16 @@
|
||||||
"lump": {
|
"lump": {
|
||||||
"name": "test-eco"
|
"name": "test-eco"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"trans": [-7.41, 3.5, 28.42], // translation
|
|
||||||
"etype": "plat", // actor type
|
|
||||||
"game_task": 0, // associated game task (for powercells, etc)
|
|
||||||
"quat": [0, 0, 0, 1], // quaternion
|
|
||||||
"bsphere": [-7.41, 3.5, 28.42, 10], // bounding sphere
|
|
||||||
"lump": {
|
|
||||||
"name": "test-plat"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// {
|
||||||
|
// "trans": [-7.41, 3.5, 28.42], // translation
|
||||||
|
// "etype": "plat", // actor type
|
||||||
|
// "game_task": 0, // associated game task (for powercells, etc)
|
||||||
|
// "quat": [0, 0, 0, 1], // quaternion
|
||||||
|
// "bsphere": [-7.41, 3.5, 28.42, 10], // bounding sphere
|
||||||
|
// "lump": {
|
||||||
|
// "name": "test-plat"
|
||||||
|
// }
|
||||||
|
// }
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -35,7 +35,9 @@
|
||||||
"base_id": 100,
|
"base_id": 100,
|
||||||
|
|
||||||
// All art groups you want to use in your custom level. Will add their models and corresponding textures to the FR3 file.
|
// All art groups you want to use in your custom level. Will add their models and corresponding textures to the FR3 file.
|
||||||
"art_groups": ["prsn-torture-ag"],
|
// Removed so that the release builds don't have to double-decompile the game
|
||||||
|
//"art_groups": ["prsn-torture-ag"],
|
||||||
|
"art_groups": [],
|
||||||
|
|
||||||
// Any textures you want to include in your custom level.
|
// Any textures you want to include in your custom level.
|
||||||
// This is mainly useful for textures which are not in the common level files and have no art group associated with them.
|
// This is mainly useful for textures which are not in the common level files and have no art group associated with them.
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
"disassemble_code": false,
|
"disassemble_code": false,
|
||||||
|
|
||||||
// Run the decompiler
|
// Run the decompiler
|
||||||
"decompile_code": true,
|
"decompile_code": false,
|
||||||
|
|
||||||
"find_functions": true,
|
"find_functions": true,
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "common/util/FileUtil.h"
|
#include "common/util/FileUtil.h"
|
||||||
#include "common/util/Timer.h"
|
#include "common/util/Timer.h"
|
||||||
|
|
||||||
|
#include "game/graphics/opengl_renderer/slime_lut.h"
|
||||||
#include "game/graphics/texture/TexturePool.h"
|
#include "game/graphics/texture/TexturePool.h"
|
||||||
|
|
||||||
#include "third-party/imgui/imgui.h"
|
#include "third-party/imgui/imgui.h"
|
||||||
|
@ -428,6 +429,19 @@ TextureAnimator::TextureAnimator(ShaderLibrary& shaders, const tfrag3::Level* co
|
||||||
glGenerateMipmap(GL_TEXTURE_2D);
|
glGenerateMipmap(GL_TEXTURE_2D);
|
||||||
glBindTexture(GL_TEXTURE_2D, 0);
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
|
|
||||||
|
// create the slime LUT texture
|
||||||
|
glGenTextures(1, &m_slime_lut_texture);
|
||||||
|
glBindTexture(GL_TEXTURE_1D, m_slime_lut_texture);
|
||||||
|
std::vector<u8> slime_data;
|
||||||
|
for (auto x : kSlimeLutData) {
|
||||||
|
slime_data.push_back(x * 255);
|
||||||
|
}
|
||||||
|
glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, 256, 0, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV,
|
||||||
|
slime_data.data());
|
||||||
|
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
|
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
|
|
||||||
shader.activate();
|
shader.activate();
|
||||||
|
|
||||||
// generate CLUT table.
|
// generate CLUT table.
|
||||||
|
@ -2751,6 +2765,10 @@ void TextureAnimator::run_slime(const SlimeInput& input) {
|
||||||
float uv[2 * 4] = {0, 0, 1, 0, 1, 1, 0, 1};
|
float uv[2 * 4] = {0, 0, 1, 0, 1, 1, 0, 1};
|
||||||
glUniform2fv(m_uniforms.uvs, 4, uv);
|
glUniform2fv(m_uniforms.uvs, 4, uv);
|
||||||
|
|
||||||
|
glActiveTexture(GL_TEXTURE10);
|
||||||
|
glBindTexture(GL_TEXTURE_1D, m_slime_lut_texture);
|
||||||
|
glActiveTexture(GL_TEXTURE0);
|
||||||
|
|
||||||
// Anim 1:
|
// Anim 1:
|
||||||
// noise (16x16)
|
// noise (16x16)
|
||||||
// while (noise_layer_idx) {
|
// while (noise_layer_idx) {
|
||||||
|
|
|
@ -348,6 +348,7 @@ class TextureAnimator {
|
||||||
|
|
||||||
GLuint m_shader_id;
|
GLuint m_shader_id;
|
||||||
GLuint m_dummy_texture;
|
GLuint m_dummy_texture;
|
||||||
|
GLuint m_slime_lut_texture;
|
||||||
|
|
||||||
u8 m_index_to_clut_addr[256];
|
u8 m_index_to_clut_addr[256];
|
||||||
OpenGLTexturePool m_opengl_texture_pool;
|
OpenGLTexturePool m_opengl_texture_pool;
|
||||||
|
|
|
@ -14,6 +14,7 @@ uniform float slime_scroll;
|
||||||
in vec2 uv;
|
in vec2 uv;
|
||||||
|
|
||||||
uniform sampler2D tex_T0;
|
uniform sampler2D tex_T0;
|
||||||
|
uniform sampler1D tex_T10;
|
||||||
|
|
||||||
float cloud_lookup(float v, float minimum, float maximum) {
|
float cloud_lookup(float v, float minimum, float maximum) {
|
||||||
maximum = max(minimum, maximum);
|
maximum = max(minimum, maximum);
|
||||||
|
@ -29,265 +30,6 @@ float cloud_lookup(float v, float minimum, float maximum) {
|
||||||
return sin_alpha * sin_alpha;
|
return sin_alpha * sin_alpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 slime_lut[256] = vec4[](
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3254, 0.3333, 0.0745, 0.5019),
|
|
||||||
vec4(0.3333, 0.3450, 0.0745, 0.5019),
|
|
||||||
vec4(0.3411, 0.3607, 0.0745, 0.5019),
|
|
||||||
vec4(0.3490, 0.3725, 0.0745, 0.5019),
|
|
||||||
vec4(0.3568, 0.3882, 0.0745, 0.5019),
|
|
||||||
vec4(0.3607, 0.4000, 0.0745, 0.5019),
|
|
||||||
vec4(0.3686, 0.4117, 0.0745, 0.5019),
|
|
||||||
vec4(0.3764, 0.4274, 0.0745, 0.5019),
|
|
||||||
vec4(0.3764, 0.4274, 0.0784, 0.5019),
|
|
||||||
vec4(0.3686, 0.4117, 0.0745, 0.5019),
|
|
||||||
vec4(0.3607, 0.4000, 0.0745, 0.5019),
|
|
||||||
vec4(0.3529, 0.3843, 0.0745, 0.5019),
|
|
||||||
vec4(0.3490, 0.3725, 0.0745, 0.5019),
|
|
||||||
vec4(0.3411, 0.3607, 0.0745, 0.5019),
|
|
||||||
vec4(0.3333, 0.3450, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3215, 0.0745, 0.5019),
|
|
||||||
vec4(0.3215, 0.3254, 0.0705, 0.5019),
|
|
||||||
vec4(0.3254, 0.3294, 0.0705, 0.5019),
|
|
||||||
vec4(0.3294, 0.3333, 0.0705, 0.5019),
|
|
||||||
vec4(0.3333, 0.3372, 0.0705, 0.5019),
|
|
||||||
vec4(0.3333, 0.3450, 0.0705, 0.5019),
|
|
||||||
vec4(0.3372, 0.3490, 0.0705, 0.5019),
|
|
||||||
vec4(0.3411, 0.3529, 0.0705, 0.5019),
|
|
||||||
vec4(0.3450, 0.3568, 0.0705, 0.5019),
|
|
||||||
vec4(0.3450, 0.3607, 0.0705, 0.5019),
|
|
||||||
vec4(0.3490, 0.3686, 0.0705, 0.5019),
|
|
||||||
vec4(0.3529, 0.3725, 0.0705, 0.5019),
|
|
||||||
vec4(0.3568, 0.3764, 0.0705, 0.5019),
|
|
||||||
vec4(0.3607, 0.3803, 0.0705, 0.5019),
|
|
||||||
vec4(0.3607, 0.3843, 0.0705, 0.5019),
|
|
||||||
vec4(0.3647, 0.3921, 0.0705, 0.5019),
|
|
||||||
vec4(0.3686, 0.3960, 0.0705, 0.5019),
|
|
||||||
vec4(0.3725, 0.4000, 0.0705, 0.5019),
|
|
||||||
vec4(0.3725, 0.4039, 0.0705, 0.5019),
|
|
||||||
vec4(0.3764, 0.4078, 0.0705, 0.5019),
|
|
||||||
vec4(0.3803, 0.4156, 0.0705, 0.5019),
|
|
||||||
vec4(0.3843, 0.4196, 0.0705, 0.5019),
|
|
||||||
vec4(0.3882, 0.4235, 0.0705, 0.5019),
|
|
||||||
vec4(0.3882, 0.4274, 0.0705, 0.5019),
|
|
||||||
vec4(0.3921, 0.4313, 0.0705, 0.5019),
|
|
||||||
vec4(0.3960, 0.4392, 0.0705, 0.5019),
|
|
||||||
vec4(0.4000, 0.4431, 0.0705, 0.5019),
|
|
||||||
vec4(0.4000, 0.4470, 0.0705, 0.5019),
|
|
||||||
vec4(0.4039, 0.4509, 0.0705, 0.5019),
|
|
||||||
vec4(0.4078, 0.4549, 0.0705, 0.5019),
|
|
||||||
vec4(0.4117, 0.4627, 0.0705, 0.5019),
|
|
||||||
vec4(0.4117, 0.4666, 0.0705, 0.5019),
|
|
||||||
vec4(0.4235, 0.4862, 0.0705, 0.5019),
|
|
||||||
vec4(0.4509, 0.5254, 0.0705, 0.5019),
|
|
||||||
vec4(0.4784, 0.5686, 0.0705, 0.5019),
|
|
||||||
vec4(0.5058, 0.6117, 0.0666, 0.5019),
|
|
||||||
vec4(0.5333, 0.6509, 0.0666, 0.5019),
|
|
||||||
vec4(0.5607, 0.6941, 0.0666, 0.5019),
|
|
||||||
vec4(0.5882, 0.7372, 0.0666, 0.5019),
|
|
||||||
vec4(0.6196, 0.7803, 0.0666, 0.5019),
|
|
||||||
vec4(0.6196, 0.7803, 0.0666, 0.5019),
|
|
||||||
vec4(0.6000, 0.7529, 0.0666, 0.5019),
|
|
||||||
vec4(0.5803, 0.7254, 0.0666, 0.5019),
|
|
||||||
vec4(0.5647, 0.6980, 0.0666, 0.5019),
|
|
||||||
vec4(0.5450, 0.6705, 0.0666, 0.5019),
|
|
||||||
vec4(0.5294, 0.6431, 0.0666, 0.5019),
|
|
||||||
vec4(0.5098, 0.6156, 0.0705, 0.5019),
|
|
||||||
vec4(0.4745, 0.5607, 0.0705, 0.5019),
|
|
||||||
vec4(0.4666, 0.5450, 0.0705, 0.5019),
|
|
||||||
vec4(0.4666, 0.5529, 0.0705, 0.5019),
|
|
||||||
vec4(0.4705, 0.5568, 0.0705, 0.5019),
|
|
||||||
vec4(0.4745, 0.5607, 0.0705, 0.5019),
|
|
||||||
vec4(0.4784, 0.5647, 0.0705, 0.5019),
|
|
||||||
vec4(0.4784, 0.5686, 0.0705, 0.5019),
|
|
||||||
vec4(0.4823, 0.5764, 0.0705, 0.5019),
|
|
||||||
vec4(0.4862, 0.5803, 0.0705, 0.5019),
|
|
||||||
vec4(0.4901, 0.5843, 0.0705, 0.5019),
|
|
||||||
vec4(0.4941, 0.5882, 0.0705, 0.5019),
|
|
||||||
vec4(0.4941, 0.5921, 0.0705, 0.5019),
|
|
||||||
vec4(0.4980, 0.6000, 0.0705, 0.5019),
|
|
||||||
vec4(0.5019, 0.6039, 0.0705, 0.5019),
|
|
||||||
vec4(0.5058, 0.6078, 0.0705, 0.5019),
|
|
||||||
vec4(0.5058, 0.6117, 0.0705, 0.5019),
|
|
||||||
vec4(0.5098, 0.6156, 0.0705, 0.5019),
|
|
||||||
vec4(0.5137, 0.6235, 0.0705, 0.5019),
|
|
||||||
vec4(0.5176, 0.6274, 0.0705, 0.5019),
|
|
||||||
vec4(0.5215, 0.6313, 0.0705, 0.5019),
|
|
||||||
vec4(0.5215, 0.6352, 0.0705, 0.5019),
|
|
||||||
vec4(0.5254, 0.6392, 0.0705, 0.5019),
|
|
||||||
vec4(0.5294, 0.6470, 0.0705, 0.5019),
|
|
||||||
vec4(0.5333, 0.6509, 0.0705, 0.5019),
|
|
||||||
vec4(0.5333, 0.6549, 0.0705, 0.5019),
|
|
||||||
vec4(0.5372, 0.6588, 0.0705, 0.5019),
|
|
||||||
vec4(0.5411, 0.6627, 0.0705, 0.5019),
|
|
||||||
vec4(0.5450, 0.6705, 0.0705, 0.5019),
|
|
||||||
vec4(0.5450, 0.6745, 0.0705, 0.5019),
|
|
||||||
vec4(0.5490, 0.6784, 0.0705, 0.5019),
|
|
||||||
vec4(0.5529, 0.6823, 0.0705, 0.5019),
|
|
||||||
vec4(0.5568, 0.6862, 0.0705, 0.5019),
|
|
||||||
vec4(0.5607, 0.6941, 0.0705, 0.5019),
|
|
||||||
vec4(0.5607, 0.6980, 0.0705, 0.5019),
|
|
||||||
vec4(0.5725, 0.7098, 0.0666, 0.5019),
|
|
||||||
vec4(0.5803, 0.7254, 0.0666, 0.5019),
|
|
||||||
vec4(0.5882, 0.7372, 0.0666, 0.5019),
|
|
||||||
vec4(0.6000, 0.7490, 0.0666, 0.5019),
|
|
||||||
vec4(0.6078, 0.7647, 0.0666, 0.5019),
|
|
||||||
vec4(0.6156, 0.7764, 0.0666, 0.5019),
|
|
||||||
vec4(0.6274, 0.7921, 0.0666, 0.5019),
|
|
||||||
vec4(0.6274, 0.7921, 0.0666, 0.5019),
|
|
||||||
vec4(0.6196, 0.7803, 0.0666, 0.5019),
|
|
||||||
vec4(0.6117, 0.7686, 0.0666, 0.5019),
|
|
||||||
vec4(0.6039, 0.7607, 0.0666, 0.5019),
|
|
||||||
vec4(0.5960, 0.7490, 0.0666, 0.5019),
|
|
||||||
vec4(0.5882, 0.7411, 0.0705, 0.5019),
|
|
||||||
vec4(0.5803, 0.7294, 0.0705, 0.5019),
|
|
||||||
vec4(0.5647, 0.7098, 0.0705, 0.5019),
|
|
||||||
vec4(0.5647, 0.7098, 0.0705, 0.5019),
|
|
||||||
vec4(0.5607, 0.7058, 0.0705, 0.5019),
|
|
||||||
vec4(0.5568, 0.7019, 0.0705, 0.5019),
|
|
||||||
vec4(0.5529, 0.6980, 0.0705, 0.5019),
|
|
||||||
vec4(0.5529, 0.6941, 0.0705, 0.5019),
|
|
||||||
vec4(0.5490, 0.6901, 0.0745, 0.5019),
|
|
||||||
vec4(0.5450, 0.6862, 0.0745, 0.5019),
|
|
||||||
vec4(0.5411, 0.6823, 0.0745, 0.5019),
|
|
||||||
vec4(0.5411, 0.6823, 0.0745, 0.5019),
|
|
||||||
vec4(0.5372, 0.6784, 0.0745, 0.5019),
|
|
||||||
vec4(0.5333, 0.6745, 0.0745, 0.5019),
|
|
||||||
vec4(0.5294, 0.6705, 0.0745, 0.5019),
|
|
||||||
vec4(0.5294, 0.6666, 0.0745, 0.5019),
|
|
||||||
vec4(0.5254, 0.6627, 0.0745, 0.5019),
|
|
||||||
vec4(0.5215, 0.6588, 0.0745, 0.5019),
|
|
||||||
vec4(0.5176, 0.6549, 0.0745, 0.5019),
|
|
||||||
vec4(0.5176, 0.6549, 0.0745, 0.5019),
|
|
||||||
vec4(0.5137, 0.6509, 0.0745, 0.5019),
|
|
||||||
vec4(0.5098, 0.6470, 0.0784, 0.5019),
|
|
||||||
vec4(0.5058, 0.6431, 0.0784, 0.5019),
|
|
||||||
vec4(0.5058, 0.6392, 0.0784, 0.5019),
|
|
||||||
vec4(0.5019, 0.6352, 0.0784, 0.5019),
|
|
||||||
vec4(0.4980, 0.6313, 0.0784, 0.5019),
|
|
||||||
vec4(0.4941, 0.6274, 0.0784, 0.5019),
|
|
||||||
vec4(0.4941, 0.6274, 0.0784, 0.5019),
|
|
||||||
vec4(0.4901, 0.6235, 0.0784, 0.5019),
|
|
||||||
vec4(0.4862, 0.6196, 0.0784, 0.5019),
|
|
||||||
vec4(0.4823, 0.6156, 0.0784, 0.5019),
|
|
||||||
vec4(0.4823, 0.6117, 0.0784, 0.5019),
|
|
||||||
vec4(0.4784, 0.6078, 0.0784, 0.5019),
|
|
||||||
vec4(0.4745, 0.6039, 0.0784, 0.5019),
|
|
||||||
vec4(0.4745, 0.6039, 0.0823, 0.5019),
|
|
||||||
vec4(0.4745, 0.6039, 0.0823, 0.5019),
|
|
||||||
vec4(0.4862, 0.6156, 0.0784, 0.5019),
|
|
||||||
vec4(0.4980, 0.6313, 0.0784, 0.5019),
|
|
||||||
vec4(0.5098, 0.6470, 0.0784, 0.5019),
|
|
||||||
vec4(0.5215, 0.6588, 0.0745, 0.5019),
|
|
||||||
vec4(0.5333, 0.6745, 0.0745, 0.5019),
|
|
||||||
vec4(0.5450, 0.6901, 0.0745, 0.5019),
|
|
||||||
vec4(0.5568, 0.7019, 0.0705, 0.5019),
|
|
||||||
vec4(0.5686, 0.7176, 0.0705, 0.5019),
|
|
||||||
vec4(0.5803, 0.7333, 0.0705, 0.5019),
|
|
||||||
vec4(0.5921, 0.7490, 0.0705, 0.5019),
|
|
||||||
vec4(0.6039, 0.7607, 0.0666, 0.5019),
|
|
||||||
vec4(0.6156, 0.7764, 0.0666, 0.5019),
|
|
||||||
vec4(0.6274, 0.7921, 0.0666, 0.5019),
|
|
||||||
vec4(0.6392, 0.8039, 0.0627, 0.5019),
|
|
||||||
vec4(0.6509, 0.8196, 0.0627, 0.5019),
|
|
||||||
vec4(0.6745, 0.8509, 0.0627, 0.5019),
|
|
||||||
vec4(0.6705, 0.8470, 0.0627, 0.5019),
|
|
||||||
vec4(0.6666, 0.8431, 0.0627, 0.5019),
|
|
||||||
vec4(0.6627, 0.8392, 0.0627, 0.5019),
|
|
||||||
vec4(0.6588, 0.8352, 0.0627, 0.5019),
|
|
||||||
vec4(0.6588, 0.8313, 0.0627, 0.5019),
|
|
||||||
vec4(0.6549, 0.8274, 0.0627, 0.5019),
|
|
||||||
vec4(0.6509, 0.8235, 0.0627, 0.5019),
|
|
||||||
vec4(0.6470, 0.8196, 0.0627, 0.5019),
|
|
||||||
vec4(0.6431, 0.8156, 0.0627, 0.5019),
|
|
||||||
vec4(0.6431, 0.8117, 0.0627, 0.5019),
|
|
||||||
vec4(0.6392, 0.8078, 0.0627, 0.5019),
|
|
||||||
vec4(0.6352, 0.8039, 0.0666, 0.5019),
|
|
||||||
vec4(0.6313, 0.8000, 0.0666, 0.5019),
|
|
||||||
vec4(0.6274, 0.7960, 0.0666, 0.5019),
|
|
||||||
vec4(0.6274, 0.7921, 0.0666, 0.5019),
|
|
||||||
vec4(0.6235, 0.7882, 0.0666, 0.5019),
|
|
||||||
vec4(0.6196, 0.7843, 0.0666, 0.5019),
|
|
||||||
vec4(0.6156, 0.7803, 0.0666, 0.5019),
|
|
||||||
vec4(0.6156, 0.7764, 0.0666, 0.5019),
|
|
||||||
vec4(0.6117, 0.7725, 0.0666, 0.5019),
|
|
||||||
vec4(0.6078, 0.7686, 0.0666, 0.5019),
|
|
||||||
vec4(0.6039, 0.7647, 0.0666, 0.5019),
|
|
||||||
vec4(0.6000, 0.7607, 0.0666, 0.5019),
|
|
||||||
vec4(0.6000, 0.7568, 0.0666, 0.5019),
|
|
||||||
vec4(0.5960, 0.7529, 0.0705, 0.5019),
|
|
||||||
vec4(0.5921, 0.7490, 0.0705, 0.5019),
|
|
||||||
vec4(0.5882, 0.7450, 0.0705, 0.5019),
|
|
||||||
vec4(0.5843, 0.7411, 0.0705, 0.5019),
|
|
||||||
vec4(0.5843, 0.7372, 0.0705, 0.5019),
|
|
||||||
vec4(0.5803, 0.7333, 0.0705, 0.5019),
|
|
||||||
vec4(0.5764, 0.7294, 0.0705, 0.5019),
|
|
||||||
vec4(0.5725, 0.7254, 0.0705, 0.5019),
|
|
||||||
vec4(0.5686, 0.7215, 0.0705, 0.5019),
|
|
||||||
vec4(0.5686, 0.7176, 0.0705, 0.5019),
|
|
||||||
vec4(0.5647, 0.7137, 0.0705, 0.5019),
|
|
||||||
vec4(0.5607, 0.7098, 0.0705, 0.5019),
|
|
||||||
vec4(0.5568, 0.7058, 0.0705, 0.5019),
|
|
||||||
vec4(0.5568, 0.7019, 0.0745, 0.5019),
|
|
||||||
vec4(0.5490, 0.6941, 0.0745, 0.5019),
|
|
||||||
vec4(0.5490, 0.6941, 0.0745, 0.5019),
|
|
||||||
vec4(0.5647, 0.7137, 0.0705, 0.5019),
|
|
||||||
vec4(0.5803, 0.7294, 0.0705, 0.5019),
|
|
||||||
vec4(0.5921, 0.7490, 0.0705, 0.5019),
|
|
||||||
vec4(0.6078, 0.7647, 0.0666, 0.5019),
|
|
||||||
vec4(0.6196, 0.7843, 0.0666, 0.5019),
|
|
||||||
vec4(0.6352, 0.8000, 0.0666, 0.5019),
|
|
||||||
vec4(0.6509, 0.8196, 0.0666, 0.5019),
|
|
||||||
vec4(0.6509, 0.8196, 0.0666, 0.5019),
|
|
||||||
vec4(0.6392, 0.8039, 0.0666, 0.5019),
|
|
||||||
vec4(0.6274, 0.7921, 0.0666, 0.5019),
|
|
||||||
vec4(0.6156, 0.7764, 0.0666, 0.5019),
|
|
||||||
vec4(0.6078, 0.7647, 0.0705, 0.5019),
|
|
||||||
vec4(0.5960, 0.7490, 0.0705, 0.5019),
|
|
||||||
vec4(0.5843, 0.7372, 0.0705, 0.5019),
|
|
||||||
vec4(0.5647, 0.7098, 0.0745, 0.5019),
|
|
||||||
vec4(0.5647, 0.7098, 0.0745, 0.5019),
|
|
||||||
vec4(0.5647, 0.7098, 0.0745, 0.5019),
|
|
||||||
vec4(0.5647, 0.7098, 0.0745, 0.5019),
|
|
||||||
vec4(0.5647, 0.7098, 0.0745, 0.5019),
|
|
||||||
vec4(0.5647, 0.7098, 0.0745, 0.5019),
|
|
||||||
vec4(0.5647, 0.7098, 0.0745, 0.5019),
|
|
||||||
vec4(0.5647, 0.7098, 0.0745, 0.5019),
|
|
||||||
vec4(0.5647, 0.7098, 0.0745, 0.5019)
|
|
||||||
);
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
if (enable_tex == 1) {
|
if (enable_tex == 1) {
|
||||||
vec4 tex_color = texture(tex_T0, uv);
|
vec4 tex_color = texture(tex_T0, uv);
|
||||||
|
@ -311,7 +53,7 @@ void main() {
|
||||||
} else if (enable_tex == 3) {
|
} else if (enable_tex == 3) {
|
||||||
// cloud version
|
// cloud version
|
||||||
vec4 tex_color = texture(tex_T0, uv + vec2(0, slime_scroll));
|
vec4 tex_color = texture(tex_T0, uv + vec2(0, slime_scroll));
|
||||||
color = slime_lut[int(tex_color.r * 255.f)];
|
color = texelFetch(tex_T10, int(tex_color.r * 255.f), 0);
|
||||||
} else {
|
} else {
|
||||||
color = (rgba / 128.);
|
color = (rgba / 128.);
|
||||||
}
|
}
|
||||||
|
|
89
game/graphics/opengl_renderer/slime_lut.h
Normal file
89
game/graphics/opengl_renderer/slime_lut.h
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
constexpr float kSlimeLutData[4 * 256] = {
|
||||||
|
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
|
||||||
|
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
|
||||||
|
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
|
||||||
|
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
|
||||||
|
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
|
||||||
|
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
|
||||||
|
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
|
||||||
|
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
|
||||||
|
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
|
||||||
|
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
|
||||||
|
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019, 0.3254, 0.3333, 0.0745, 0.5019,
|
||||||
|
0.3333, 0.3450, 0.0745, 0.5019, 0.3411, 0.3607, 0.0745, 0.5019, 0.3490, 0.3725, 0.0745, 0.5019,
|
||||||
|
0.3568, 0.3882, 0.0745, 0.5019, 0.3607, 0.4000, 0.0745, 0.5019, 0.3686, 0.4117, 0.0745, 0.5019,
|
||||||
|
0.3764, 0.4274, 0.0745, 0.5019, 0.3764, 0.4274, 0.0784, 0.5019, 0.3686, 0.4117, 0.0745, 0.5019,
|
||||||
|
0.3607, 0.4000, 0.0745, 0.5019, 0.3529, 0.3843, 0.0745, 0.5019, 0.3490, 0.3725, 0.0745, 0.5019,
|
||||||
|
0.3411, 0.3607, 0.0745, 0.5019, 0.3333, 0.3450, 0.0745, 0.5019, 0.3215, 0.3215, 0.0745, 0.5019,
|
||||||
|
0.3215, 0.3215, 0.0745, 0.5019, 0.3215, 0.3254, 0.0705, 0.5019, 0.3254, 0.3294, 0.0705, 0.5019,
|
||||||
|
0.3294, 0.3333, 0.0705, 0.5019, 0.3333, 0.3372, 0.0705, 0.5019, 0.3333, 0.3450, 0.0705, 0.5019,
|
||||||
|
0.3372, 0.3490, 0.0705, 0.5019, 0.3411, 0.3529, 0.0705, 0.5019, 0.3450, 0.3568, 0.0705, 0.5019,
|
||||||
|
0.3450, 0.3607, 0.0705, 0.5019, 0.3490, 0.3686, 0.0705, 0.5019, 0.3529, 0.3725, 0.0705, 0.5019,
|
||||||
|
0.3568, 0.3764, 0.0705, 0.5019, 0.3607, 0.3803, 0.0705, 0.5019, 0.3607, 0.3843, 0.0705, 0.5019,
|
||||||
|
0.3647, 0.3921, 0.0705, 0.5019, 0.3686, 0.3960, 0.0705, 0.5019, 0.3725, 0.4000, 0.0705, 0.5019,
|
||||||
|
0.3725, 0.4039, 0.0705, 0.5019, 0.3764, 0.4078, 0.0705, 0.5019, 0.3803, 0.4156, 0.0705, 0.5019,
|
||||||
|
0.3843, 0.4196, 0.0705, 0.5019, 0.3882, 0.4235, 0.0705, 0.5019, 0.3882, 0.4274, 0.0705, 0.5019,
|
||||||
|
0.3921, 0.4313, 0.0705, 0.5019, 0.3960, 0.4392, 0.0705, 0.5019, 0.4000, 0.4431, 0.0705, 0.5019,
|
||||||
|
0.4000, 0.4470, 0.0705, 0.5019, 0.4039, 0.4509, 0.0705, 0.5019, 0.4078, 0.4549, 0.0705, 0.5019,
|
||||||
|
0.4117, 0.4627, 0.0705, 0.5019, 0.4117, 0.4666, 0.0705, 0.5019, 0.4235, 0.4862, 0.0705, 0.5019,
|
||||||
|
0.4509, 0.5254, 0.0705, 0.5019, 0.4784, 0.5686, 0.0705, 0.5019, 0.5058, 0.6117, 0.0666, 0.5019,
|
||||||
|
0.5333, 0.6509, 0.0666, 0.5019, 0.5607, 0.6941, 0.0666, 0.5019, 0.5882, 0.7372, 0.0666, 0.5019,
|
||||||
|
0.6196, 0.7803, 0.0666, 0.5019, 0.6196, 0.7803, 0.0666, 0.5019, 0.6000, 0.7529, 0.0666, 0.5019,
|
||||||
|
0.5803, 0.7254, 0.0666, 0.5019, 0.5647, 0.6980, 0.0666, 0.5019, 0.5450, 0.6705, 0.0666, 0.5019,
|
||||||
|
0.5294, 0.6431, 0.0666, 0.5019, 0.5098, 0.6156, 0.0705, 0.5019, 0.4745, 0.5607, 0.0705, 0.5019,
|
||||||
|
0.4666, 0.5450, 0.0705, 0.5019, 0.4666, 0.5529, 0.0705, 0.5019, 0.4705, 0.5568, 0.0705, 0.5019,
|
||||||
|
0.4745, 0.5607, 0.0705, 0.5019, 0.4784, 0.5647, 0.0705, 0.5019, 0.4784, 0.5686, 0.0705, 0.5019,
|
||||||
|
0.4823, 0.5764, 0.0705, 0.5019, 0.4862, 0.5803, 0.0705, 0.5019, 0.4901, 0.5843, 0.0705, 0.5019,
|
||||||
|
0.4941, 0.5882, 0.0705, 0.5019, 0.4941, 0.5921, 0.0705, 0.5019, 0.4980, 0.6000, 0.0705, 0.5019,
|
||||||
|
0.5019, 0.6039, 0.0705, 0.5019, 0.5058, 0.6078, 0.0705, 0.5019, 0.5058, 0.6117, 0.0705, 0.5019,
|
||||||
|
0.5098, 0.6156, 0.0705, 0.5019, 0.5137, 0.6235, 0.0705, 0.5019, 0.5176, 0.6274, 0.0705, 0.5019,
|
||||||
|
0.5215, 0.6313, 0.0705, 0.5019, 0.5215, 0.6352, 0.0705, 0.5019, 0.5254, 0.6392, 0.0705, 0.5019,
|
||||||
|
0.5294, 0.6470, 0.0705, 0.5019, 0.5333, 0.6509, 0.0705, 0.5019, 0.5333, 0.6549, 0.0705, 0.5019,
|
||||||
|
0.5372, 0.6588, 0.0705, 0.5019, 0.5411, 0.6627, 0.0705, 0.5019, 0.5450, 0.6705, 0.0705, 0.5019,
|
||||||
|
0.5450, 0.6745, 0.0705, 0.5019, 0.5490, 0.6784, 0.0705, 0.5019, 0.5529, 0.6823, 0.0705, 0.5019,
|
||||||
|
0.5568, 0.6862, 0.0705, 0.5019, 0.5607, 0.6941, 0.0705, 0.5019, 0.5607, 0.6980, 0.0705, 0.5019,
|
||||||
|
0.5725, 0.7098, 0.0666, 0.5019, 0.5803, 0.7254, 0.0666, 0.5019, 0.5882, 0.7372, 0.0666, 0.5019,
|
||||||
|
0.6000, 0.7490, 0.0666, 0.5019, 0.6078, 0.7647, 0.0666, 0.5019, 0.6156, 0.7764, 0.0666, 0.5019,
|
||||||
|
0.6274, 0.7921, 0.0666, 0.5019, 0.6274, 0.7921, 0.0666, 0.5019, 0.6196, 0.7803, 0.0666, 0.5019,
|
||||||
|
0.6117, 0.7686, 0.0666, 0.5019, 0.6039, 0.7607, 0.0666, 0.5019, 0.5960, 0.7490, 0.0666, 0.5019,
|
||||||
|
0.5882, 0.7411, 0.0705, 0.5019, 0.5803, 0.7294, 0.0705, 0.5019, 0.5647, 0.7098, 0.0705, 0.5019,
|
||||||
|
0.5647, 0.7098, 0.0705, 0.5019, 0.5607, 0.7058, 0.0705, 0.5019, 0.5568, 0.7019, 0.0705, 0.5019,
|
||||||
|
0.5529, 0.6980, 0.0705, 0.5019, 0.5529, 0.6941, 0.0705, 0.5019, 0.5490, 0.6901, 0.0745, 0.5019,
|
||||||
|
0.5450, 0.6862, 0.0745, 0.5019, 0.5411, 0.6823, 0.0745, 0.5019, 0.5411, 0.6823, 0.0745, 0.5019,
|
||||||
|
0.5372, 0.6784, 0.0745, 0.5019, 0.5333, 0.6745, 0.0745, 0.5019, 0.5294, 0.6705, 0.0745, 0.5019,
|
||||||
|
0.5294, 0.6666, 0.0745, 0.5019, 0.5254, 0.6627, 0.0745, 0.5019, 0.5215, 0.6588, 0.0745, 0.5019,
|
||||||
|
0.5176, 0.6549, 0.0745, 0.5019, 0.5176, 0.6549, 0.0745, 0.5019, 0.5137, 0.6509, 0.0745, 0.5019,
|
||||||
|
0.5098, 0.6470, 0.0784, 0.5019, 0.5058, 0.6431, 0.0784, 0.5019, 0.5058, 0.6392, 0.0784, 0.5019,
|
||||||
|
0.5019, 0.6352, 0.0784, 0.5019, 0.4980, 0.6313, 0.0784, 0.5019, 0.4941, 0.6274, 0.0784, 0.5019,
|
||||||
|
0.4941, 0.6274, 0.0784, 0.5019, 0.4901, 0.6235, 0.0784, 0.5019, 0.4862, 0.6196, 0.0784, 0.5019,
|
||||||
|
0.4823, 0.6156, 0.0784, 0.5019, 0.4823, 0.6117, 0.0784, 0.5019, 0.4784, 0.6078, 0.0784, 0.5019,
|
||||||
|
0.4745, 0.6039, 0.0784, 0.5019, 0.4745, 0.6039, 0.0823, 0.5019, 0.4745, 0.6039, 0.0823, 0.5019,
|
||||||
|
0.4862, 0.6156, 0.0784, 0.5019, 0.4980, 0.6313, 0.0784, 0.5019, 0.5098, 0.6470, 0.0784, 0.5019,
|
||||||
|
0.5215, 0.6588, 0.0745, 0.5019, 0.5333, 0.6745, 0.0745, 0.5019, 0.5450, 0.6901, 0.0745, 0.5019,
|
||||||
|
0.5568, 0.7019, 0.0705, 0.5019, 0.5686, 0.7176, 0.0705, 0.5019, 0.5803, 0.7333, 0.0705, 0.5019,
|
||||||
|
0.5921, 0.7490, 0.0705, 0.5019, 0.6039, 0.7607, 0.0666, 0.5019, 0.6156, 0.7764, 0.0666, 0.5019,
|
||||||
|
0.6274, 0.7921, 0.0666, 0.5019, 0.6392, 0.8039, 0.0627, 0.5019, 0.6509, 0.8196, 0.0627, 0.5019,
|
||||||
|
0.6745, 0.8509, 0.0627, 0.5019, 0.6705, 0.8470, 0.0627, 0.5019, 0.6666, 0.8431, 0.0627, 0.5019,
|
||||||
|
0.6627, 0.8392, 0.0627, 0.5019, 0.6588, 0.8352, 0.0627, 0.5019, 0.6588, 0.8313, 0.0627, 0.5019,
|
||||||
|
0.6549, 0.8274, 0.0627, 0.5019, 0.6509, 0.8235, 0.0627, 0.5019, 0.6470, 0.8196, 0.0627, 0.5019,
|
||||||
|
0.6431, 0.8156, 0.0627, 0.5019, 0.6431, 0.8117, 0.0627, 0.5019, 0.6392, 0.8078, 0.0627, 0.5019,
|
||||||
|
0.6352, 0.8039, 0.0666, 0.5019, 0.6313, 0.8000, 0.0666, 0.5019, 0.6274, 0.7960, 0.0666, 0.5019,
|
||||||
|
0.6274, 0.7921, 0.0666, 0.5019, 0.6235, 0.7882, 0.0666, 0.5019, 0.6196, 0.7843, 0.0666, 0.5019,
|
||||||
|
0.6156, 0.7803, 0.0666, 0.5019, 0.6156, 0.7764, 0.0666, 0.5019, 0.6117, 0.7725, 0.0666, 0.5019,
|
||||||
|
0.6078, 0.7686, 0.0666, 0.5019, 0.6039, 0.7647, 0.0666, 0.5019, 0.6000, 0.7607, 0.0666, 0.5019,
|
||||||
|
0.6000, 0.7568, 0.0666, 0.5019, 0.5960, 0.7529, 0.0705, 0.5019, 0.5921, 0.7490, 0.0705, 0.5019,
|
||||||
|
0.5882, 0.7450, 0.0705, 0.5019, 0.5843, 0.7411, 0.0705, 0.5019, 0.5843, 0.7372, 0.0705, 0.5019,
|
||||||
|
0.5803, 0.7333, 0.0705, 0.5019, 0.5764, 0.7294, 0.0705, 0.5019, 0.5725, 0.7254, 0.0705, 0.5019,
|
||||||
|
0.5686, 0.7215, 0.0705, 0.5019, 0.5686, 0.7176, 0.0705, 0.5019, 0.5647, 0.7137, 0.0705, 0.5019,
|
||||||
|
0.5607, 0.7098, 0.0705, 0.5019, 0.5568, 0.7058, 0.0705, 0.5019, 0.5568, 0.7019, 0.0745, 0.5019,
|
||||||
|
0.5490, 0.6941, 0.0745, 0.5019, 0.5490, 0.6941, 0.0745, 0.5019, 0.5647, 0.7137, 0.0705, 0.5019,
|
||||||
|
0.5803, 0.7294, 0.0705, 0.5019, 0.5921, 0.7490, 0.0705, 0.5019, 0.6078, 0.7647, 0.0666, 0.5019,
|
||||||
|
0.6196, 0.7843, 0.0666, 0.5019, 0.6352, 0.8000, 0.0666, 0.5019, 0.6509, 0.8196, 0.0666, 0.5019,
|
||||||
|
0.6509, 0.8196, 0.0666, 0.5019, 0.6392, 0.8039, 0.0666, 0.5019, 0.6274, 0.7921, 0.0666, 0.5019,
|
||||||
|
0.6156, 0.7764, 0.0666, 0.5019, 0.6078, 0.7647, 0.0705, 0.5019, 0.5960, 0.7490, 0.0705, 0.5019,
|
||||||
|
0.5843, 0.7372, 0.0705, 0.5019, 0.5647, 0.7098, 0.0745, 0.5019, 0.5647, 0.7098, 0.0745, 0.5019,
|
||||||
|
0.5647, 0.7098, 0.0745, 0.5019, 0.5647, 0.7098, 0.0745, 0.5019, 0.5647, 0.7098, 0.0745, 0.5019,
|
||||||
|
0.5647, 0.7098, 0.0745, 0.5019, 0.5647, 0.7098, 0.0745, 0.5019, 0.5647, 0.7098, 0.0745, 0.5019,
|
||||||
|
0.5647, 0.7098, 0.0745, 0.5019};
|
|
@ -972,7 +972,7 @@ void pc_get_external_speedrun_time(u32 speedrun_id_ptr,
|
||||||
auto speedrun_id = std::string(Ptr<String>(speedrun_id_ptr).c()->data());
|
auto speedrun_id = std::string(Ptr<String>(speedrun_id_ptr).c()->data());
|
||||||
if (external_speedrun_time_cache.find(speedrun_id) != external_speedrun_time_cache.end()) {
|
if (external_speedrun_time_cache.find(speedrun_id) != external_speedrun_time_cache.end()) {
|
||||||
const auto& runs = external_speedrun_time_cache.at(speedrun_id);
|
const auto& runs = external_speedrun_time_cache.at(speedrun_id);
|
||||||
if (index < runs.size()) {
|
if (index < (int)runs.size()) {
|
||||||
const auto& run_info = external_speedrun_time_cache.at(speedrun_id).at(index);
|
const auto& run_info = external_speedrun_time_cache.at(speedrun_id).at(index);
|
||||||
std::string converted =
|
std::string converted =
|
||||||
get_font_bank(GameTextVersion::JAK2)->convert_utf8_to_game(run_info.first);
|
get_font_bank(GameTextVersion::JAK2)->convert_utf8_to_game(run_info.first);
|
||||||
|
@ -991,7 +991,7 @@ void pc_get_external_race_time(u32 race_id_ptr, s32 index, u32 name_dest_ptr, u3
|
||||||
auto race_id = std::string(Ptr<String>(race_id_ptr).c()->data());
|
auto race_id = std::string(Ptr<String>(race_id_ptr).c()->data());
|
||||||
if (external_race_time_cache.find(race_id) != external_race_time_cache.end()) {
|
if (external_race_time_cache.find(race_id) != external_race_time_cache.end()) {
|
||||||
const auto& runs = external_race_time_cache.at(race_id);
|
const auto& runs = external_race_time_cache.at(race_id);
|
||||||
if (index < runs.size()) {
|
if (index < (int)runs.size()) {
|
||||||
const auto& run_info = external_race_time_cache.at(race_id).at(index);
|
const auto& run_info = external_race_time_cache.at(race_id).at(index);
|
||||||
std::string converted =
|
std::string converted =
|
||||||
get_font_bank(GameTextVersion::JAK2)->convert_utf8_to_game(run_info.first);
|
get_font_bank(GameTextVersion::JAK2)->convert_utf8_to_game(run_info.first);
|
||||||
|
@ -1013,7 +1013,7 @@ void pc_get_external_highscore(u32 highscore_id_ptr,
|
||||||
auto highscore_id = std::string(Ptr<String>(highscore_id_ptr).c()->data());
|
auto highscore_id = std::string(Ptr<String>(highscore_id_ptr).c()->data());
|
||||||
if (external_highscores_cache.find(highscore_id) != external_highscores_cache.end()) {
|
if (external_highscores_cache.find(highscore_id) != external_highscores_cache.end()) {
|
||||||
const auto& runs = external_highscores_cache.at(highscore_id);
|
const auto& runs = external_highscores_cache.at(highscore_id);
|
||||||
if (index < runs.size()) {
|
if (index < (int)runs.size()) {
|
||||||
const auto& run_info = external_highscores_cache.at(highscore_id).at(index);
|
const auto& run_info = external_highscores_cache.at(highscore_id).at(index);
|
||||||
std::string converted =
|
std::string converted =
|
||||||
get_font_bank(GameTextVersion::JAK2)->convert_utf8_to_game(run_info.first);
|
get_font_bank(GameTextVersion::JAK2)->convert_utf8_to_game(run_info.first);
|
||||||
|
|
Loading…
Reference in a new issue