From 95e9bb15004c52d3cebdb77dd2a567c9c54c01b1 Mon Sep 17 00:00:00 2001 From: korenkonder Date: Mon, 1 Jan 2024 21:14:51 +0300 Subject: [PATCH] Small shader update --- res/ft_shaders.farc | Bin 130688 -> 130656 bytes src/DivaGL/shader.cpp | 77 ++- src/DivaGL/shader.hpp | 6 +- src/DivaGL/shader_ft.cpp | 1114 +++++++++++--------------------------- 4 files changed, 378 insertions(+), 819 deletions(-) diff --git a/res/ft_shaders.farc b/res/ft_shaders.farc index 9bdf57d39bd8f9bc60d44588cd512bc0b9766973..c67c3a88bcdf43525d5f903ab17e644ab29aa3b6 100644 GIT binary patch delta 10807 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 UkN7|3qGUv$Ps%CF5VN%Z1MDZQJpcdz diff --git a/src/DivaGL/shader.cpp b/src/DivaGL/shader.cpp index b32c459..2f68ed5 100644 --- a/src/DivaGL/shader.cpp +++ b/src/DivaGL/shader.cpp @@ -56,8 +56,8 @@ int32_t shader::bind(shader_set_data* set, uint32_t sub_index) { int32_t i = 0; for (i = 0; i < num_uniform && i < sizeof(uniform_val) / sizeof(int32_t); i++) { - const int32_t unival = uniform->arr[use_uniform[i]]; - const int32_t unival_max = use_permut[i] + const int32_t unival = uniform->arr[use_uniform[i].first]; + const int32_t unival_max = use_uniform[i].second ? max_def(vp_unival_max[i], fp_unival_max[i]) : 0; unival_shad += unival_shad_curr * min_def(unival, unival_max); unival_shad_curr *= unival_max + 1; @@ -445,7 +445,6 @@ void shader_set_data::load(farc* f, bool ignore_cache, shader->sub = force_malloc(shader->num_sub); shader->num_uniform = shaders_table[i].num_uniform; shader->use_uniform = shaders_table[i].use_uniform; - shader->use_permut = shaders_table[i].use_permut; int32_t num_sub = shader->num_sub; const shader_sub_table* sub_table = shaders_table[i].sub; @@ -454,7 +453,7 @@ void shader_set_data::load(farc* f, bool ignore_cache, vec_frag.resize(shader->num_uniform); int32_t* vec_vert_data = vec_vert.data(); int32_t* vec_frag_data = vec_frag.data(); - for (size_t j = 0; j < num_sub; j++, sub++, sub_table++) { + for (int32_t j = 0; j < num_sub; j++, sub++, sub_table++) { sub->sub_index = sub_table->sub_index; sub->vp_unival_max = sub_table->vp_unival_max; sub->fp_unival_max = sub_table->fp_unival_max; @@ -491,15 +490,28 @@ void shader_set_data::load(farc* f, bool ignore_cache, continue; } - uint64_t vert_file_name_cache = hash_utf8_fnv1a64m(vert_file_buf); - uint64_t frag_file_name_cache = hash_utf8_fnv1a64m(frag_file_buf); - for (int32_t i = 0; i < 64; i += 8) - if (((vert_file_name_cache >> i) & 0xFF) == 0) - vert_file_name_cache |= 0xFFULL << i; + uint32_t uniform_flags = 0; + for (int32_t k = 0; k < shader->num_uniform; k++) + if (shader->use_uniform[k].second) + uniform_flags |= 1 << k; - for (int32_t i = 0; i < 64; i += 8) - if (((frag_file_name_cache >> i) & 0xFF) == 0) - frag_file_name_cache |= 0xFFULL << i; + char uniform_flags_buf[9]; + for (int32_t k = 0, l = 7; k < 32; k += 4, l--) { + int32_t digit = (uniform_flags >> k) & 0xF; + if (digit >= 0x00 && digit <= 0x09) + uniform_flags_buf[l] = (char)('0' + digit); + else + uniform_flags_buf[l] = (char)('A' + (digit - 0x0A)); + } + uniform_flags_buf[8] = 0; + + strcat_s(vert_file_buf, sizeof(vert_file_buf), "."); + strcat_s(frag_file_buf, sizeof(frag_file_buf), "."); + strcat_s(vert_file_buf, sizeof(vert_file_buf), uniform_flags_buf); + strcat_s(frag_file_buf, sizeof(frag_file_buf), uniform_flags_buf); + + uint64_t vert_file_name_hash = hash_utf8_fnv1a64m(vert_file_buf); + uint64_t frag_file_name_hash = hash_utf8_fnv1a64m(frag_file_buf); char shader_cache_file_name[MAX_PATH]; strcpy_s(shader_cache_file_name, sizeof(shader_cache_file_name), sub_table->vp); @@ -519,11 +531,14 @@ void shader_set_data::load(farc* f, bool ignore_cache, if (!ignore_cache) { if (!shader_cache_file || !shader_cache_file->data) printf_debug("Shader not compiled: %s %s\n", vert_file_buf, frag_file_buf); - else if (vert_data_hash != ((uint64_t*)shader_cache_file->data)[0] - || frag_data_hash != ((uint64_t*)shader_cache_file->data)[1]) + else if (vert_file_name_hash != ((uint64_t*)shader_cache_file->data)[0] + || frag_file_name_hash != ((uint64_t*)shader_cache_file->data)[1]) + printf_debug("Shader flags not equal: %s %s\n", vert_file_buf, frag_file_buf); + else if (vert_data_hash != ((uint64_t*)shader_cache_file->data)[2] + || frag_data_hash != ((uint64_t*)shader_cache_file->data)[3]) printf_debug("Shader hash not equal: %s %s\n", vert_file_buf, frag_file_buf); else - bin = (program_binary*)&((uint64_t*)shader_cache_file->data)[2]; + bin = (program_binary*)&((uint64_t*)shader_cache_file->data)[4]; } if (shader->num_uniform > 0 @@ -533,8 +548,8 @@ void shader_set_data::load(farc* f, bool ignore_cache, int32_t unival_shad_count = 1; const int32_t* vp_unival_max = sub_table->vp_unival_max; const int32_t* fp_unival_max = sub_table->fp_unival_max; - for (size_t k = 0; k < num_uniform; k++) { - const int32_t unival_max = shader->use_permut[k] + for (int32_t k = 0; k < num_uniform; k++) { + const int32_t unival_max = shader->use_uniform[k].second ? max_def(vp_unival_max[k], fp_unival_max[k]) : 0; unival_shad_count += unival_shad_curr * unival_max; unival_shad_curr *= unival_max + 1; @@ -561,19 +576,19 @@ void shader_set_data::load(farc* f, bool ignore_cache, frag_buf[frag_buf_pos + num_uniform] = 0; strcat_s(frag_buf, sizeof(frag_buf), ".frag"); - for (size_t k = 0; k < unival_shad_count; k++) { - for (size_t l = 0, m = k; l < num_uniform; l++) { - size_t unival_max = (size_t)(shader->use_permut[l] + for (int32_t k = 0; k < unival_shad_count; k++) { + for (int32_t l = 0, m = k; l < num_uniform; l++) { + int32_t unival_max = (shader->use_uniform[l].second ? max_def(vp_unival_max[l], fp_unival_max[l]) : 0) + 1; - vec_vert_data[l] = (uint32_t)(min_def(m % unival_max, vp_unival_max[l])); + vec_vert_data[l] = min_def(m % unival_max, vp_unival_max[l]); m /= unival_max; vert_buf[vert_buf_pos + l] = (char)('0' + vec_vert_data[l]); } - for (size_t l = 0, m = k; l < num_uniform; l++) { - size_t unival_max = (size_t)(shader->use_permut[l] + for (int32_t l = 0, m = k; l < num_uniform; l++) { + int32_t unival_max = (shader->use_uniform[l].second ? max_def(vp_unival_max[l], fp_unival_max[l]) : 0) + 1; - vec_frag_data[l] = (uint32_t)(min_def(m % unival_max, fp_unival_max[l])); + vec_frag_data[l] = min_def(m % unival_max, fp_unival_max[l]); m /= unival_max; frag_buf[frag_buf_pos + l] = (char)('0' + vec_frag_data[l]); } @@ -665,7 +680,7 @@ void shader_set_data::load(farc* f, bool ignore_cache, free_def(shader_cache_file->data); size_t bin_count = program_data_binary.size(); - size_t bin_size = sizeof(uint64_t) * 2 + bin_count * sizeof(program_binary); + size_t bin_size = sizeof(uint64_t) * 4 + bin_count * sizeof(program_binary); for (program_binary& k : program_data_binary) bin_size += align_val(k.length, 0x04); shader_cache_file->data = force_malloc(bin_size); @@ -673,10 +688,12 @@ void shader_set_data::load(farc* f, bool ignore_cache, shader_cache_file->compressed = true; shader_cache_file->data_changed = true; - ((uint64_t*)shader_cache_file->data)[0] = vert_data_hash; - ((uint64_t*)shader_cache_file->data)[1] = frag_data_hash; - bin = (program_binary*)&((uint64_t*)shader_cache_file->data)[2]; - size_t bin_data_base = (size_t)shader_cache_file->data + sizeof(uint64_t) * 2; + ((uint64_t*)shader_cache_file->data)[0] = vert_file_name_hash; + ((uint64_t*)shader_cache_file->data)[1] = frag_file_name_hash; + ((uint64_t*)shader_cache_file->data)[2] = vert_data_hash; + ((uint64_t*)shader_cache_file->data)[3] = frag_data_hash; + bin = (program_binary*)&((uint64_t*)shader_cache_file->data)[4]; + size_t bin_data_base = (size_t)shader_cache_file->data + sizeof(uint64_t) * 4; size_t bin_data = bin_data_base + bin_count * sizeof(program_binary); for (program_binary& k : program_data_binary) { bin->length = k.length; @@ -745,7 +762,7 @@ void shader_set_data::unload() { const int32_t* vp_unival_max = sub->vp_unival_max; const int32_t* fp_unival_max = sub->fp_unival_max; for (size_t k = 0; k < num_uniform; k++) { - const int32_t unival_max = shader->use_permut[k] + const int32_t unival_max = shader->use_uniform[k].second ? max_def(vp_unival_max[k], fp_unival_max[k]) : 0; unival_shad_count += unival_shad_curr * unival_max; unival_shad_curr *= unival_max + 1; diff --git a/src/DivaGL/shader.hpp b/src/DivaGL/shader.hpp index 372af8b..a0d353c 100644 --- a/src/DivaGL/shader.hpp +++ b/src/DivaGL/shader.hpp @@ -38,8 +38,7 @@ struct shader_table { int32_t num_sub; const shader_sub_table* sub; int32_t num_uniform; - const uniform_name* use_uniform; - const bool* use_permut; + const std::pair* use_uniform; }; struct shader; @@ -74,8 +73,7 @@ struct shader { int32_t num_sub; shader_sub* sub; int32_t num_uniform; - const uniform_name* use_uniform; - const bool* use_permut; + const std::pair* use_uniform; PFNSHADERGLSLBINDFUNCPROC bind_func; int32_t bind(shader_set_data* set, uint32_t sub_index); diff --git a/src/DivaGL/shader_ft.cpp b/src/DivaGL/shader_ft.cpp index 9e37e41..8cf7884 100644 --- a/src/DivaGL/shader_ft.cpp +++ b/src/DivaGL/shader_ft.cpp @@ -1942,912 +1942,458 @@ static const shader_sub_table SPRITE_table[] = { }, }; -static const uniform_name BLINN_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_TEXTURE_COUNT, - U_LIGHT_0, - U_NORMAL, - U_SPECULAR, - U_ENV_MAP, - U_FOG_HEIGHT, - U_MORPH, - U_MORPH_COLOR, - U_LIGHT_1, - U_ALPHA_TEST, // 11th added +static const std::pair BLINN_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_TEXTURE_COUNT, false }, + { U_LIGHT_1 , false }, + { U_NORMAL , false }, + { U_SPECULAR , false }, + { U_ENV_MAP , false }, + { U_FOG_HEIGHT , false }, + { U_MORPH , true }, + { U_MORPH_COLOR , true }, + { U_LIGHT_1 , false }, + { U_ALPHA_TEST , true }, // 11th added }; -static const uniform_name ITEM_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_MORPH, - U_SPECULAR_IBL, - U_SPECULAR, - U_NORMAL, - U_TEXTURE_COUNT, - U_ENV_MAP, - U_SELF_SHADOW, - U_FOG, - U_ALPHA_TEST, - U_SHADOW, - U_CHARA_COLOR, - U_TONE_CURVE, +static const std::pair ITEM_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_MORPH , true }, + { U_SPECULAR_IBL , false }, + { U_SPECULAR , false }, + { U_NORMAL , false }, + { U_TEXTURE_COUNT, false }, + { U_ENV_MAP , false }, + { U_SELF_SHADOW , false }, + { U_FOG , false }, + { U_ALPHA_TEST , true }, + { U_SHADOW , false }, + { U_CHARA_COLOR , false }, + { U_TONE_CURVE , false }, }; -static const uniform_name STAGE_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_MORPH, - U_MORPH_COLOR, - U_TEXTURE_COUNT, - U_ENV_MAP, - U_LIGHT_0, - U_NORMAL, - U_FOG_HEIGHT, - U_LIGHT_1, - U12, - U_ALPHA_TEST, // 11th added +static const std::pair STAGE_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_MORPH , true }, + { U_MORPH_COLOR , true }, + { U_TEXTURE_COUNT, false }, + { U_ENV_MAP , false }, + { U_LIGHT_1 , false }, + { U_NORMAL , false }, + { U_FOG_HEIGHT , false }, + { U_LIGHT_1 , false }, + { U12 , false }, + { U_ALPHA_TEST , true }, // 11th added }; -static const uniform_name SKIN_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_NORMAL, - U_SELF_SHADOW, - U_FOG, - U_ALPHA_TEST, - U_SHADOW, - U_NPR, - U_CHARA_COLOR, - U_TONE_CURVE, +static const std::pair SKIN_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_NORMAL , false }, + { U_SELF_SHADOW , false }, + { U_FOG , false }, + { U_ALPHA_TEST , true }, + { U_SHADOW , false }, + { U_NPR , true }, + { U_CHARA_COLOR , false }, + { U_TONE_CURVE , false }, }; -static const uniform_name SSS_SKIN_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U37, - U_ALPHA_TEST, - U_SELF_SHADOW, - U_SHADOW, - U_NPR, - U26, +static const std::pair SSS_SKIN_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U37 , false }, + { U_ALPHA_TEST , true }, + { U_SELF_SHADOW , false }, + { U_SHADOW , false }, + { U_NPR , true }, + { U26 , false }, }; -static const uniform_name SSS_FILT_uniform[] = { - //U16, // 0th removed - U_SSS_FILTER, - U_NPR, +static const std::pair SSS_FILT_uniform[] = { + //{ U16 , true }, // 0th removed + { U_SSS_FILTER , true }, + { U_NPR , true }, }; -static const uniform_name HAIR_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_SPECULAR_IBL, - U_SPECULAR, - U_NORMAL, - U_TRANSPARENCY, - U_TRANSLUCENCY, - U_ANISO, - U_SELF_SHADOW, - U_FOG, - U_SHADOW, - U_NPR, - U_CHARA_COLOR, - U_TONE_CURVE, - U_ALPHA_TEST, // 14th added +static const std::pair HAIR_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_SPECULAR_IBL , false }, + { U_SPECULAR , false }, + { U_NORMAL , false }, + { U_TRANSPARENCY , false }, + { U_TRANSLUCENCY , false }, + { U_ANISO , false }, + { U_SELF_SHADOW , false }, + { U_FOG , false }, + { U_SHADOW , false }, + { U_NPR , false }, + { U_CHARA_COLOR , false }, + { U_TONE_CURVE , false }, + { U_ALPHA_TEST , true }, // 14th added }; -static const uniform_name CLOTH_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_SPECULAR_IBL, - U_SPECULAR, - U_NORMAL, - U_TRANSPARENCY, - U_ENV_MAP, - U_SELF_SHADOW, - U_FOG, - U_ALPHA_TEST, - U_ANISO, - U_SHADOW, - U_NPR, - U_CHARA_COLOR, - U_TONE_CURVE, +static const std::pair CLOTH_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_SPECULAR_IBL , false }, + { U_SPECULAR , false }, + { U_NORMAL , false }, + { U_TRANSPARENCY , false }, + { U_ENV_MAP , false }, + { U_SELF_SHADOW , false }, + { U_FOG , false }, + { U_ALPHA_TEST , true }, + { U_ANISO , false }, + { U_SHADOW , false }, + { U_NPR , false }, + { U_CHARA_COLOR , false }, + { U_TONE_CURVE , false }, }; -static const uniform_name TIGHTS_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_SPECULAR, - U_ENV_MAP, - U_SELF_SHADOW, - U_FOG, - U_ALPHA_TEST, - U_SHADOW, - U_NPR, - U_CHARA_COLOR, - U_TONE_CURVE, +static const std::pair TIGHTS_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_SPECULAR , false }, + { U_ENV_MAP , false }, + { U_SELF_SHADOW , false }, + { U_FOG , false }, + { U_ALPHA_TEST , true }, + { U_SHADOW , false }, + { U_NPR , false }, + { U_CHARA_COLOR , false }, + { U_TONE_CURVE , false }, }; -static const uniform_name SKY_uniform[] = { - U_TEX_0_TYPE, - U_TEX_1_TYPE, - U_TEXTURE_COUNT, - U_MORPH, - U_MORPH_COLOR, - U_FOG_HEIGHT, - U_ALPHA_TEST, // 6th added +static const std::pair SKY_uniform[] = { + { U_TEX_0_TYPE , false }, + { U_TEX_1_TYPE , false }, + { U_TEXTURE_COUNT, false }, + { U_MORPH , true }, + { U_MORPH_COLOR , true }, + { U_FOG_HEIGHT , false }, + { U_ALPHA_TEST , true }, // 6th added }; -/*static const uniform_name EYEBALL_uniform[] = { - U_BONE_MAT, - U_ENV_MAP, +/*static const std::pair EYEBALL_uniform[] = { + { U_BONE_MAT , true }, + { U_ENV_MAP , false }, };*/ -/*static const uniform_name EYELENS_uniform[] = { - U_BONE_MAT, - U_SPECULAR, - U_ENV_MAP, +/*static const std::pair EYELENS_uniform[] = { + { U_BONE_MAT , true }, + { U_SPECULAR , false }, + { U_ENV_MAP , false }, };*/ -static const uniform_name GLASEYE_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_SELF_SHADOW, - U_FOG, - U18, - U_SHADOW, - U_CHARA_COLOR, - U_TONE_CURVE, +static const std::pair GLASEYE_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_SELF_SHADOW , false }, + { U_FOG , false }, + { U18 , false }, + { U_SHADOW , false }, + { U_CHARA_COLOR , false }, + { U_TONE_CURVE , false }, }; -/*static const uniform_name MEMBRAN_uniform[] = { - U_BONE_MAT, - U_NORMAL, - U_MEMBRANE, +/*static const std::pair MEMBRAN_uniform[] = { + { U_BONE_MAT , true }, + { U_NORMAL , false }, + { U_MEMBRANE , false }, };*/ -/*static const uniform_name SHDMAP_uniform[] = { - U_BONE_MAT, - U_TEXTURE_COUNT, - U_TRANSPARENCY, - U_LIGHT_1, - U2D, +/*static const std::pair SHDMAP_uniform[] = { + { U_BONE_MAT , true }, + { U_TEXTURE_COUNT, false }, + { U_TRANSPARENCY , false }, + { U_LIGHT_1 , false }, + { U2D , true }, };*/ -/*static const uniform_name ESM_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_TEXTURE_COUNT, - U_TRANSPARENCY, +/*static const std::pair ESM_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_TEXTURE_COUNT, false }, + { U_TRANSPARENCY , false }, };*/ -static const uniform_name ESMGAUSS_uniform[] = { - U_LIGHT_PROJ, +static const std::pair ESMGAUSS_uniform[] = { + { U_LIGHT_PROJ , true }, }; -static const uniform_name ESMFILT_uniform[] = { - U_ESM_FILTER, +static const std::pair ESMFILT_uniform[] = { + { U_ESM_FILTER , true }, }; -static const uniform_name LITPROJ_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_SPECULAR, - U_NORMAL, - U_TEXTURE_COUNT, - U_TRANSPARENCY, +static const std::pair LITPROJ_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_SPECULAR , false }, + { U_NORMAL , false }, + { U_TEXTURE_COUNT, false }, + { U_TRANSPARENCY , false }, }; -static const uniform_name SIMPLE_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_TEXTURE_COUNT, - //U_NORMAL, // 3rd removed - //U_INSTANCE, // 4th removed - //U2E, // 5th removed +static const std::pair SIMPLE_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_TEXTURE_COUNT, false }, + //{ U_NORMAL , false }, // 3rd removed + //{ U_INSTANCE , false }, // 4th removed + //{ U2E , false }, // 5th removed }; -static const uniform_name SIL_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_TRANSPARENCY, - U_TEXTURE_COUNT, - U_MORPH, - U_MORPH_COLOR, - U0A, - U_ALPHA_TEST, // 7th added +static const std::pair SIL_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_TRANSPARENCY , false }, + { U_TEXTURE_COUNT, false }, + { U_MORPH , true }, + { U_MORPH_COLOR , true }, + { U0A , false }, + { U_ALPHA_TEST , true }, // 7th added }; -static const uniform_name LAMBERT_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_TEXTURE_COUNT, - U_LIGHT_0, - U_FOG_HEIGHT, - U_MORPH, - U_MORPH_COLOR, - U_LIGHT_1, - U_ALPHA_TEST, // 8th added +static const std::pair LAMBERT_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_TEXTURE_COUNT, false }, + { U_LIGHT_1 , false }, + { U_FOG_HEIGHT , false }, + { U_MORPH , true }, + { U_MORPH_COLOR , true }, + { U_LIGHT_1 , false }, + { U_ALPHA_TEST , true }, // 8th added }; -static const uniform_name CONSTANT_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_TEXTURE_COUNT, - U_FOG_HEIGHT, - U_MORPH, - U_MORPH_COLOR, - U_ALPHA_TEST, // 6th added +static const std::pair CONSTANT_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_TEXTURE_COUNT, false }, + { U_FOG_HEIGHT , false }, + { U_MORPH , true }, + { U_MORPH_COLOR , true }, + { U_ALPHA_TEST , true }, // 6th added }; -/*static const uniform_name PEEL_uniform[] = { - U_DEPTH_PEEL, - U_BONE_MAT, +/*static const std::pair PEEL_uniform[] = { + { U_DEPTH_PEEL , false }, + { U_BONE_MAT , true }, };*/ -static const uniform_name TONEMAP_uniform[] = { - //U16, // 0th removed - U_TONE_MAP, - U_FLARE, - U_SCENE_FADE, - U_AET_BACK, - U_LIGHT_PROJ, - U_NPR, - //U25, 7th removed +static const std::pair TONEMAP_uniform[] = { + //{ U16 , true }, // 0th removed + { U_TONE_MAP , false }, + { U_FLARE , false }, + { U_SCENE_FADE , false }, + { U_AET_BACK , false }, + { U_LIGHT_PROJ , false }, + { U_NPR , false }, + //{ U25 , false }, 7th removed }; -static const uniform_name REDUCE_uniform[] = { - U_REDUCE, - U_ALPHA_MASK, +static const std::pair REDUCE_uniform[] = { + { U_REDUCE , true }, + { U_ALPHA_MASK , true }, }; -static const uniform_name MAGNIFY_uniform[] = { - U_MAGNIFY, +static const std::pair MAGNIFY_uniform[] = { + { U_MAGNIFY , true }, }; -static const uniform_name MLAA_uniform[] = { - //U16, // 0th removed - U_ALPHA_MASK, - U_MLAA, - U_MLAA_SEARCH, +static const std::pair MLAA_uniform[] = { + //{ U16 , true }, // 0th removed + { U_ALPHA_MASK , true }, + { U_MLAA , true }, + { U_MLAA_SEARCH , true }, }; -static const uniform_name CONTOUR_uniform[] = { - //U16, // 0th removed - U24, +static const std::pair CONTOUR_uniform[] = { + //{ U16 , true }, // 0th removed + { U24 , false }, }; -static const uniform_name CONTOUR_NPR_uniform[] = { - U_INVALID, +static const std::pair CONTOUR_NPR_uniform[] = { + { U_INVALID , false }, }; -static const uniform_name EXPOSURE_uniform[] = { - U_EXPOSURE, +static const std::pair EXPOSURE_uniform[] = { + { U_EXPOSURE , true }, }; -static const uniform_name GAUSS_uniform[] = { - U_GAUSS, +static const std::pair GAUSS_uniform[] = { + { U_GAUSS , true }, }; -static const uniform_name SUN_uniform[] = { - U_INVALID, +static const std::pair SUN_uniform[] = { + { U_INVALID , false }, }; -static const uniform_name SUN_NO_TEXTURED_uniform[] = { - U_INVALID, +static const std::pair SUN_NO_TEXTURED_uniform[] = { + { U_INVALID , false }, }; -/*static const uniform_name FADE_uniform[] = { - U_FADE, +/*static const std::pair FADE_uniform[] = { + { U_FADE , false }, };*/ -static const uniform_name WATER01_uniform[] = { - U_MORPH, - U_MORPH_COLOR, - U_TEXTURE_COUNT, - U_NORMAL, - U_WATER_REFLECT, - U_ENV_MAP, - U_SPECULAR, - U_FOG_HEIGHT, +static const std::pair WATER01_uniform[] = { + { U_MORPH , true }, + { U_MORPH_COLOR , true }, + { U_TEXTURE_COUNT, false }, + { U_NORMAL , false }, + { U_WATER_REFLECT, false }, + { U_ENV_MAP , false }, + { U_SPECULAR , false }, + { U_FOG_HEIGHT , false }, }; -/*static const uniform_name WATER02_uniform[] = { - U_INVALID, +/*static const std::pair WATER02_uniform[] = { + { U_INVALID , false }, };*/ -/*static const uniform_name WATRING_uniform[] = { - U_LIGHT_0, - U_LIGHT_1, +/*static const std::pair WATRING_uniform[] = { + { U_LIGHT_1 , false }, + { U_LIGHT_1 , false }, };*/ -static const uniform_name W_PTCL_uniform[] = { - U_INVALID, +static const std::pair W_PTCL_uniform[] = { + { U_INVALID , false }, }; -static const uniform_name SNOW_PT_uniform[] = { - U_SNOW_PARTICLE, +static const std::pair SNOW_PT_uniform[] = { + { U_SNOW_PARTICLE, false }, }; -static const uniform_name LEAF_PT_uniform[] = { - U_INVALID, +static const std::pair LEAF_PT_uniform[] = { + { U_INVALID , false }, }; -static const uniform_name STAR_uniform[] = { - U_STAR, +static const std::pair STAR_uniform[] = { + { U_STAR , false }, }; -/*static const uniform_name SNORING_uniform[] = { - U_TEXTURE_COUNT, - U_NORMAL, - U_SPECULAR, - U_LIGHT_0, - U_LIGHT_1, +/*static const std::pair SNORING_uniform[] = { + { U_TEXTURE_COUNT, false }, + { U_NORMAL , false }, + { U_SPECULAR , false }, + { U_LIGHT_1 , false }, + { U_LIGHT_1 , false }, }; -static const uniform_name SN_FOOT_uniform[] = { - U_INVALID, +static const std::pair SN_FOOT_uniform[] = { + { U_INVALID , false }, }; -static const uniform_name SN_TSL_uniform[] = { - U_INVALID, +static const std::pair SN_TSL_uniform[] = { + { U_INVALID , false }, }; -static const uniform_name SN_NRM_uniform[] = { - U_INVALID, +static const std::pair SN_NRM_uniform[] = { + { U_INVALID , false }, };*/ -static const uniform_name FLOOR_uniform[] = { - U_TEXTURE_COUNT, - U_NORMAL, - U_LIGHT_0, - U_LIGHT_1, - U_FOG_HEIGHT, - U_MORPH, - U_MORPH_COLOR, - U_ALPHA_TEST, // 7th added +static const std::pair FLOOR_uniform[] = { + { U_TEXTURE_COUNT, false }, + { U_NORMAL , false }, + { U_LIGHT_1 , false }, + { U_LIGHT_1 , false }, + { U_FOG_HEIGHT , false }, + { U_MORPH , true }, + { U_MORPH_COLOR , true }, + { U_ALPHA_TEST , true }, // 7th added }; -static const uniform_name PUDDLE_uniform[] = { - U_NORMAL, - U_LIGHT_0, - U_LIGHT_1, - U_FOG_HEIGHT, +static const std::pair PUDDLE_uniform[] = { + { U_NORMAL , false }, + { U_LIGHT_1 , false }, + { U_LIGHT_1 , false }, + { U_FOG_HEIGHT , false }, }; -static const uniform_name S_REFL_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_REFLECT, - U_MORPH, - U_MORPH_COLOR, - U_ALPHA_TEST, - U_CLIP_PLANE, - U_TEXTURE_COUNT, - U_TONE_CURVE, - U_CHARA_COLOR, +static const std::pair S_REFL_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_REFLECT , true }, + { U_MORPH , true }, + { U_MORPH_COLOR , true }, + { U_ALPHA_TEST , true }, + { U_CLIP_PLANE , false }, + { U_TEXTURE_COUNT, false }, + { U_TONE_CURVE , false }, + { U_CHARA_COLOR , false }, }; -static const uniform_name S_REFR_uniform[] = { - U_BONE_MAT, - U_TRANSPARENCY, +static const std::pair S_REFR_uniform[] = { + { U_BONE_MAT , true }, + { U_TRANSPARENCY , false }, }; -static const uniform_name RIPEMIT_uniform[] = { - U_RIPPLE, - U_RIPPLE_EMIT, +static const std::pair RIPEMIT_uniform[] = { + { U_RIPPLE , true }, + { U_RIPPLE_EMIT , true }, }; -static const uniform_name RAIN_uniform[] = { - U_INVALID, +static const std::pair RAIN_uniform[] = { + { U_INVALID , false }, }; -/*static const uniform_name VOLLIT_uniform[] = { - U_INVALID, +/*static const std::pair VOLLIT_uniform[] = { + { U_INVALID , false }, };*/ -/*static const uniform_name FENCE_uniform[] = { - U_INSTANCE, - U_FOG_HEIGHT, +/*static const std::pair FENCE_uniform[] = { + { U_INSTANCE , false }, + { U_FOG_HEIGHT , false }, };*/ -static const uniform_name RIPPLE_uniform[] = { - U_RIPPLE, +static const std::pair RIPPLE_uniform[] = { + { U_RIPPLE , true }, }; -static const uniform_name FOGPTCL_uniform[] = { - U_INVALID, +static const std::pair FOGPTCL_uniform[] = { + { U_INVALID , false }, }; -static const uniform_name PARTICL_uniform[] = { - U_INVALID, +static const std::pair PARTICL_uniform[] = { + { U_INVALID , false }, }; -static const uniform_name GLITTER_PT_uniform[] = { - U_TEXTURE_COUNT, - U_TEXTURE_BLEND, - U_FOG_HEIGHT, - U_ALPHA_BLEND, +static const std::pair GLITTER_PT_uniform[] = { + { U_TEXTURE_COUNT, false }, + { U_TEXTURE_BLEND, false }, + { U_FOG_HEIGHT , false }, + { U_ALPHA_BLEND , false }, }; -/*static const uniform_name SHOW_VEC_uniform[] = { - //U16, // 0th removed - U_BONE_MAT, - U_SHOW_VECTOR, +/*static const std::pair SHOW_VEC_uniform[] = { + //{ U16 , true }, // 0th removed + { U_BONE_MAT , true }, + { U_SHOW_VECTOR , false }, };*/ -static const uniform_name FONT_uniform[] = { - //U16, // 0th removed - U_INVALID, // 0th removed, 1st added +static const std::pair FONT_uniform[] = { + //{ U16 , true }, // 0th removed + { U_INVALID , false }, // 1st added }; -static const uniform_name MOVIE_uniform[] = { - U_MOVIE, +static const std::pair MOVIE_uniform[] = { + { U_MOVIE , true }, }; -static const uniform_name IMGFILT_uniform[] = { - U_IMAGE_FILTER, +static const std::pair IMGFILT_uniform[] = { + { U_IMAGE_FILTER , false }, }; -static const uniform_name SPRITE_uniform[] = { - U_TEX_0_TYPE, - U_TEX_1_TYPE, - U_COMBINER, -}; - -static const bool BLINN_permut[] = { - // true, // 0th removed - true, - false, - false, - false, - false, - false, - false, - true, - true, - false, - true, // 11th added -}; - -static const bool ITEM_permut[] = { - //true, // 0th removed - true, - true, - false, - false, - false, - false, - false, - false, - false, - true, - false, - false, - false, -}; - -static const bool STAGE_permut[] = { - //true, // 0th removed - true, - true, - true, - false, - false, - false, - false, - false, - false, - false, - true, // 11th added -}; - -static const bool SKIN_permut[] = { - //true, // 0th removed - true, - false, - false, - false, - true, - false, - false, - false, - false, -}; - -static const bool SSS_SKIN_permut[] = { - //true, // 0th removed - true, - false, - true, - false, - false, - false, - false, -}; - -static const bool SSS_FILT_permut[] = { - //true, // 0th removed - true, - true, -}; - -static const bool HAIR_permut[] = { - //true, // 0th removed - true, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - false, - true, // 14th added -}; - -static const bool CLOTH_permut[] = { - //true, // 0th removed - true, - false, - false, - false, - false, - false, - false, - false, - true, - false, - false, - false, - false, - false, -}; - -static const bool TIGHTS_permut[] = { - //true, // 0th removed - true, - false, - false, - false, - false, - true, - false, - false, - false, - false, -}; - -static const bool SKY_permut[] = { - false, - false, - false, - true, - true, - false, - true, // 6th added -}; - -/*static const bool EYEBALL_permut[] = { - true, - false, -};*/ - -/*static const bool EYELENS_permut[] = { - true, - false, - false, -};*/ - -static const bool GLASEYE_permut[] = { - //true, // 0th removed - true, - false, - false, - false, - false, - false, - false, -}; - -/*static const bool MEMBRAN_permut[] = { - true, - false, - false, -};*/ - -/*static const bool SHDMAP_permut[] = { - true, - false, - false, - false, - true, -};*/ - -/*static const bool ESM_permut[] = { - //true, // 0th removed - true, - false, - false, -};*/ - -static const bool ESMGAUSS_permut[] = { - true, -}; - -static const bool ESMFILT_permut[] = { - true, -}; - -static const bool LITPROJ_permut[] = { - //true, // 0th removed - true, - false, - false, - false, - false, -}; - -static const bool SIMPLE_permut[] = { - //true, // 0th removed - true, - false, - //false, // 3rd removed - //false, // 4th removed - //false, // 5th removed -}; - -static const bool SIL_permut[] = { - //true, // 0th removed - true, - false, - false, - true, - false, - false, - true, // 7th added -}; - -static const bool LAMBERT_permut[] = { - //true, // 0th removed - true, - false, - false, - false, - true, - true, - false, - true, // 8th added -}; - -static const bool CONSTANT_permut[] = { - //true, // 0th removed - true, - false, - false, - true, - true, - true, // 6th added -}; - -/*static const bool PEEL_permut[] = { - false, - true, -};*/ - -static const bool TONEMAP_permut[] = { - //true, // 0th removed - false, - false, - false, - false, - false, - false, - false, -}; - -static const bool REDUCE_permut[] = { - true, - true, -}; - -static const bool MAGNIFY_permut[] = { - true, -}; - -static const bool MLAA_permut[] = { - //true, // 0th removed - true, - true, - true, -}; - -static const bool CONTOUR_permut[] = { - //true, // 0th removed - false, -}; - -static const bool CONTOUR_NPR_permut[] = { - false, -}; - -static const bool EXPOSURE_permut[] = { - true, -}; - -static const bool GAUSS_permut[] = { - true, -}; - -static const bool SUN_permut[] = { - false, -}; - -static const bool SUN_NO_TEXTURED_permut[] = { - false, -}; - -/*static const bool FADE_permut[] = { - false, -};*/ - -static const bool WATER01_permut[] = { - true, - true, - false, - false, - false, - false, - false, - false, -}; - -static const bool WATER02_permut[] = { - false, -}; - -/*static const bool WATRING_permut[] = { - false, - false, -};*/ - -static const bool W_PTCL_permut[] = { - false, -}; - -static const bool SNOW_PT_permut[] = { - false, -}; - -static const bool LEAF_PT_permut[] = { - false, -}; - -static const bool STAR_permut[] = { - false, -}; - -/*static const bool SNORING_permut[] = { - false, - false, - false, - false, - false, -}; - -static const bool SN_FOOT_permut[] = { - false, -}; - -static const bool SN_TSL_permut[] = { - false, -}; - -static const bool SN_NRM_permut[] = { - false, -};*/ - -static const bool FLOOR_permut[] = { - false, - false, - false, - false, - false, - true, - true, - true, // 7th added -}; - -static const bool PUDDLE_permut[] = { - false, - false, - false, - false, -}; - -static const bool S_REFL_permut[] = { - //true, // 0th removed - true, - true, - true, - true, - true, - false, - false, - false, - false, -}; - -static const bool S_REFR_permut[] = { - true, - false, -}; - -static const bool RIPEMIT_permut[] = { - true, - true, -}; - -static const bool RAIN_permut[] = { - false, -}; - -/*static const bool VOLLIT_permut[] = { - false, -};*/ - -/*static const bool FENCE_permut[] = { - false, - false, -};*/ - -static const bool RIPPLE_permut[] = { - true, -}; - -static const bool FOGPTCL_permut[] = { - false, -}; - -static const bool PARTICL_permut[] = { - false, -}; - -static const bool GLITTER_PT_permut[] = { - false, - false, - false, - false, -}; - -/*static const bool SHOW_VEC_permut[] = { - //true, // 0th removed - false, - false, -};*/ - -static const bool FONT_permut[] = { - //true, // 0th removed - false, // 0th removed, 1st added -}; - -static const bool MOVIE_permut[] = { - true, -}; - -static const bool IMGFILT_permut[] = { - false, -}; - -static const bool SPRITE_permut[] = { - false, - false, - false, +static const std::pair SPRITE_uniform[] = { + { U_TEX_0_TYPE , false }, + { U_TEX_1_TYPE , false }, + { U_COMBINER , false }, }; struct glass_eye_struct { @@ -2885,9 +2431,8 @@ struct glass_eye_struct { SHADER_FT_##n, \ sizeof(n##_table) / sizeof(shader_sub_table), \ n##_table, \ - sizeof(n##_uniform) / sizeof(uniform_name), \ + sizeof(n##_uniform) / sizeof(std::pair), \ n##_uniform, \ - n##_permut, \ } const shader_table shader_ft_table[] = { @@ -2898,7 +2443,6 @@ const shader_table shader_ft_table[] = { 0, 0, 0, - 0, }, shader_table_struct(BLINN), shader_table_struct(ITEM),